Understanding WebSocket tick data
-
Hi @krishna , we are reviewing the response structure.
-
-
Hi @krishna , it's still under review. We will update you once we start the development activity on this.
-
Any updates on this? I am also having same confusion.
-
One need to search the keys of the dictionary. there is a sample code for old SDK here. modify it for new SDK.
HTH
-
@rajanprabu Thanks I didn't find what I was looking for. But then I realized that I never asked for it explicitly. So here it is.
I am just looking for OHLC + Volume data. The following section of response seems to have a few of this:
{"tbq":"67425","lo":"442.00","c":"484.50","e":"nse_fo","ltq":"25","ltp":"622.75","ltt":"30/03/2021 15:04:04","bp":"621.80","bq":"25","ap":"606.55","bs":"50","tsq":"54600","nc":"28.53","v":"5737850","tk":"58737","name":"sf","to":"3480292917.50","sp":"624.80","cng":"138.25"}
but the high and open price seems to be missing here.
So suppose if I want to build OHLC + Volume data from a tick,
Open - missing
High - missing
Low - "lo":"<number of double type from this tick data>"
Close - "c":"<number of double type from PREVIOUS tick data>"
Volume - "v":"<long number from this tick data>"How do I get Open and High?
The API documentation shows "h" and "op" for High and Open Price respectively but I am not seeing both these in the response.
-
you get
LTP
from the websokcets. one need to aggregate it for the time desired to get high and low. first entry in that time period is open and last entry is close.for example :
time ltp 10:01:01 100 10.01:02 110 . . . 10:01:30 120 10:01:31 90 . . . 10:01:59 101
open 100
high 120
low. 90
close 101I hope its clear now.. this is how candles are made..
https://smartapi.angelbroking.com/docs/WebSocket -
@rajanprabu Thanks a ton man. You made my day. This turned out to be very simple than all the hacks I was trying.
Thanks once again.
-
@rajanprabu one more question. How to build the volume for a 1 min candle from this tick data?
-
pandas has resample function which can do this automatically for you.. I wrote it just for theoretical explanation.
for volume you can use delta volumes ( tick V now - tick V previous )
-
@rajanprabu thanks for the reply on volume. Regarding using Pandas, well call me old school but I am on Java.
-
@rajanprabu I am back with my query. My WebSocket API call stopped working today while it was working earlier.
Today whole day, I just got below messages:
[{"msg":"connected","task":"cn","ak":"ok"}]
[{"msg":"mw","task":"mw","ak":"ok"}]
[{"msg":"mw","task":"mw","ak":"ok"}]
[]
[{"msg":"heartbeat","task":"hb","ak":"ok"}]Even though I got ack for task "mw", didn't get any data at all. Any pointers would be helpful.
Thanks in advance.
-
@softice You are using Java which I have no idea.. maybe a fellow Java trader can help.
-
@rajanprabu Thanks. I figured out the problem. It was an error that I introduced while refactoring the code. After fixing it, its working fine now.
-
@krishna
you have to check the length of every tick, iterate through each part of tick,then use try/except to extract ltp if any portion of tick is having that -
ltp in websocket stream is last traded price..
-
@Ankita could you please provide a sample script to get tick by tick data , I tried every method but unable to get the tick data ?