Stock Price Alerts

#Stock price alerts

Get stock price quote every 10 mins and sends alert to desktop. First output is a full json object, second is simple text sentance.

How-to

  • On Linux - sudo apt-get install libnotify-bin
  • On Windows - download and install Growl for Windows
  • then download growlnotify - IMPORTANT : Unpack growlnotify to a folder that is present in your path!
  • Also requires growl package
     npm install growl
    
  • This requires the notify node which is available in the node-red-nodes project https://github.com/node-red/node-red-nodes/archive/master.zip
  • Import the flow.json to Node-RED, Deploy.
[{"id":"9237c789.3558f8","type":"notify","title":"","name":"","x":908.4394721984863,"y":236.6212673187256,"wires":[]},{"id":"8b351a1e.4bf998","type":"function","name":"Make price object","func":"\nif ( ~msg.payload.indexOf('quote') ) { \n  var quote = JSON.parse(msg.payload.slice(6,-2)).query.results.row;\n  if (typeof quote.length == \"undefined\") { quote = [ quote ]; }\n  for (var i=0; i < quote.length; i++) {\n    var da = quote[i].date.split('/');\n    quote[i].date = da[1]+'/'+da[0]+'/'+da[2];\n    var ti = quote[i].time.split(':');\n    var hr = parseInt(ti[0]);\n    var mn = ti[1].slice(0,-2);\n    var pm = ti[1].slice(-2);\n    if (pm == \"pm\") { hr += 12; }\n    quote[i].time = hr+\":\"+mn;\n    quote[i].price = quote[i].price * 1;\n    quote[i].change = quote[i].change * 1;\n    quote[i].high = quote[i].high * 1 || \"N/A\";\n    quote[i].low = quote[i].low * 1 || \"N/A\";\n    quote[i].open = quote[i].col1 * 1 || \"N/A\";\n    delete(quote[i].col1);\n    quote[i].vol = quote[i].col2 * 1;\n    delete(quote[i].col2);\n  }\n  if (quote.length == 1) { quote = quote[0]; }\n  msg.payload = quote;\n  msg2 = {topic:\"Stock Price\", payload:quote.symbol +\" is \"+quote.price};\n  return [msg,msg2];\n}\nreturn null;","outputs":"2","x":714.5302963256836,"y":215.1666774749756,"wires":[["5791bbc4.9ab40c"],["9237c789.3558f8"]]},{"id":"a9d8f720.136c3","type":"httpget","name":"Get Quote","baseurl":"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3D","append":"%26f%3Dsl1d1t1c1ohgv%26e%3D.json'%20and%20columns%3D'symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Ccol2'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=quote","x":538.439380645752,"y":215.62126636505127,"wires":[["8b351a1e.4bf998"]]},{"id":"5791bbc4.9ab40c","type":"debug","name":"","complete":true,"x":907.4394721984863,"y":193.62126636505127,"wires":[]},{"id":"8f99a64e.7bd208","type":"inject","name":"","topic":"","payload":"IBM","repeat":"600","once":true,"x":401.1666793823242,"y":215.1666774749756,"wires":[["a9d8f720.136c3"]]}]
dceejay

Flow Info

created 4 years, 3 months ago
updated 3 years, 10 months ago

Node Types

Core
  • debug (x1)
  • function (x1)
  • inject (x1)
Other

Tags

  • alert
  • stock
  • desktop
  • visual
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option