no_of_safety_orders bug

This commit is contained in:
Nicolás Sánchez 2025-08-25 18:41:09 -03:00
parent b594bd2007
commit 2e35ea9c13
4 changed files with 7 additions and 17 deletions

View File

@ -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:

View File

@ -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)
if level<1:
self.send_tg_message(f"{self.broker_config['exchange'].capitalize()} | {pair_data}{message}",ignore_config=level==-1)

View File

@ -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,

View File

@ -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<len(profit_table): #If more safety orders were added, instead of recalculating the whole table
tp_level = profit_table[order_index] #it just returns the last value. Otherwise, the percentage gets very small.