From 2e35ea9c13bb60f18fd5d1c88cf8fe1f9655ea8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20S=C3=A1nchez?= Date: Mon, 25 Aug 2025 18:41:09 -0300 Subject: [PATCH] no_of_safety_orders bug --- changelog.txt | 2 +- exchange_wrapper.py | 17 +++-------------- status_handler.py | 2 +- trader.py | 3 ++- 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/changelog.txt b/changelog.txt index 8011471..35ffa95 100755 --- a/changelog.txt +++ b/changelog.txt @@ -1,8 +1,8 @@ next: . Default wait time now 0.5 seconds. . Now the trader supports multiple safety orders at the same time. -. Removed endpoint /reload_safety_orders. . Removed forcing orders when importing a trader. Maybe it will be reinstated at a later date. +. Removed endpoint /reload_safety_orders. . New endpoints: /mod_concurrent_safety orders and /mod_boosted_concurrent_safety_orders. 2025.08.19: diff --git a/exchange_wrapper.py b/exchange_wrapper.py index 1a36efa..62db603 100755 --- a/exchange_wrapper.py +++ b/exchange_wrapper.py @@ -14,7 +14,7 @@ class Broker: self.broker_config = broker_config self.exchange = exchange self.last_price = 0 - self.wait_time = .5 #Default wait time for API breathing room + self.wait_time = .5 #Default wait time for API breathing room self.cooldown_multiplier = 2 #Default cooldown multiplier value if "cooldown_multiplier" in self.broker_config: self.cooldown_multiplier = self.broker_config["cooldown_multiplier"] @@ -881,12 +881,6 @@ class Broker: order_to_send = self.exchange.create_order(symbol,"limit",side,self.amount_to_precision(symbol,size),price) time.sleep(self.wait_time) return self.get_order(order_to_send["id"],symbol) - #if order_to_send["amount"] is not None: # Because Kucoin etc etc - # return self.get_order(order_to_send["id"],pair) # - #self.logger.log_this(f"Error sending order: Null order returned",2,pair) # - #self.cancel_order(order_to_send["id"],symbol,no_retries=True) # - #retries-=1 - except Exception as e: self.logger.log_this(f"Exception in new_limit_order - Side: {side} - Size: {size} - {self.amount_to_precision(symbol,size)} - Exception: {e}",1,symbol) if self.not_enough_balance_error(e): @@ -1025,8 +1019,8 @@ class Broker: :param pair: pair :return: step size - ''' + market = self.fetch_market(pair) if market is None: return None @@ -1126,14 +1120,9 @@ class Logger: #Append to log list self.log_list.append(text) - - #Trim log list - #self.log_list = self.log_list[-self.log_list_max_length:] - except Exception as e: print("Can't write log file") - print(e) - + print(e) if level<1: self.send_tg_message(f"{self.broker_config['exchange'].capitalize()} | {pair_data}{message}",ignore_config=level==-1) diff --git a/status_handler.py b/status_handler.py index d81b0d7..b219e4c 100644 --- a/status_handler.py +++ b/status_handler.py @@ -24,7 +24,7 @@ class StatusHandler: "quote_spent": 0.0, "base_bought": 0.0, "so_amount": 0, - "no_of_safety_orders": "", + "no_of_safety_orders": 0, "safety_price_table": [], "deal_uptime": 0.0, "total_uptime": 0.0, diff --git a/trader.py b/trader.py index 06e4668..e3c6a33 100755 --- a/trader.py +++ b/trader.py @@ -116,6 +116,7 @@ class trader: self.status.set_take_profit_order(self.broker.get_empty_order()) self.status.set_safety_orders([]) self.status.set_safety_orders_filled(0) + self.status.set_no_of_safety_orders(self.config.get_no_of_safety_orders()) #Reloads the market new_market_data = self.broker.fetch_market(self.status.get_pair()) @@ -1185,7 +1186,7 @@ class trader: tp_level = self.config.get_tp_table()[-1] tp_level = self.config.get_tp_level() elif self.config.get_tp_mode()==3: #Linear percentage table - profit_table = self.linear_space(self.config.get_tp_level()+0.005,self.config.get_tp_level()-0.005,self.status.get_no_of_safety_orders()) + profit_table = self.linear_space(self.config.get_tp_level()+0.005,self.config.get_tp_level()-0.005,self.config.get_no_of_safety_orders()) tp_level = profit_table[-1] if order_index