Volume calculation logic from tick data for 1 min candle? FYER V3 API
livedata = pd.DataFrame(columns=[‘datetime’, ‘symbol’, ‘ltp’, ‘vol_traded_today’])
def onmessage(message):
global livedata
if ‘symbol’ in message:
c = datetime.now()
current_time = c.strftime(‘%Y-%m-%d %H:%M:%S’)
symb = message[‘symbol’]
ltp = message[‘ltp’]
vol = message[‘vol_traded_today’]
# Convert UTC time to IST
epoch_time = message['last_traded_time']
ist_time = datetime.fromtimestamp(epoch_time, tz=timezone.utc).astimezone(pytz.timezone('Asia/Kolkata'))
ist_time_str = ist_time.strftime("%H:%M:%S")
print("Last traded time in Indian Standard Time (IST):", ist_time_str)
print(f"Success: {message}")
# Calculate volume difference from previous record
if len(livedata) > 0:
prev_vol = livedata.iloc[-1]['vol_traded_today']
vol_diff = vol - prev_vol
else:
vol_diff = vol # If it's the first record, use the current volume as difference
new_row = pd.DataFrame({'datetime': [current_time], 'symbol': [symb], 'ltp': [ltp], 'vol_traded_today': [vol_diff]})
livedata = pd.concat([livedata, new_row], ignore_index=True)
livedata['datetime'] = pd.to_datetime(livedata['datetime'])
# Resample data to one-minute intervals
#resampled_data = livedata.set_index('datetime').resample('1Min').agg({'ltp': 'ohlc', 'vol_traded_today': 'last'})
# Resample data to one-minute intervals
resampled_data = livedata.set_index('datetime').resample('1Min').agg({'ltp': 'ohlc'})
print(resampled_data)
else:
print("Error: The key 'symbol' is missing in the response.")