from poloniex import Poloniex
from .exchange import ExchangeBaseClass
from .. import utils
from decimal import Decimal
import logging
[docs]class PoloniexExchange(ExchangeBaseClass):
"""
Class that manages Poloniex metadata.
Inherits from alchemist_lib.exchange.exchange.ExchangeBaseClass.
Website: https://poloniex.com/
Api documentation: https://poloniex.com/support/api/
Api wrapper: https://github.com/s4w3d0ff/python-poloniex
Attributes:
polo (poloniex.Poloniex): Communication object.
"""
[docs] def __init__(self):
"""
Costructor method.
"""
ExchangeBaseClass.__init__(self)
self.polo = Poloniex()
[docs] def get_min_order_size(self, asset):
"""
This method would return the minimum order size for a specific market, but It's not specified in the Poloniex documentation.
https://poloniex.com/support/api/
Args:
asset (alchemist_lib.database.asset.Asset): The asset traded again BTC.
Return:
size (decimal.Decimal): Minimum order size. Default is 0.
"""
return Decimal(0)
[docs] def are_tradable(self, assets):
"""
Filter tradable assets.
Args:
assets (alchemist_lib.database.asset.Asset, list[Asset]): List of assets to check.
Return:
tradable (list[Asset]): Return all tradable asset (remove not tradable assets from the arg).
Note:
Check just pairs with BTC as base currency.
"""
assets = utils.to_list(assets)
pairs = self.polo.returnTicker()
tradable = []
for asset in assets:
pair = "BTC_{}".format(asset.ticker)
if pair in list(pairs.keys()):
if pairs[pair]["isFrozen"] == "0":
tradable.append(asset)
else:
logging.debug("{} is not tradable.".format(asset.ticker))
return tradable