8.6 KiB
8.6 KiB
In [1]:
%pip install websocket-clientDefaulting to user installation because normal site-packages is not writeable Requirement already satisfied: websocket-client in /home/arham/.local/lib/python3.10/site-packages (1.5.1) Note: you may need to restart the kernel to use updated packages.
In [21]:
import json
import websocketIn [40]:
outer = lambda method,params:{
"jsonrpc": 2,
"method": method,
"params": params,
"id": 1
}
enter_order_params=lambda type,custom:{
"price":1646.8,
"quantity":1,
"order_type":type,
"side":"buy",
"account":"main",
"user":"bts",
"exchange_securty_name": "ETH-31MAR23",
"venue":"deribit",
"custom":custom
}
upd_order_params=lambda type,custom:{
"order_id":538001,
"price":1641.8,
"quantity":2,
"order_type":type,
"custom":custom
}
simple_filter={
"symbol":["ETH"],
"expiration":["2023/04/28"],
"venue":["deribit"]
}
order_customs = {
"limit":{},
"iceberg":{"showquanity":5},
"cover":{"hedge_ticks":2,"cancel_on_external_hedge_cancel":True,"cancel_hedges_on_cancel":True,"detach_hedges":False}
}
order_customs_upd = {
"limit":{},
"iceberg":{"showquanity":7},
"cover":{"hedge_ticks":6,"cancel_on_external_hedge_cancel":False,"cancel_hedges_on_cancel":True,"detach_hedges":False}}
In [41]:
REST_code=lambda payload :f'''import json
import websocket
json_payload = {json.dumps(payload,indent=4)}
json_string = json.dumps(json_payload)
ws_url = "ws://localhost:8080"
# Define a callback function to handle received messages
def on_message(ws, message):
print("Received message: ", message)
ws.close()
# Define a callback function to handle the WebSocket connection opening
def on_open(ws):
print("WebSocket connection opened")
ws.send(json_string)
# Define a callback function to handle the WebSocket connection closing
def on_close(ws):
print("WebSocket connection closed")
# Create a WebSocket connection and send the JSON payload
ws = websocket.WebSocketApp(ws_url, on_message=on_message, on_open=on_open, on_close=on_close)
# Start the WebSocket connection and listen for incoming messages
ws.run_forever()
input("press any key to continue")'''In [42]:
sub_code=lambda payload :f'''import json
import websocket
json_payload = {json.dumps(payload,indent=4)}
json_string = json.dumps(json_payload)
ws_url = "ws://localhost:8080"
message_count = [0]
# Define a callback function to handle received messages
def on_message(ws, message):
print("Received message: ", message)
if(message_count[0]>0):
ws.close()
message_count[0]+=1
# Define a callback function to handle the WebSocket connection opening
def on_open(ws):
print("WebSocket connection opened")
ws.send(json_string)
# Define a callback function to handle the WebSocket connection closing
def on_close(ws):
print("WebSocket connection closed")
# Create a WebSocket connection and send the JSON payload
ws = websocket.WebSocketApp(ws_url, on_message=on_message, on_open=on_open, on_close=on_close)
# Start the WebSocket connection and listen for incoming messages
ws.run_forever()
input("press any key to continue")
'''In [43]:
def file_writer(name,val):
with open(name,"w") as f:
f.write(val)In [44]:
get_sub = lambda typ,filter: outer("subscribe",{"subscription_id":1,"type":typ,"filter":filter})
subscriptions={key:get_sub(key,simple_filter) for key in ["books","orders","fills","trades","securities","price_stats","price_tickers"]}
for key, value in subscriptions.items():
file_writer(f"subscribe_{key}.py",sub_code(value))In [45]:
get_enter_order = lambda ord_type,params:outer("enter_order",enter_order_params(ord_type,params))
for key, value in order_customs.items():
file_writer(f"enter_{key}_order.py",REST_code(get_enter_order(key,value)))In [46]:
get_upd_order = lambda ord_type,params:outer("update_order",upd_order_params(ord_type,params))
for key, value in order_customs.items():
file_writer(f"upd_{key}_order.py",REST_code(get_upd_order(key,value)))In [47]:
file_writer("delete_order.py",REST_code(outer("delete_order",{"order_id":541002})))In [51]:
%run subscribe_price_stats.pyWebSocket connection opened
Received message: {"jsonrpc":2.0,"id":"1","status":"1","result":{"subscription_id":"1"}}
In [ ]: