small refactor in send_new_safety_order_batch
This commit is contained in:
parent
406067497e
commit
7dab4d4890
2
main.py
2
main.py
|
|
@ -18,7 +18,7 @@ import exchange_wrapper
|
||||||
import trader
|
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
|
Color definitions. If you want to change them, check the reference at https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
|
||||||
|
|
|
||||||
24
trader.py
24
trader.py
|
|
@ -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.
|
#If this order wasn't filled, it is safe to assume that no order coming after this one was.
|
||||||
break
|
break
|
||||||
#Sum the filled amounts
|
#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_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"])
|
self.status.set_quote_spent(self.status.get_quote_spent() + closed_order["cost"])
|
||||||
#Save the order
|
#Save the order
|
||||||
|
|
@ -834,6 +834,7 @@ class trader:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
orders_placed = 0
|
orders_placed = 0
|
||||||
|
orders_returned = []
|
||||||
# if self.broker.get_exchange_name()!="binance": #Binance does not support sending multiple orders at once in Spot.
|
# 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())
|
# self.broker.logger.log_this(f"Sending {orders_to_place} safety orders",2,self.status.get_pair())
|
||||||
# orders_to_send = []
|
# orders_to_send = []
|
||||||
|
|
@ -853,7 +854,8 @@ class trader:
|
||||||
# "amount": so_size/self.status.get_safety_price_table()[order_index],
|
# "amount": so_size/self.status.get_safety_price_table()[order_index],
|
||||||
# "price": 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)
|
# 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:
|
# for item in sent_orders:
|
||||||
# self.status.add_safety_order(item)
|
# self.status.add_safety_order(item)
|
||||||
# else:
|
# 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])
|
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:
|
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])
|
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.
|
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.
|
||||||
|
|
@ -876,9 +879,10 @@ class trader:
|
||||||
self.broker.logger.log_this("new_limit_order returned an empty order",1,self.status.get_pair())
|
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.
|
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
|
||||||
orders_placed+=1
|
else:
|
||||||
self.status.add_safety_order(new_order)
|
orders_placed+=1
|
||||||
self.status.set_so_amount(self.status.get_so_amount()+1)
|
self.status.add_safety_order(new_order)
|
||||||
|
self.status.set_so_amount(self.status.get_so_amount()+1)
|
||||||
return orders_placed
|
return orders_placed
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -887,6 +891,7 @@ class trader:
|
||||||
Modifies the current take profit order and sends a new safety order
|
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
|
: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 = []
|
safety_orders_to_remove_by_id = []
|
||||||
|
|
||||||
#Check if current TP order is valid
|
#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
|
Checks if short price exceeds old long price. If so, send a Telegram message
|
||||||
'''
|
'''
|
||||||
|
|
||||||
price_exceeds = False
|
price_exceeds = False
|
||||||
if self.status.get_old_long()!={}:
|
if self.status.get_old_long()!={}:
|
||||||
price_exceeds = self.status.get_price()>float(self.status.get_old_long()["tp_price"])
|
price_exceeds = self.status.get_price()>float(self.status.get_old_long()["tp_price"])
|
||||||
|
|
@ -1648,9 +1654,15 @@ class trader:
|
||||||
self.quit = True
|
self.quit = True
|
||||||
return 1
|
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"]!="":
|
#if self.status.status_dictionary["safety_order"]["id"]!="":
|
||||||
# self.status.set_safety_orders([self.status.status_dictionary["safety_order"]])
|
# self.status.set_safety_orders([self.status.status_dictionary["safety_order"]])
|
||||||
|
# self.config.set_concurrent_safety_orders(1)
|
||||||
|
# self.config.save_to_file()
|
||||||
|
|
||||||
#Done
|
#Done
|
||||||
self.pause = False
|
self.pause = False
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue