def place_new_order(self): bot_message = f"Added {self.symbol}{self.new_side} , \n{round(self.amount, 2)}, \n{round(float(self.my_ask), 5)},\n SL {round(float(self.my_sl), 5)} / TP {round(float(self.my_tp), 5)}" bot_sendtext(bot_message) print("\n", bot_message) self.order = self.main_direction reponse = Orders.my_order( client=self.bclient, symbol=f"{self.symbol.upper()}{self.new_side}USDT", side=1, amount=round(self.amount, 2)) if reponse['error']: self.bot_ping = False logging.info(f"New order Error:\n {reponse}") bot_sendtext(f"New order Error:\n {reponse}") else: self.order_id = reponse['result']['orderId'] logging.info(f"New order:\n {reponse}") dbrools.insert_history_new(data=reponse) self.order_price = self.my_bid data = { "symbol": f"{self.symbol}{self.new_side}", "amount": round(self.amount, 2), "price": self.my_ask, "direct": 'BUY', "result": 0, "date": f"{datetime.now().strftime('%d.%m.%Y')}" } dbrools.insert_history(data=data) self.order_time = time.time() self.place_tp_order()
def close_sl_order(self): bot_message = f"QUIT {self.symbol.upper()}{self.new_side} , \n{round(self.amount, 2)}, \n{round(float(self.my_sl), 5)}, \n STOP LOSS ,\n SL {round(float(self.my_sl), 4)} / TP {round(float(self.my_tp), 4)}" bot_sendtext(bot_message) print("\n", bot_message) result = self.bclient.cancel_order(symbol=self.main_symbol.upper(), orderId=self.order_id) print("\n", result) data = { "symbol": f"{self.symbol}{self.new_side}", "amount": round(self.amount, 2), "price": self.my_sl, "direct": 'SELL', "result": 1, "date": f"{datetime.now().strftime('%d.%m.%Y')}" } dbrools.insert_history(data=data) reponse = Orders.my_order(client=self.bclient, symbol=self.main_symbol.upper(), side=2, amount=round(self.amount, 2)) logging.info(f"QUIT order:\n {reponse}") dbrools.insert_history_new(data=reponse) if reponse['error']: self.bot_ping = False logging.info(f"New order Error:\n {reponse}") bot_sendtext(f"New order Error:\n {reponse}") else: self.my_Stoch = False self.my_RSI = False self.order = False
def close_sl_order(self): my_order = self.bclient.get_order( symbol=f"{self.symbol.upper()}{self.new_side}USDT", orderId=self.order_id) if my_order['status'] == "FILLED": self.close_tp_order() elif my_order['status'] == "PARTIALLY_FILLED": bot_message = f"QUIT (PART){self.symbol.upper()}{self.new_side} , \n{round(self.amount, 2)}, \n{round(float(self.my_sl), 5)}, \n STOP LOSS ,\n SL {round(float(self.my_sl), 4)} / TP {round(float(self.my_tp), 4)}" bot_sendtext(bot_message) print("\n", bot_message) result = self.bclient.cancel_order( symbol=f"{self.symbol.upper()}{self.new_side}USDT", orderId=self.order_id) data = { "symbol": f"{self.symbol}{self.new_side}", "amount": round(self.amount, 2), "price": self.my_sl, "direct": 'SELL', "result": 1, "date": f"{datetime.now().strftime('%d.%m.%Y')}" } dbrools.insert_history(data=data) reponse = Orders.my_order( client=self.bclient, symbol=f"{self.symbol.upper()}{self.new_side}USDT", side=2, amount=round( float(my_order['executedQty']) - float(my_order['origQty']), 2)) logging.info(f"QUIT order:\n {reponse}") dbrools.insert_history_new(data=reponse) if reponse['error']: self.bot_ping = False logging.info(f"New order Error:\n {reponse}") bot_sendtext(f"New order Error:\n {reponse}") else: self.my_Stoch = False self.my_RSI = False self.order = False self.order_id = False else: bot_message = f"QUIT {self.symbol.upper()}{self.new_side} , \n{round(self.amount, 2)}, \n{round(float(self.my_sl), 5)}, \n STOP LOSS ,\n SL {round(float(self.my_sl), 4)} / TP {round(float(self.my_tp), 4)}" bot_sendtext(bot_message) print("\n", bot_message) result = self.bclient.cancel_order( symbol=f"{self.symbol.upper()}{self.new_side}USDT", orderId=self.order_id) print("\n", result) data = { "symbol": f"{self.symbol}{self.new_side}", "amount": round(self.amount, 2), "price": self.my_sl, "direct": 'SELL', "result": 1, "date": f"{datetime.now().strftime('%d.%m.%Y')}" } dbrools.insert_history(data=data) reponse = Orders.my_order( client=self.bclient, symbol=f"{self.symbol.upper()}{self.new_side}USDT", side=2, amount=round(self.amount, 2)) logging.info(f"QUIT order:\n {reponse}") dbrools.insert_history_new(data=reponse) if reponse['error']: self.bot_ping = False logging.info(f"New order Error:\n {reponse}") bot_sendtext(f"New order Error:\n {reponse}") else: self.my_Stoch = False self.my_RSI = False self.order = False self.order_id = False
def place_new_order(self): if self.main_direction == 1: self.new_side = "LONG" else: self.new_side = "SHORT" self.order = self.main_direction reponse = Orders.my_order_future( client=self.bclient, symbol=f"{self.symbol.upper()}USDT", side=self.main_direction, amount=round(self.amount, n_rools[self.symbol.upper()]["decimals"])) if reponse['error']: self.bot_ping = False logging.info(f"New order Error:\n {reponse}") bot_sendtext(f"New order Error:\n {reponse}") else: self.order_id = reponse['result']['orderId'] logging.info(f"New order:\n {reponse}") dbrools.insert_history_new(data=reponse) time.sleep(1) my_orders = self.bclient.futures_get_order( symbol=f"{self.symbol.upper()}USDT", orderId=self.order_id) self.my_price = float(my_orders['avgPrice']) if self.order == 1: self.my_sl = self.my_price / 1.009 self.my_tp = self.my_price * 1.022 else: self.my_sl = self.my_price * 1.009 self.my_tp = self.my_price / 1.022 data = { "symbol": f"{self.symbol} ({self.new_side})", "side": f"{self.new_side}", "amount": round(self.amount, n_rools[self.symbol.upper()]["decimals"]), "price": float( round(self.my_price, n_rools[self.symbol.upper()]['price'])), "direct": 'BUY', "result": 0, "date": f"{datetime.now().strftime('%d.%m.%Y')}" } dbrools.insert_history(data=data) bot_message = f"Added {self.symbol} ({self.new_side}), \n{round(self.amount, n_rools[self.symbol.upper()]['decimals'])}, \n{round(self.my_price, n_rools[self.symbol.upper()]['price'])},\n SL {round(self.my_sl, n_rools[self.symbol.upper()]['price'])} / TP {round(self.my_tp, n_rools[self.symbol.upper()]['price'])}" bot_sendtext(bot_message) print("\n", bot_message) self.place_tp_order()