diff --git a/config.json.example b/config.json.example index 231ecee14..03d291f4e 100644 --- a/config.json.example +++ b/config.json.example @@ -9,7 +9,7 @@ "ask_last_balance": 0.0 }, "exchange": { - "name": "bittrex", + "name": "binance", "key": "your_echange_key", "secret": "your_echange_secret", "pair_whitelist": [ diff --git a/freqtrade/main.py b/freqtrade/main.py index 700d8f5d9..0bf988fa2 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -429,7 +429,7 @@ def create_trade(stake_amount: float, interval: int) -> bool: fee=exchange.get_fee(), open_rate=buy_limit, open_date=datetime.utcnow(), - exchange=exchange.get_name().upper(), + exchange=exchange.get_name().lower(), open_order_id=order_id ) Trade.session.add(trade) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 107d13a25..286ca5df3 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -3,6 +3,7 @@ import logging from typing import Dict, Tuple +import ccxt import arrow from pandas import DataFrame, Series from tabulate import tabulate @@ -113,7 +114,7 @@ def backtest(args) -> DataFrame: records = [] trades = [] trade_count_lock: dict = {} - exchange._API = Bittrex({'key': '', 'secret': ''}) + exchange._API = ccxt.binance() for pair, pair_data in processed.items(): pair_data['buy'], pair_data['sell'] = 0, 0 ticker = populate_sell_trend(populate_buy_trend(pair_data)) @@ -164,7 +165,7 @@ def start(args): format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', ) - exchange._API = Bittrex({'key': '', 'secret': ''}) + exchange._API = ccxt.binance() logger.info('Using config: %s ...', args.config) config = misc.load_config(args.config) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 8eefb13c6..67ddae37b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -17,6 +17,7 @@ import talib.abstract as ta from hyperopt import STATUS_FAIL, STATUS_OK, Trials, fmin, hp, space_eval, tpe from hyperopt.mongoexp import MongoTrials from pandas import DataFrame +import ccxt import freqtrade.vendor.qtpylib.indicators as qtpylib # Monkey patch config @@ -448,7 +449,7 @@ def start(args): TOTAL_TRIES = args.epochs - exchange._API = Bittrex({'key': '', 'secret': ''}) + exchange._API = ccxt.binance() # Initialize logger logging.basicConfig( diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 6b888374f..612f1830f 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -44,7 +44,7 @@ def default_conf(): "ask_last_balance": 0.0 }, "exchange": { - "name": "bittrex", + "name": "binance", "enabled": True, "key": "key", "secret": "secret", diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 06ea3d164..9d1b284e9 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -272,10 +272,10 @@ def test_get_order(default_conf, mocker): def test_get_name(default_conf, mocker): mocker.patch('freqtrade.exchange.validate_pairs', side_effect=lambda s: True) - default_conf['exchange']['name'] = 'bittrex' + default_conf['exchange']['name'] = 'binance' init(default_conf) - assert get_name() == 'Bittrex' + assert get_name() == 'Binance' def test_get_fee(default_conf, mocker): diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/freqtrade/tests/rpc/test_rpc_telegram.py index 53e6ec88b..930f558ec 100644 --- a/freqtrade/tests/rpc/test_rpc_telegram.py +++ b/freqtrade/tests/rpc/test_rpc_telegram.py @@ -296,7 +296,7 @@ def test_exec_forcesell_open_orders(default_conf, ticker, mocker): trade = Trade( pair='ETH/BTC', open_rate=1, - exchange='BITTREX', + exchange='binance', open_order_id='123456789', amount=1, fee=0.0, diff --git a/freqtrade/tests/test_acl_pair.py b/freqtrade/tests/test_acl_pair.py index d5772f495..f847f27b4 100644 --- a/freqtrade/tests/test_acl_pair.py +++ b/freqtrade/tests/test_acl_pair.py @@ -74,13 +74,13 @@ def get_market_summaries(): }] -def get_health(): - return [{'Currency': 'ETH', 'IsActive': True}, - {'Currency': 'TKN', 'IsActive': True}, - {'Currency': 'BLK', 'IsActive': True}] +def get_markets(): + return [{'symbol': 'ETH/BTC', 'base': 'ETH', 'quote':'BTC', 'active': True}, + {'symbol': 'TKN/BTC', 'base': 'TKN', 'quote':'BTC', 'active': True}, + {'symbol': 'BLK/BTC', 'base': 'BLK', 'quote':'BTC', 'active': True}] -def get_health_empty(): +def get_markets_empty(): return [] @@ -88,7 +88,7 @@ def test_refresh_market_pair_not_in_whitelist(mocker): conf = whitelist_conf() mocker.patch.dict('freqtrade.main._CONF', conf) mocker.patch.multiple('freqtrade.main.exchange', - get_wallet_health=get_health) + get_markets=get_markets) refreshedwhitelist = refresh_whitelist( conf['exchange']['pair_whitelist'] + ['XXX/BTC']) # List ordered by BaseVolume @@ -101,7 +101,7 @@ def test_refresh_whitelist(mocker): conf = whitelist_conf() mocker.patch.dict('freqtrade.main._CONF', conf) mocker.patch.multiple('freqtrade.main.exchange', - get_wallet_health=get_health) + get_markets=get_markets) refreshedwhitelist = refresh_whitelist(conf['exchange']['pair_whitelist']) # List ordered by BaseVolume whitelist = ['ETH/BTC', 'TKN/BTC'] @@ -113,7 +113,7 @@ def test_refresh_whitelist_dynamic(mocker): conf = whitelist_conf() mocker.patch.dict('freqtrade.main._CONF', conf) mocker.patch.multiple('freqtrade.main.exchange', - get_wallet_health=get_health) + get_markets=get_markets) mocker.patch.multiple('freqtrade.main.exchange', get_market_summaries=get_market_summaries) # argument: use the whitelist dynamically by exchange-volume @@ -127,7 +127,7 @@ def test_refresh_whitelist_dynamic_empty(mocker): conf = whitelist_conf() mocker.patch.dict('freqtrade.main._CONF', conf) mocker.patch.multiple('freqtrade.main.exchange', - get_wallet_health=get_health_empty) + get_markets=get_markets_empty) # argument: use the whitelist dynamically by exchange-volume whitelist = [] conf['exchange']['pair_whitelist'] = [] diff --git a/freqtrade/tests/test_main.py b/freqtrade/tests/test_main.py index 94506e7e2..c941e9f95 100644 --- a/freqtrade/tests/test_main.py +++ b/freqtrade/tests/test_main.py @@ -1,6 +1,7 @@ # pragma pylint: disable=missing-docstring, C0103 import copy import logging +import ccxt from unittest.mock import MagicMock import arrow @@ -81,7 +82,7 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, health, m mocker.patch.multiple('freqtrade.main.exchange', validate_pairs=MagicMock(), get_ticker=ticker, - get_wallet_health=health, + #get_wallet_health=health, buy=MagicMock(return_value='mocked_limit_buy'), get_order=MagicMock(return_value=limit_buy_order)) init(default_conf, create_engine('sqlite://')) @@ -99,7 +100,7 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, health, m assert trade.stake_amount == default_conf['stake_amount'] assert trade.is_open assert trade.open_date is not None - assert trade.exchange == Exchanges.BITTREX.name + assert trade.exchange == 'binance' assert trade.open_rate == 0.00001099 assert trade.amount == 90.99181073703367 @@ -112,7 +113,7 @@ def test_process_exchange_failures(default_conf, ticker, health, mocker): mocker.patch.multiple('freqtrade.main.exchange', validate_pairs=MagicMock(), get_ticker=ticker, - get_wallet_health=health, + #get_wallet_health=health, buy=MagicMock(side_effect=requests.exceptions.RequestException)) init(default_conf, create_engine('sqlite://')) result = _process(interval=int(default_conf['ticker_interval'])) @@ -128,7 +129,7 @@ def test_process_operational_exception(default_conf, ticker, health, mocker): mocker.patch.multiple('freqtrade.main.exchange', validate_pairs=MagicMock(), get_ticker=ticker, - get_wallet_health=health, + #get_wallet_health=health, buy=MagicMock(side_effect=OperationalException)) init(default_conf, create_engine('sqlite://')) assert get_state() == State.RUNNING @@ -146,7 +147,7 @@ def test_process_trade_handling(default_conf, ticker, limit_buy_order, health, m mocker.patch.multiple('freqtrade.main.exchange', validate_pairs=MagicMock(), get_ticker=ticker, - get_wallet_health=health, + #get_wallet_health=health, buy=MagicMock(return_value='mocked_limit_buy'), get_order=MagicMock(return_value=limit_buy_order)) init(default_conf, create_engine('sqlite://')) @@ -181,7 +182,7 @@ def test_create_trade(default_conf, ticker, limit_buy_order, mocker): assert trade.stake_amount == 0.001 assert trade.is_open assert trade.open_date is not None - assert trade.exchange == Exchanges.BITTREX.name + assert trade.exchange == 'binance' # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -455,7 +456,7 @@ def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, mo trade_buy = Trade( pair='ETH/BTC', open_rate=0.00001099, - exchange='BITTREX', + exchange='binance', open_order_id='123456789', amount=90.99181073, fee=0.0, @@ -504,7 +505,7 @@ def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, trade_sell = Trade( pair='ETH/BTC', open_rate=0.00001099, - exchange='BITTREX', + exchange='binance', open_order_id='123456789', amount=90.99181073, fee=0.0, @@ -553,7 +554,7 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old trade_buy = Trade( pair='ETH/BTC', open_rate=0.00001099, - exchange='BITTREX', + exchange='binance', open_order_id='123456789', amount=90.99181073, fee=0.0, diff --git a/freqtrade/tests/test_persistence.py b/freqtrade/tests/test_persistence.py index 5d882901b..ef4c60341 100644 --- a/freqtrade/tests/test_persistence.py +++ b/freqtrade/tests/test_persistence.py @@ -320,7 +320,7 @@ def test_clean_dry_run_db(default_conf): amount=123.0, fee=0.0025, open_rate=0.123, - exchange='BITTREX', + exchange='binance', open_order_id='dry_run_buy_12345' ) Trade.session.add(trade) @@ -331,7 +331,7 @@ def test_clean_dry_run_db(default_conf): amount=123.0, fee=0.0025, open_rate=0.123, - exchange='BITTREX', + exchange='binance', open_order_id='dry_run_sell_12345' ) Trade.session.add(trade) @@ -343,7 +343,7 @@ def test_clean_dry_run_db(default_conf): amount=123.0, fee=0.0025, open_rate=0.123, - exchange='BITTREX', + exchange='binance', open_order_id='prod_buy_12345' ) Trade.session.add(trade) diff --git a/freqtrade/tests/testdata/download_backtest_data.py b/freqtrade/tests/testdata/download_backtest_data.py index 631ba13aa..6bb1f6bf8 100755 --- a/freqtrade/tests/testdata/download_backtest_data.py +++ b/freqtrade/tests/testdata/download_backtest_data.py @@ -3,9 +3,9 @@ """This script generate json data from bittrex""" import sys import json +import ccxt from freqtrade import exchange -from freqtrade.exchange import Bittrex from freqtrade import misc parser = misc.common_args_parser('download utility') @@ -28,7 +28,7 @@ PAIRS = list(set(PAIRS)) print('About to download pairs:', PAIRS) # Init Bittrex exchange -exchange._API = Bittrex({'key': '', 'secret': ''}) +exchange._API = ccxt.bittrex() for pair in PAIRS: for tick_interval in TICKER_INTERVALS: