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
|
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
|
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.
|
4. Implement api key hashing.
|
||||||
5. Dockerize.
|
5. Dockerize.
|
||||||
6. Inspect orderbook liquidity prior to changing mode from short to long (big sell market order needs to have liquidity).
|
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:
|
Would be nice to have:
|
||||||
|
|
|
||||||
15
trader.py
15
trader.py
|
|
@ -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])
|
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:
|
if new_order==1:
|
||||||
self.broker.logger.log_this("Not enough balance to send a new safety order",1,self.status.get_pair())
|
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
|
return orders_placed
|
||||||
elif new_order is None:
|
elif new_order is None:
|
||||||
self.broker.logger.log_this("new_limit_order returned None",1,self.status.get_pair())
|
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
|
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
|
orders_placed+=1
|
||||||
self.status.add_safety_order(new_order)
|
self.status.add_safety_order(new_order)
|
||||||
self.status.set_so_amount(self.status.get_so_amount()+1)
|
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():
|
for order in self.status.get_safety_orders():
|
||||||
if order["id"] not in open_orders_ids:
|
if order["id"] not in open_orders_ids:
|
||||||
filled_ids.append(order["id"])
|
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())
|
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", ""]?
|
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))
|
self.status.set_safety_orders_filled(self.status.get_safety_orders_filled()+len(filled_orders))
|
||||||
|
|
@ -1626,8 +1632,9 @@ class trader:
|
||||||
self.quit = True
|
self.quit = True
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
#MIGRATION: ONCE MIGRATION IS DONE, REMOVE THIS LINE
|
#MIGRATION: ONCE MIGRATION IS DONE, REMOVE THESE LINES
|
||||||
#self.status.set_safety_orders([self.status.status_dictionary["safety_order"]])
|
#if self.status.status_dictionary["safety_order"]["id"]!="":
|
||||||
|
# self.status.set_safety_orders([self.status.status_dictionary["safety_order"]])
|
||||||
|
|
||||||
#Done
|
#Done
|
||||||
self.pause = False
|
self.pause = False
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue