from decimal import Decimal as D, ROUND_DOWN
# Put your poloniex api key in market.py
from json import JSONDecodeError
+from ccxt import ExchangeError, ExchangeNotAvailable
import requests
import helper as h
from store import *
else:
try:
self.results.append(self.market.create_order(symbol, 'limit', self.action, amount, price=self.rate, account=self.account))
+ except ExchangeNotAvailable:
+ # Impossible to honor the order (dust amount)
+ self.status = "closed"
+ self.mark_finished_order()
+ return
except Exception as e:
self.status = "error"
print("error when running market.create_order('{}', 'limit', '{}', {}, price={}, account={})".format(
return filled_amount
def fetch_mouvements(self):
- mouvements = self.market.privatePostReturnOrderTrades({"orderNumber": self.id})
+ try:
+ mouvements = self.market.privatePostReturnOrderTrades({"orderNumber": self.id})
+ except ExchangeError:
+ mouvements = []
self.mouvements = []
for mouvement_hash in mouvements:
def __init__(self, currency, base_currency, hash_):
self.currency = currency
self.base_currency = base_currency
- self.id = hash_["id"]
- self.action = hash_["type"]
- self.fee_rate = D(hash_["fee"])
- self.date = datetime.strptime(hash_["date"], '%Y-%m-%d %H:%M:%S')
- self.rate = D(hash_["rate"])
- self.total = Amount(currency, hash_["amount"])
+ self.id = hash_.get("tradeID")
+ self.action = hash_.get("type")
+ self.fee_rate = D(hash_.get("fee", -1))
+ try:
+ self.date = datetime.strptime(hash_.get("date", ""), '%Y-%m-%d %H:%M:%S')
+ except ValueError:
+ self.date = None
+ self.rate = D(hash_.get("rate", 0))
+ self.total = Amount(currency, hash_.get("amount", 0))
# rate * total = total_in_base
- self.total_in_base = Amount(base_currency, hash_["total"])
+ self.total_in_base = Amount(base_currency, hash_.get("total", 0))
if __name__ == '__main__': # pragma: no cover
from market import market