cpchain
cpchain
import time
import datetime
from datetime import datetime,timedelta
feed_opened = False
socket_opened = False
feedJson={}
def event_handler_feed_update(tick_data):
UPDATE = False
if 'tk' in tick_data:
token = tick_data['tk']
timest = datetime.fromtimestamp(int(tick_data['ft'])).isoformat()
feed_data = {'tt': timest}
if 'lp' in tick_data:
feed_data['ltp'] = float(tick_data['lp'])
if 'ts' in tick_data:
feed_data['Tsym'] = str(tick_data['ts'])
if 'oi' in tick_data:
feed_data['openi'] = float(tick_data['oi'])
if 'poi' in tick_data:
feed_data['pdopeni'] = str(tick_data['poi'])
if 'v' in tick_data:
feed_data['Volume'] = str(tick_data['v'])
if feed_data:
UPDATE = True
if token not in feedJson:
feedJson[token] = {}
feedJson[token].update(feed_data)
if UPDATE:
pass#print(f'Token:{token} Feed:{feedJson[token]}')
def event_handler_order_update(order_update):
pass#print(f"order feed {order_update}")
def open_callback():
global feed_opened
feed_opened = True
print("Websocket opened")
def setupWebSocket():
global feed_opened
print("waiting for socket opening")
api.start_websocket(order_update_callback=event_handler_order_update,
subscribe_callback=event_handler_feed_update,
socket_open_callback=open_callback)
while(feed_opened==False):
pass
setupWebSocket()
print(modified_tokens)
def get_closest_ltp_symbols(ltp_value):
df = api.subscribe(modified_tokens)
df = pd.DataFrame.from_dict(feedJson,orient='index', columns=['ltp',
'Tsym','openi','pdopeni'])
df['diff'] = abs(df['ltp'] - ltp_value)
df_c = df[df['Tsym'].str.contains('C')]
df_p = df[df['Tsym'].str.contains('P')]
min_diff_c = df_c['diff'].min()
min_diff_p = df_p['diff'].min()
closest_symbols_c = df_c[df_c['diff'] == min_diff_c]['Tsym'].values[0]
closest_symbols_p = df_p[df_p['diff'] == min_diff_p]['Tsym'].values[0]
api.unsubscribe(modified_tokens)
return closest_symbols_c, closest_symbols_p
df = api.subscribe(modified_tokens)
df = pd.DataFrame.from_dict(feedJson,orient='index', columns=['ltp',
'Tsym','openi','pdopeni'])
df
feedJson