Simply put below light weight code in your websocket on_ticks callback and it will do very light-weight in memory candle formation without blocking your primary thread. If you want to do any further processing like saving to database, indicators, signals generation, do that in a seperate thread.
for tick in ticks:
...
...
...
### Credits www.EzeeTrading.in
instrument=tick["instrument_token"]
ltt=tick["last_trade_time"]
ltt_min_1=datetime.datetime(ltt.year, ltt.month, ltt.day, ltt.hour,ltt.minute)
# For any other timeframe. Simply change ltt_min_1 variable defination.
# e.g.
# ltt_min_15=datetime.datetime(ltt.year, ltt.month, ltt.day, ltt.hour,ltt.minute//15*15)
### Forming 1 Min Candles...
try:
if ltt_min_1 in candles_1[instrument]:
candles_1[instrument][ltt_min_1]["high"]=max(candles_1[instrument][ltt_min_1]["high"],tick["last_price"]) #1
candles_1[instrument][ltt_min_1]["volume"]=max(candles_1[instrument][ltt_min_1]["volume"],tick["volume"]) #1.5 Use the max in volume instead of last.
candles_1[instrument][ltt_min_1]["low"]=min(candles_1[instrument][ltt_min_1]["low"],tick["last_price"]) #2
candles_1[instrument][ltt_min_1]["close"]=tick["last_price"] #3
#candles_1[instrument][ltt_min_1]["volume"]=tick["volume"] #3.5
else:
candles_1[instrument][ltt_min_1]={}
candles_1[instrument][ltt_min_1]["high"]=tick["last_price"] #4
candles_1[instrument][ltt_min_1]["low"]=tick["last_price"] #5
candles_1[instrument][ltt_min_1]["open"]=tick["last_price"] #6
candles_1[instrument][ltt_min_1]["close"]=tick["last_price"] #7
candles_1[instrument][ltt_min_1]["volume"]=tick["volume"] #3.5
except KeyError:
if instrument not in candles_1:
candles_1[instrument]={}
if ltt_min_1 not in candles_1[instrument]:
candles_1[instrument][ltt_min_1]={}
candles_1[instrument][ltt_min_1]["high"]=tick["last_price"] #8
candles_1[instrument][ltt_min_1]["low"]=tick["last_price"] #9
candles_1[instrument][ltt_min_1]["open"]=tick["last_price"] #10
candles_1[instrument][ltt_min_1]["close"]=tick["last_price"] #11
candles_1[instrument][ltt_min_1]["volume"]=tick["volume"] #3.5
Hope above helped you..!
You can also have a look at some ready Strategies available to subscribe below.
Or visit our home page and dive deeper into Algo-trading and make your journey quicker and smoother by learning some of the treasured knowledge from us.
A small step in right direction would keep you focused for long...