empty_order handling

This commit is contained in:
Nicolás Sánchez 2025-08-28 10:18:12 -03:00
parent c4cfa40577
commit 16e1994ed1
3 changed files with 13 additions and 5 deletions

View File

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

View File

@ -8,6 +8,7 @@ Mandatory:
4. Implement api key hashing.
5. Dockerize.
6. Inspect orderbook liquidity prior to changing mode from short to long (big sell market order needs to have liquidity).
7. When autoswitching to long, instead of using a big market order, the last safety order should be a sell order of all the available funds.
Would be nice to have:

View File

@ -865,10 +865,16 @@ class trader:
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.
return orders_placed
elif new_order is None:
self.broker.logger.log_this("new_limit_order returned None",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
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)
@ -1116,8 +1122,8 @@ class trader:
for order in self.status.get_safety_orders():
if order["id"] not in open_orders_ids:
filled_ids.append(order["id"])
if filled_ids!=[]:
if filled_ids!=[]: #WRONG: Once all safety orders are filled, adding no_of_safety_orders won't result in sending new orders.
closed_orders = self.broker.get_closed_orders(self.status.get_pair())
filled_orders = [item for item in closed_orders if item["id"] in filled_ids and item["status"]=="closed"] #maybe item["status"] in ["closed", "canceled", ""]?
self.status.set_safety_orders_filled(self.status.get_safety_orders_filled()+len(filled_orders))
@ -1626,8 +1632,9 @@ class trader:
self.quit = True
return 1
#MIGRATION: ONCE MIGRATION IS DONE, REMOVE THIS LINE
#self.status.set_safety_orders([self.status.status_dictionary["safety_order"]])
#MIGRATION: ONCE MIGRATION IS DONE, REMOVE THESE LINES
#if self.status.status_dictionary["safety_order"]["id"]!="":
# self.status.set_safety_orders([self.status.status_dictionary["safety_order"]])
#Done
self.pause = False