From 7d2395ddb7ada3c4e99e5de868cf143303771dd3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Dec 2020 11:44:50 +0100 Subject: [PATCH 1/4] Add limit parameter to fetch_ohlcv --- freqtrade/exchange/binance.py | 1 + freqtrade/exchange/exchange.py | 3 ++- freqtrade/exchange/kraken.py | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 099f282a2..26ec30a8a 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -18,6 +18,7 @@ class Binance(Exchange): _ft_has: Dict = { "stoploss_on_exchange": True, "order_time_in_force": ['gtc', 'fok', 'ioc'], + "ohlcv_candle_limit": 1000, "trades_pagination": "id", "trades_pagination_arg": "fromId", "l2_limit_range": [5, 10, 20, 50, 100, 500, 1000], diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 46c45b5e2..6f495e605 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -807,7 +807,8 @@ class Exchange: ) data = await self._api_async.fetch_ohlcv(pair, timeframe=timeframe, - since=since_ms) + since=since_ms, + limit=self._ohlcv_candle_limit) # Some exchanges sort OHLCV in ASC order and others in DESC. # Ex: Bittrex returns the list of OHLCV in ASC order (oldest first, newest last) diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 4e4713052..6dbb751e5 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -18,6 +18,7 @@ class Kraken(Exchange): _params: Dict = {"trading_agreement": "agree"} _ft_has: Dict = { "stoploss_on_exchange": True, + "ohlcv_candle_limit": 720, "trades_pagination": "id", "trades_pagination_arg": "since", } From bd0af1b300949c40f9b7c84c14af8ec55e6812f6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Dec 2020 19:38:12 +0100 Subject: [PATCH 2/4] Fix test warning --- tests/exchange/test_exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index d8a846124..a42ff52e4 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2153,7 +2153,7 @@ def test_get_fee(default_conf, mocker, exchange_name): def test_stoploss_order_unsupported_exchange(default_conf, mocker): - exchange = get_patched_exchange(mocker, default_conf, 'bittrex') + exchange = get_patched_exchange(mocker, default_conf, id='bittrex') with pytest.raises(OperationalException, match=r"stoploss is not implemented .*"): exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) From d7daa86434e5647f27f633e4dcc963f95605d739 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Dec 2020 19:59:46 +0100 Subject: [PATCH 3/4] Add bybit subclass --- freqtrade/exchange/__init__.py | 1 + freqtrade/exchange/bybit.py | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 freqtrade/exchange/bybit.py diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 5b58d7a95..15ba7b9f6 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -6,6 +6,7 @@ from freqtrade.exchange.exchange import Exchange from freqtrade.exchange.bibox import Bibox from freqtrade.exchange.binance import Binance from freqtrade.exchange.bittrex import Bittrex +from freqtrade.exchange.bybit import Bybit from freqtrade.exchange.exchange import (available_exchanges, ccxt_exchanges, get_exchange_bad_reason, is_exchange_bad, is_exchange_known_ccxt, is_exchange_officially_supported, diff --git a/freqtrade/exchange/bybit.py b/freqtrade/exchange/bybit.py new file mode 100644 index 000000000..4a44bb42d --- /dev/null +++ b/freqtrade/exchange/bybit.py @@ -0,0 +1,24 @@ +""" Bybit exchange subclass """ +import logging +from typing import Dict + +from freqtrade.exchange import Exchange + + +logger = logging.getLogger(__name__) + + +class Bybit(Exchange): + """ + Bybit exchange class. Contains adjustments needed for Freqtrade to work + with this exchange. + + Please note that this exchange is not included in the list of exchanges + officially supported by the Freqtrade development team. So some features + may still not work as expected. + """ + + # fetchCurrencies API point requires authentication for Bybit, + _ft_has: Dict = { + "ohlcv_candle_limit": 200, + } From 8d3f096a9758c46437c28ed3458546da2be93729 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Dec 2020 20:08:54 +0100 Subject: [PATCH 4/4] AgeFilter does not require tickers --- freqtrade/pairlist/AgeFilter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index cc61fd4c3..e3465bd82 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -42,7 +42,7 @@ class AgeFilter(IPairList): If no Pairlist requires tickers, an empty Dict is passed as tickers argument to filter_pairlist """ - return True + return False def short_desc(self) -> str: """