partial SO fills
This commit is contained in:
parent
cfc634a447
commit
1670ecefff
25
trader.py
25
trader.py
|
|
@ -820,34 +820,13 @@ class trader:
|
||||||
already_counted = True
|
already_counted = True
|
||||||
|
|
||||||
#IF NOT SHORT - Check if the SO was partially filled. If so, add the amounts to total_amount_of_base and total_amount_of_quote
|
#IF NOT SHORT - Check if the SO was partially filled. If so, add the amounts to total_amount_of_base and total_amount_of_quote
|
||||||
#Suggestion: Would it be feasible to send a market sell order for the amount of base bought on the old safety order?
|
|
||||||
#Or is it better to leave this amount of change to the cleanup routine?
|
|
||||||
if not self.is_short and self.so["id"]!="" and not already_counted:
|
if not self.is_short and self.so["id"]!="" and not already_counted:
|
||||||
old_so_order = self.broker.get_order(self.so["id"],self.pair)
|
old_so_order = self.broker.get_order(self.so["id"],self.pair)
|
||||||
if old_so_order["filled"]>0:
|
if old_so_order["filled"]>0:
|
||||||
self.broker.logger.log_this(f"Old safety order is partially filled, ID: {old_so_order['id']}",1,self.pair)
|
self.broker.logger.log_this(f"Old safety order is partially filled, ID: {old_so_order['id']}",1,self.pair)
|
||||||
self.status_dict["deal_order_history"].append(old_so_order)
|
self.status_dict["deal_order_history"].append(old_so_order)
|
||||||
#Uncomment the next two lines if you do not want to ignore the partial fill.
|
self.total_amount_of_base = self.total_amount_of_base + old_so_order["filled"] - self.parse_fees(old_so_order)[0]
|
||||||
#Keep them commented out if you want to send a market sell order.
|
self.total_amount_of_quote = self.total_amount_of_quote + old_so_order["cost"]
|
||||||
#self.total_amount_of_base = self.total_amount_of_base + old_so_order["filled"]
|
|
||||||
#self.total_amount_of_quote = self.total_amount_of_quote + old_so_order["cost"]
|
|
||||||
|
|
||||||
#Hypothetical market order code below:
|
|
||||||
#If there is not enough base for an order, we'll accumulate it and let the cleanup routine deal with that.
|
|
||||||
# floor_amount = self.broker.get_min_base_size(self.pair)
|
|
||||||
# if floor_amount is not None and old_so_order["filled"]>floor_amount:
|
|
||||||
# self.broker.logger.log_this(f"Sending sell order for partially filled funds: {old_so_order["filled"]} {self.base}",1,self.pair)
|
|
||||||
# loose_change_order = broker.new_market_order(self.pair,old_so_order["filled"],"sell",amount_in_base=True)
|
|
||||||
# retries = self.broker.get_retries()
|
|
||||||
# while retries>0:
|
|
||||||
# time.sleep(self.broker.get_wait_time())
|
|
||||||
# order_to_fill = self.broker.get_order(loose_change_order["id"],self.pair)
|
|
||||||
# if order_to_fill["status"]=="closed" and order_to_fill["filled"]>0:
|
|
||||||
# profit_with_fees = order_to_fill["filled"]-old_so_order["cost"]-self.parse_fees(order_to_fill)[1]
|
|
||||||
# self.broker.logger.log_this(f"Trader closed a loose change deal. Profit: {profit_with_fees} {self.quote}",0,self.pair)
|
|
||||||
# if profit_with_fees>0:
|
|
||||||
# self.profit_to_file(profit_with_fees,order_to_fill["id"])
|
|
||||||
# retries-=1
|
|
||||||
|
|
||||||
if not self.broker.check_for_duplicate_profit_in_db(filled_order):
|
if not self.broker.check_for_duplicate_profit_in_db(filled_order):
|
||||||
self.status_dict["pause_reason"] = "calculating profit"
|
self.status_dict["pause_reason"] = "calculating profit"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue