diff --git a/catalyst/examples/mean_reversion_simple.py b/catalyst/examples/mean_reversion_simple.py index b215f5cf..6909dbc4 100644 --- a/catalyst/examples/mean_reversion_simple.py +++ b/catalyst/examples/mean_reversion_simple.py @@ -248,7 +248,7 @@ if __name__ == '__main__': if live: run_algorithm( - capital_base=0.01, + capital_base=100, initialize=initialize, handle_data=handle_data, analyze=analyze, @@ -257,7 +257,7 @@ if __name__ == '__main__': algo_namespace=NAMESPACE, base_currency='btc', live_graph=False, - simulate_orders=False, + simulate_orders=True, stats_output=None, # auth_aliases=dict(poloniex='auth2') ) diff --git a/catalyst/exchange/ccxt/ccxt_exchange.py b/catalyst/exchange/ccxt/ccxt_exchange.py index 1579aaa9..5f330b9c 100644 --- a/catalyst/exchange/ccxt/ccxt_exchange.py +++ b/catalyst/exchange/ccxt/ccxt_exchange.py @@ -760,25 +760,24 @@ class CCXT(Exchange): side = 'buy' if amount > 0 else 'sell' if hasattr(self.api, 'amount_to_lots'): - adj_amount = self.api.amount_to_lots( - symbol=symbol, - amount=abs(amount), - ) - if adj_amount != abs(amount): - log.info( - 'adjusted order amount {} to {} based on lot size'.format( - abs(amount), adj_amount, + # TODO: is this right? + if self.api.markets is None: + self.api.load_markets() + + # https://github.com/ccxt/ccxt/issues/1483 + adj_amount = abs(amount) + market = self.api.markets[symbol] + if 'lots' in market and market['lots'] > amount: + raise CreateOrderError( + exchange=self.name, + e='order amount lower than the smallest lot: {}'.format( + amount ) ) + else: adj_amount = abs(amount) - if adj_amount == 0: - raise CreateOrderError( - exchange=self.name, - e='order amount lower than the smallest lot: {}'.format(amount) - ) - try: result = self.api.create_order( symbol=symbol, diff --git a/etc/requirements.txt b/etc/requirements.txt index b3f17d0e..8138f6c3 100644 --- a/etc/requirements.txt +++ b/etc/requirements.txt @@ -81,6 +81,6 @@ empyrical==0.2.1 tables==3.3.0 #Catalyst dependencies -ccxt==1.10.774 +ccxt==1.10.837 boto3==1.4.8 redo==1.6 diff --git a/tests/exchange/test_ccxt.py b/tests/exchange/test_ccxt.py index 8bffe616..4e33ae3e 100644 --- a/tests/exchange/test_ccxt.py +++ b/tests/exchange/test_ccxt.py @@ -15,23 +15,23 @@ log = Logger('test_ccxt') class TestCCXT(BaseExchangeTestCase): @classmethod def setup(self): - exchange_name = 'bitfinex' + exchange_name = 'binance' auth = get_exchange_auth(exchange_name) self.exchange = CCXT( exchange_name=exchange_name, key=auth['key'], secret=auth['secret'], - base_currency='bnb', + base_currency='usdt', ) self.exchange.init() def test_order(self): log.info('creating order') - asset = self.exchange.get_asset('neo_bnb') + asset = self.exchange.get_asset('eth_usdt') order_id = self.exchange.order( asset=asset, - style=ExchangeLimitOrder(limit_price=10), - amount=1, + style=ExchangeLimitOrder(limit_price=1000), + amount=1.01, ) log.info('order created {}'.format(order_id)) assert order_id is not None