5 ms·
Quote Stream - Push real-time stock quotes in JSON over web-sockets with node.js
- manuscreationis 15y agoWeeeeeeeell damn... I had exactly this idea a few weeks ago, and never put any time into it. Just goes to show you... This is pretty cool, good work
- nodesocket 15y agoYeah it's was a fun little project, hopefully useful for somebody. ;)
- neiled 15y agoBut, and correct me if I'm wrong obviously, this isn't sending quotes to the client real time, it's just sending them in 5 second batches? I guess I'm struggling to see how: "Stock quotes are pulled from Google Finance and are real-time." and "By default stock quotes are fetched every 5 seconds, and pushed to the client." Work together... Great work on sharing the code though, thanks.
- nodesocket 15y agoIn finance, real-time quotes means not delayed by 20 minutes. The price returned should be real-time in those terms.
- jrockway 15y agoIn finance, real-time means receiving each tick or trade record. Aggregating prices over 5 seconds and sending that data every 5 seconds is "aggregated data over 5 seconds".
- nlz1 15y agoUpvoted. "Real time. You keep using that phrase. I do not think it means what you think it means."
- anonhacker 15y agoThis would be neat if it was secure, unfortunately anyone can look up your server from source and message it anything they please.
- corry 15y agoA quick note for anyone thinking that this could help you build that finance app you've been putting off - getting actual real-time stock quotes legitimately is actually fairly expensive/involved. Screen scraping Google / Yahoo finance and using that data in an app is (I believe) explicitly against their TOS. Whether or not they ever enforce that is another story... The actual real-time data streams are highly controlled and regulated by a few big players. (Just my $0.02 after having looked into it about a year ago for a social investing app I was building)
- getsat 15y agoThat data is also 15 minutes old (or older!) from what I recall. Probably not your best choice for anything remotely "realtime". As parent said, you're better off getting a real market stream which will probably use FIX: http://en.wikipedia.org/wiki/Financial_Information_eXchange http://en.wikipedia.org/wiki/Financial_Information_eXchange
- nodesocket 15y agoIt should be realtime (not delayed 20 minutes), we will find out in 8 minutes if this is true. :)
- nodesocket 15y agoConfirmed real-time, just streamed in: { "ticker": "AAPL", "exchange": "NASDAQ", "price": "598.86", "change": "-9.48", "change_percent": "-1.56", "last_trade_time": "Apr 19, 9:30AM EDT" }
- getsat 15y agoI was referring to scraping Google/Yahoo. They have disclaimers on their sites that the information is N minutes old at best. EDIT: I guess a few of them are actually realtime now. Here's the list: http://www.google.com/intl/en/googlefinance/disclaimer/ http://www.google.com/intl/en/googlefinance/disclaimer/
- rpledge 15y ago
- deleted 15y ago[deleted]
- dodoflying 15y agoI guess this data can only for personal use but not public. Am I right?
- julien_p 15y agoIt's taking the data from google.com, for example http://www.google.com/finance/info?client=ig&q=AAPL http://www.google.com/finance/info?client=ig&q=AAPL which AFAIK isn't a public Google API. As noted in other comments, real time quote APIs tend to be subscription services that are somewhat expensive ...
- jsavimbi 15y agoCool demo, but a real-time quote is measured in the ~20msec range. A real-time trade would be <50msec round trip. A real-time quote provider is someone who's server is physically connected to a direct exchange feed, as in you have a 5' wire running from your box to one of the CME's servers, not someone who's obtaining web-based delayed quotes.
- nodesocket 15y agoEverybody seems to be confusing the definition of real-time quotes in the context of consumer trading. When eTrade or Scottrade says they have real-time quotes, its the same as Google Finance (which this is pulling) in that, its not delayed 20 minutes. Beyond that, expecting a 5' or less connection to an exchange feed is just absurd.
- rpledge 15y agoYou can get those feeds, but they're very expensive. High frequency trading is done using actual real time data at millisecond resolution. The barrier to entry is very high, which is why I think flash trading gives an unfair advantage to the wealthy. Of course, thats really the story of modern economics.....
- anonDataUser 15y agoTo expand on this a bit: Within the US there are a number of ECNs/exchanges. Each one publishes there own order book including prices and sizes on each side of the book. To get the most accurate information possible on market prices, you need to have a direct connection to each exchange and usually, you want to be co-located within the same data center as them. Unless you're a market maker, high-frequency trader, or run an institutional electronic trading platform, this level of data is not necessary. For most human traders, a consolidated feed is sufficient; that data comes from an authority called the CTA. From wikipedia: "Since the late 1970s, all SEC-registered exchanges and market centers that trade NYSE or AMEX-listed securities send their trades and quotes to a central consolidator where the Consolidated Tape System (CTS) and Consolidated Quotation System (CQS) data streams are produced and distributed worldwide." The consolidation process delays the data by ~100 ms. This is still considered real-time by many people including professional traders. Most HN readers are getting a conflated version of the consolidated feed. Google's "real-time" feed falls into this category and adding 5 seconds doesn't really matter at this point.
- ruffyen 15y agoI caught the stream changing things up right in the middle? What is the deal with this? -- ie this was on the main page where it is looking for AAPL and not MSFT { "ticker": "MSFT", "exchange": "NASDAQ", "price": "31.26", "change": "+0.12", "change_percent": "0.38", "last_trade_time": "Apr 19, 10:17AM EDT" } { "ticker": "AAPL", "exchange": "NASDAQ", "price": "598.27", "change": "-10.07", "change_percent": "-1.66", "last_trade_time": "Apr 19, 10:17AM EDT" }
- nodesocket 15y agoYeah, too tired to figure it out now, its a bug. Basically, clients are listening for a WebSocket event, and the server is broadcasting everything. If you can fix it up, would be amazing.
- ananthrk 15y agoCame here to say the same thing (including trying MSFT) :) Also, the URL "http://xhv51cz0.nodesocket.com/quote-stream/MSFT/ http://xhv51cz0.nodesocket.com/quote-stream/MSFT/ works but "http://xhv51cz0.nodesocket.com/quote-stream/MSFT http://xhv51cz0.nodesocket.com/quote-stream/MSFT does not (without "/" in the end)
- wowfat 15y agoOn a related note we put out a tech demo showing nodejs and socketio recently. http://www.webdigi.co.uk/fun/space/ http://www.webdigi.co.uk/fun/space/ It uses iPhone accelerometer to control the ship on your browser game!