empty_order handling
This commit is contained in:
parent
c4cfa40577
commit
16e1994ed1
2
main.py
2
main.py
|
|
@ -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
|
||||
|
|
|
|||
1
todo.txt
1
todo.txt
|
|
@ -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:
|
||||
|
|
|
|||
13
trader.py
13
trader.py
|
|
@ -865,9 +865,15 @@ 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)
|
||||
|
|
@ -1117,7 +1123,7 @@ class trader:
|
|||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue