X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=portfolio.py;h=d8a546584afc4549be442e1593030ec82c5f0eef;hb=9eb0de20f243bb78de0bf9118289f01f1ea1f77c;hp=146ee79b29611da8b58c8bfc9cf2c83663fd7712;hpb=c8df27385e02b22d36b240fe29532e97dbba1f43;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FTrader.git diff --git a/portfolio.py b/portfolio.py index 146ee79..d8a5465 100644 --- a/portfolio.py +++ b/portfolio.py @@ -311,13 +311,15 @@ class Trade: if self.action is None: return None ticker = self.market.get_ticker(self.currency, self.base_currency) + if ticker is None: + self.market.report.log_error("prepare_order", + message="Unknown ticker {}/{}".format(self.currency, self.base_currency)) + return None self.inverted = ticker["inverted"] if self.inverted: ticker = ticker["original"] rate = Computation.compute_value(ticker, self.order_action(), compute_value=compute_value) - # FIXME: Dust amount should be removed from there if they werent - # honored in other sales delta_in_base = abs(self.delta) # 9 BTC's worth of move (10 - 1 or 1 - 10 depending on case) @@ -576,12 +578,12 @@ class Order: self.fetch_mouvements() self.mark_disappeared_order() - + self.mark_dust_amount_remaining_order() self.mark_finished_order() - # FIXME: consider open order with dust remaining as closed - def dust_amount_remaining(self): - return self.remaining_amount() < Amount(self.amount.currency, D("0.001")) + def mark_dust_amount_remaining_order(self): + if self.market.ccxt.is_dust_trade(self.remaining_amount().value, self.rate): + self.status = "closed_dust_remaining" def remaining_amount(self): return self.amount - self.filled_amount() @@ -614,7 +616,7 @@ class Order: self.market.report.log_debug_action("Mark {} as cancelled".format(self)) self.status = "canceled" return - if self.open and self.id is not None: + if (self.status == "closed_dust_remaining" or self.open) and self.id is not None: try: self.market.ccxt.cancel_order(self.id) except OrderNotFound as e: # Closed inbetween @@ -646,7 +648,6 @@ class Order: return True similar_trades = self.market.ccxt.fetch_my_trades(symbol=symbol, since=start_timestamp) - # FIXME: use set instead of sorted(list(...)) for order_id in sorted(list(map(lambda x: x["order"], similar_trades))): trades = list(filter(lambda x: x["order"] == order_id, similar_trades)) if any(x["timestamp"] < start_timestamp for x in trades):