aboutsummaryrefslogtreecommitdiff
path: root/portfolio.py
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2018-05-01 17:35:55 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2018-05-01 17:35:55 +0200
commit9eb0de20f243bb78de0bf9118289f01f1ea1f77c (patch)
tree762d3a59d666bf6e1d4d1ea5901c31ab06f7e88e /portfolio.py
parent6cffa4af8b5a04b17ffd95738b8e843c4605d4e7 (diff)
parent2b1ee8f4d54fa1672510141a71a5817120ac031c (diff)
downloadTrader-9eb0de20f243bb78de0bf9118289f01f1ea1f77c.tar.gz
Trader-9eb0de20f243bb78de0bf9118289f01f1ea1f77c.tar.zst
Trader-9eb0de20f243bb78de0bf9118289f01f1ea1f77c.zip
Merge branch 'dev'v1.5
Diffstat (limited to 'portfolio.py')
-rw-r--r--portfolio.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/portfolio.py b/portfolio.py
index 1067b0b..d8a5465 100644
--- a/portfolio.py
+++ b/portfolio.py
@@ -320,8 +320,6 @@ class Trade:
320 ticker = ticker["original"] 320 ticker = ticker["original"]
321 rate = Computation.compute_value(ticker, self.order_action(), compute_value=compute_value) 321 rate = Computation.compute_value(ticker, self.order_action(), compute_value=compute_value)
322 322
323 # FIXME: Dust amount should be removed from there if they werent
324 # honored in other sales
325 delta_in_base = abs(self.delta) 323 delta_in_base = abs(self.delta)
326 # 9 BTC's worth of move (10 - 1 or 1 - 10 depending on case) 324 # 9 BTC's worth of move (10 - 1 or 1 - 10 depending on case)
327 325
@@ -580,12 +578,12 @@ class Order:
580 self.fetch_mouvements() 578 self.fetch_mouvements()
581 579
582 self.mark_disappeared_order() 580 self.mark_disappeared_order()
583 581 self.mark_dust_amount_remaining_order()
584 self.mark_finished_order() 582 self.mark_finished_order()
585 # FIXME: consider open order with dust remaining as closed
586 583
587 def dust_amount_remaining(self): 584 def mark_dust_amount_remaining_order(self):
588 return self.remaining_amount() < Amount(self.amount.currency, D("0.001")) 585 if self.market.ccxt.is_dust_trade(self.remaining_amount().value, self.rate):
586 self.status = "closed_dust_remaining"
589 587
590 def remaining_amount(self): 588 def remaining_amount(self):
591 return self.amount - self.filled_amount() 589 return self.amount - self.filled_amount()
@@ -618,7 +616,7 @@ class Order:
618 self.market.report.log_debug_action("Mark {} as cancelled".format(self)) 616 self.market.report.log_debug_action("Mark {} as cancelled".format(self))
619 self.status = "canceled" 617 self.status = "canceled"
620 return 618 return
621 if self.open and self.id is not None: 619 if (self.status == "closed_dust_remaining" or self.open) and self.id is not None:
622 try: 620 try:
623 self.market.ccxt.cancel_order(self.id) 621 self.market.ccxt.cancel_order(self.id)
624 except OrderNotFound as e: # Closed inbetween 622 except OrderNotFound as e: # Closed inbetween
@@ -650,7 +648,6 @@ class Order:
650 return True 648 return True
651 649
652 similar_trades = self.market.ccxt.fetch_my_trades(symbol=symbol, since=start_timestamp) 650 similar_trades = self.market.ccxt.fetch_my_trades(symbol=symbol, since=start_timestamp)
653 # FIXME: use set instead of sorted(list(...))
654 for order_id in sorted(list(map(lambda x: x["order"], similar_trades))): 651 for order_id in sorted(list(map(lambda x: x["order"], similar_trades))):
655 trades = list(filter(lambda x: x["order"] == order_id, similar_trades)) 652 trades = list(filter(lambda x: x["order"] == order_id, similar_trades))
656 if any(x["timestamp"] < start_timestamp for x in trades): 653 if any(x["timestamp"] < start_timestamp for x in trades):