from config_bonus_api import session_private import requests # Get position information def place_market_close_order(ticker, side, size): exception = True try: order = session_private.place_active_order( symbol=ticker, side=side, order_type="Market", qty=size, time_in_force="GoodTillCancel", reduce_only=True, close_on_trigger=False ) if "result" in order.keys(): if "order_id" in order["result"]: exception = False print(order["result"]["order_id"], order["result"]["created_time"],exception) return (order["result"]["order_id"], order["result"]["created_time"],exception) except requests.exceptions.ConnectionError as errc: print("Connection error ",errc) pass except requests.exceptions.ReadTimeout as errr: print("Read timeout",errr) pass except requests.exceptions.RequestException as err: print("other errors ",err) pass return (0,"", exception) # Get P&L Info def get_closed_pnl_info(ticker,start_time): exception = True try: pnl = session_private.closed_profit_and_loss(symbol=ticker, start_time=start_time) closed_pnl = 0 if "ret_msg" in pnl.keys(): if pnl["ret_msg"] == "OK": if pnl["result"]["data"] != None: for item in pnl["result"]["data"]: closed_pnl += item["closed_pnl"] exception = False return (closed_pnl, exception) except requests.exceptions.ConnectionError as errc: print("Connection error ",errc) pass except requests.exceptions.ReadTimeout as errr: print("Read timeout",errr) pass except requests.exceptions.RequestException as err: print("other errors ",err) pass return (0, exception) # Get position information def get_position_info(ticker): exception = True try: position = session_private.my_position(symbol=ticker) side = 0 size = "" pnl_un = 0 pos_value = 0 if "ret_msg" in position.keys(): if position["ret_msg"] == "OK": if len(position["result"]) == 2: if position["result"][0]["size"] > 0: size = position["result"][0]["size"] side = "Buy" pnl_un = position["result"][0]["unrealised_pnl"] pos_value = position["result"][0]["position_value"] else: size = position["result"][1]["size"] side = "Sell" pnl_un = position["result"][1]["unrealised_pnl"] pos_value = position["result"][1]["position_value"] exception = False # Return output return (side, size, pnl_un, pos_value, exception) except requests.exceptions.ConnectionError as errc: print("Connection error ",errc) pass except requests.exceptions.ReadTimeout as errr: print("Read timeout",errr) pass except requests.exceptions.RequestException as err: print("other errors ",err) pass # Return output return ("", 0, 0, 0, exception) # Query existing order def query_existing_order(ticker, order_id): # Query order order = session_private.query_active_order(symbol=ticker, order_id=order_id) # Construct response if "ret_msg" in order.keys(): if order["ret_msg"] == "OK": order_price = order["result"]["price"] order_quantity = order["result"]["qty"] order_status = order["result"]["order_status"] return order_price, order_quantity, order_status return (0, 0, 0)