safety order batch send mostly done
This commit is contained in:
parent
2e35ea9c13
commit
3a4ce2311e
|
|
@ -864,6 +864,40 @@ class Broker:
|
|||
return "the lowest price limit for sell orders is" in str(error_object).lower()
|
||||
|
||||
|
||||
def new_limit_orders(self, orders: list) -> list:
|
||||
sent_orders = []
|
||||
#Send the orders
|
||||
tries = self.retries
|
||||
while tries>=0:
|
||||
try:
|
||||
sent_orders = self.exchange.create_orders(orders)
|
||||
except Exception as e:
|
||||
self.logger.log_this(f"Exception while sending safety orders: {e}",1)
|
||||
tries-=1
|
||||
time.sleep(self.wait_time)
|
||||
if tries==0:
|
||||
return []
|
||||
|
||||
#Retrieve the orders from the exchange by id to confirm that they were sent
|
||||
#Specially for OKX, since the orders that create_orders return are empty (only id is present)
|
||||
returned_orders = []
|
||||
for order in sent_orders:
|
||||
tries = self.retries
|
||||
while tries>=0:
|
||||
try:
|
||||
returned_orders.append(self.get_order(order["id"],order["symbol"]))
|
||||
time.sleep(self.wait_time)
|
||||
except Exception as e:
|
||||
self.logger.log_this(f"Exception while retrieving safety orders: {e}",1)
|
||||
tries-=1
|
||||
if tries==0:
|
||||
if self.get_exchange_name()=="okex":
|
||||
return returned_orders
|
||||
returned_orders.append(order) #In the case of the other exchanges, we just assume that the order was sent and append it.
|
||||
time.sleep(self.wait_time)
|
||||
return returned_orders
|
||||
|
||||
|
||||
def new_limit_order(self,symbol,size,side,price,no_retries=False):
|
||||
'''
|
||||
Sends a new limit order.
|
||||
|
|
|
|||
26
trader.py
26
trader.py
|
|
@ -831,7 +831,31 @@ class trader:
|
|||
orders_to_place = min(self.status.get_no_of_safety_orders()-self.status.get_so_amount(),amount)
|
||||
if orders_to_place<1:
|
||||
return 0
|
||||
|
||||
orders_placed = 0
|
||||
# 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 = []
|
||||
# for i in range(orders_to_place):
|
||||
# order_index = self.status.get_so_amount()+i+1
|
||||
# so_size = self.gib_so_size(self.status.get_order_size(),order_index,self.config.get_safety_order_scale())
|
||||
# if self.config.get_is_short():
|
||||
# orders_to_send.append({"symbol": self.status.get_pair(),
|
||||
# "type": "limit",
|
||||
# "side": "sell",
|
||||
# "amount": so_size,
|
||||
# "price": self.status.get_safety_price_table()[order_index]})
|
||||
# else:
|
||||
# orders_to_send.append({"symbol": self.status.get_pair(),
|
||||
# "type": "limit",
|
||||
# "side": "buy",
|
||||
# "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))
|
||||
# for item in sent_orders:
|
||||
# self.status.add_safety_order(item)
|
||||
# else:
|
||||
for i in range(orders_to_place):
|
||||
self.broker.logger.log_this(f"Sending a new safety order ({i+1}/{orders_to_place})",2,self.status.get_pair())
|
||||
so_size = self.gib_so_size(self.status.get_order_size(),self.status.get_so_amount()+1,self.config.get_safety_order_scale())
|
||||
|
|
@ -911,7 +935,7 @@ class trader:
|
|||
self.status.set_base_bought(self.status.get_base_bought() - old_tp_order["filled"] - self.parse_fees(old_tp_order)[0])
|
||||
self.status.set_quote_spent(self.status.get_quote_spent() - old_tp_order["cost"])
|
||||
self.status.set_fees_paid_in_quote(self.status.get_fees_paid_in_quote() + self.parse_fees(old_tp_order)[1])
|
||||
#self.status.set_fees_paid_in_base(self.status.get_fees_paid_in_base() + self.parse_fees(old_tp_order)[0])
|
||||
self.status.set_fees_paid_in_base(self.status.get_fees_paid_in_base() + self.parse_fees(old_tp_order)[0])
|
||||
|
||||
#Cooldown
|
||||
time.sleep(self.broker.get_wait_before_new_safety_order())
|
||||
|
|
|
|||
Loading…
Reference in New Issue