self.orders.append(order)
return order
+ def reopen_same_order(self, order):
+ new_order = Order(order.action, order.amount, order.rate,
+ order.base_currency, order.trade_type, self.market,
+ self, close_if_possible=order.close_if_possible)
+ self.orders.append(new_order)
+ new_order.run()
+ return new_order
+
def as_json(self):
return {
"action": self.action,
self.fetch()
return self.status
+ def fix_disappeared_order(self):
+ if self.status.startswith("closed") and \
+ len(self.mouvements) == 1 and \
+ self.mouvements[0].total_in_base == 0:
+ self.status = "error_disappeared"
+ new_order = self.trade.reopen_same_order(self)
+ self.market.report.log_error("fetch",
+ message="Order {} disappeared, recreating it as {}".format(self, new_order))
+
def mark_finished_order(self):
if self.status.startswith("closed") and self.market.debug:
self.market.report.log_debug_action("Mark {} as finished".format(self))
self.fetch_mouvements()
+ self.fix_disappeared_order()
+
self.mark_finished_order()
# FIXME: consider open order with dust remaining as closed