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...