small refactor in send_new_safety_order_batch

This commit is contained in:
Nicolás Sánchez 2025-08-30 18:38:19 -03:00
parent 406067497e
commit 7dab4d4890
2 changed files with 20 additions and 8 deletions

View File

@ -18,7 +18,7 @@ import exchange_wrapper
import trader
version = "2025.08.28"
version = "2025.08.29"
'''
Color definitions. If you want to change them, check the reference at https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

View File

@ -735,7 +735,7 @@ class trader:
#If this order wasn't filled, it is safe to assume that no order coming after this one was.
break
#Sum the filled amounts
self.broker.logger.log_this(f"Old safety order is partially filled, ID: {closed_order['id']}",1,self.status.get_pair())
self.broker.logger.log_this(f"Old safety order is partially filled, ID: {closed_order['id']}, {closed_order['filled']}/{closed_order['amount']} {self.base} filled",1,self.status.get_pair())
self.status.set_base_bought(self.status.get_base_bought() + closed_order["filled"] - self.parse_fees(closed_order)[0])
self.status.set_quote_spent(self.status.get_quote_spent() + closed_order["cost"])
#Save the order
@ -834,6 +834,7 @@ class trader:
return 0
orders_placed = 0
orders_returned = []
# if self.broker.get_exchange_name()!="binance": #Binance does not support sending multiple orders at once in Spot.
# self.broker.logger.log_this(f"Sending {orders_to_place} safety orders",2,self.status.get_pair())
# orders_to_send = []
@ -853,7 +854,8 @@ class trader:
# "amount": so_size/self.status.get_safety_price_table()[order_index],
# "price": self.status.get_safety_price_table()[order_index]})
# sent_orders = self.broker.new_limit_orders(orders_to_send)
# self.status.set_so_amount(self.status.get_so_amount()+len(sent_orders))
# orders_placed = len(sent_orders)
# self.status.set_so_amount(self.status.get_so_amount()+orders_placed)
# for item in sent_orders:
# self.status.add_safety_order(item)
# else:
@ -864,6 +866,7 @@ class trader:
new_order = self.broker.new_limit_order(self.status.get_pair(),so_size,"sell",self.status.get_safety_price_table()[self.status.get_so_amount()+1])
else:
new_order = self.broker.new_limit_order(self.status.get_pair(),so_size/self.status.get_safety_price_table()[self.status.get_so_amount()+1],"buy",self.status.get_safety_price_table()[self.status.get_so_amount()+1])
if new_order==1:
self.broker.logger.log_this("Not enough balance to send a new safety order",1,self.status.get_pair())
self.status.set_no_of_safety_orders(self.status.get_so_amount()) #To avoid sending more safety orders, no_of_safety_order can be later modified manually.
@ -875,10 +878,11 @@ class trader:
elif new_order==self.broker.get_empty_order():
self.broker.logger.log_this("new_limit_order returned an empty order",1,self.status.get_pair())
self.status.set_no_of_safety_orders(self.status.get_so_amount()) #To avoid sending more safety orders, no_of_safety_order can be later modified manually.
return orders_placed
orders_placed+=1
self.status.add_safety_order(new_order)
self.status.set_so_amount(self.status.get_so_amount()+1)
return orders_placed
else:
orders_placed+=1
self.status.add_safety_order(new_order)
self.status.set_so_amount(self.status.get_so_amount()+1)
return orders_placed
@ -887,6 +891,7 @@ class trader:
Modifies the current take profit order and sends a new safety order
:return: 0 OK, 1 take profit order is None, 2 not enough funds, 3 can't cancel TP (filled?), 4 can't send new TP
'''
safety_orders_to_remove_by_id = []
#Check if current TP order is valid
@ -978,6 +983,7 @@ class trader:
'''
Checks if short price exceeds old long price. If so, send a Telegram message
'''
price_exceeds = False
if self.status.get_old_long()!={}:
price_exceeds = self.status.get_price()>float(self.status.get_old_long()["tp_price"])
@ -1648,9 +1654,15 @@ class trader:
self.quit = True
return 1
#MIGRATION: ONCE MIGRATION IS DONE, REMOVE THESE LINES
#MIGRATION: ONCE MIGRATION IS DONE, REMOVE THIS CODE
# It moves the current safety order (if it exists) to the new safety order list
# It sets the concurrent safety orders setting to 1 (to avoid sending a big amount of orders at startup)
# It saves the modified config file
#if self.status.status_dictionary["safety_order"]["id"]!="":
# self.status.set_safety_orders([self.status.status_dictionary["safety_order"]])
# self.config.set_concurrent_safety_orders(1)
# self.config.save_to_file()
#Done
self.pause = False