aboutsummaryrefslogtreecommitdiff
path: root/portfolio.py
diff options
context:
space:
mode:
Diffstat (limited to 'portfolio.py')
-rw-r--r--portfolio.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/portfolio.py b/portfolio.py
index 9c58676..9dae23e 100644
--- a/portfolio.py
+++ b/portfolio.py
@@ -1,7 +1,7 @@
1from datetime import datetime 1from datetime import datetime
2from retry import retry 2from retry import retry
3from decimal import Decimal as D, ROUND_DOWN 3from decimal import Decimal as D, ROUND_DOWN
4from ccxt import ExchangeError, InsufficientFunds, ExchangeNotAvailable, InvalidOrder, OrderNotCached, OrderNotFound, RequestTimeout 4from ccxt import ExchangeError, InsufficientFunds, ExchangeNotAvailable, InvalidOrder, OrderNotCached, OrderNotFound, RequestTimeout, InvalidNonce
5 5
6class Computation: 6class Computation:
7 computations = { 7 computations = {
@@ -477,7 +477,7 @@ class Order:
477 def finished(self): 477 def finished(self):
478 return self.status.startswith("closed") or self.status == "canceled" or self.status == "error" 478 return self.status.startswith("closed") or self.status == "canceled" or self.status == "error"
479 479
480 @retry((InsufficientFunds, RetryException)) 480 @retry((InsufficientFunds, RetryException, InvalidNonce))
481 def run(self): 481 def run(self):
482 self.tries += 1 482 self.tries += 1
483 symbol = "{}/{}".format(self.amount.currency, self.base_currency) 483 symbol = "{}/{}".format(self.amount.currency, self.base_currency)
@@ -496,6 +496,14 @@ class Order:
496 self.status = "closed" 496 self.status = "closed"
497 self.mark_finished_order() 497 self.mark_finished_order()
498 return 498 return
499 except InvalidNonce as e:
500 if self.tries < 5:
501 self.market.report.log_error(action, message="Retrying after invalid nonce", exception=e)
502 raise e
503 else:
504 self.market.report.log_error(action, message="Giving up {} after invalid nonce".format(self), exception=e)
505 self.status = "error"
506 return
499 except RequestTimeout as e: 507 except RequestTimeout as e:
500 if not self.retrieve_order(): 508 if not self.retrieve_order():
501 if self.tries < 5: 509 if self.tries < 5: