Added Method for accessing current pair list on initialization for dynamic informative pairs
moved import into function to avoid circular import with hyperopt
This commit is contained in:
parent
20c3d6644c
commit
bc9efc31ad
@ -116,3 +116,17 @@ class DataProvider:
|
|||||||
can be "live", "dry-run", "backtest", "edgecli", "hyperopt" or "other".
|
can be "live", "dry-run", "backtest", "edgecli", "hyperopt" or "other".
|
||||||
"""
|
"""
|
||||||
return RunMode(self._config.get('runmode', RunMode.OTHER))
|
return RunMode(self._config.get('runmode', RunMode.OTHER))
|
||||||
|
|
||||||
|
def current_whitelist(self) -> List[str]:
|
||||||
|
"""
|
||||||
|
fetch latest available whitelist.
|
||||||
|
|
||||||
|
Useful when you have a large whitelist and need to call each pair as an informative pair.
|
||||||
|
As available pairs does not show whitelist until after informative pairs have been cached.
|
||||||
|
:return: list of pairs in whitelist
|
||||||
|
"""
|
||||||
|
from freqtrade.pairlist.pairlistmanager import PairListManager
|
||||||
|
|
||||||
|
pairlists = PairListManager(self._exchange, self._config)
|
||||||
|
pairlists.refresh_pairlist()
|
||||||
|
return pairlists.whitelist
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock, PropertyMock
|
||||||
|
|
||||||
from pandas import DataFrame
|
from pandas import DataFrame
|
||||||
|
|
||||||
from freqtrade.data.dataprovider import DataProvider
|
from freqtrade.data.dataprovider import DataProvider
|
||||||
from freqtrade.state import RunMode
|
from freqtrade.state import RunMode
|
||||||
from tests.conftest import get_patched_exchange
|
from tests.conftest import get_patched_exchange, get_patched_freqtradebot
|
||||||
|
|
||||||
|
|
||||||
def test_ohlcv(mocker, default_conf, ohlcv_history):
|
def test_ohlcv(mocker, default_conf, ohlcv_history):
|
||||||
@ -64,8 +64,8 @@ def test_get_pair_dataframe(mocker, default_conf, ohlcv_history):
|
|||||||
assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty
|
assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty
|
||||||
|
|
||||||
# Test with and without parameter
|
# Test with and without parameter
|
||||||
assert dp.get_pair_dataframe("UNITTEST/BTC",
|
assert dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)\
|
||||||
ticker_interval).equals(dp.get_pair_dataframe("UNITTEST/BTC"))
|
.equals(dp.get_pair_dataframe("UNITTEST/BTC"))
|
||||||
|
|
||||||
default_conf["runmode"] = RunMode.LIVE
|
default_conf["runmode"] = RunMode.LIVE
|
||||||
dp = DataProvider(default_conf, exchange)
|
dp = DataProvider(default_conf, exchange)
|
||||||
@ -90,10 +90,7 @@ def test_available_pairs(mocker, default_conf, ohlcv_history):
|
|||||||
|
|
||||||
dp = DataProvider(default_conf, exchange)
|
dp = DataProvider(default_conf, exchange)
|
||||||
assert len(dp.available_pairs) == 2
|
assert len(dp.available_pairs) == 2
|
||||||
assert dp.available_pairs == [
|
assert dp.available_pairs == [("XRP/BTC", ticker_interval), ("UNITTEST/BTC", ticker_interval), ]
|
||||||
("XRP/BTC", ticker_interval),
|
|
||||||
("UNITTEST/BTC", ticker_interval),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_refresh(mocker, default_conf, ohlcv_history):
|
def test_refresh(mocker, default_conf, ohlcv_history):
|
||||||
@ -152,3 +149,23 @@ def test_market(mocker, default_conf, markets):
|
|||||||
|
|
||||||
res = dp.market('UNITTEST/BTC')
|
res = dp.market('UNITTEST/BTC')
|
||||||
assert res is None
|
assert res is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_current_whitelist(mocker, shitcoinmarkets, tickers, default_conf):
|
||||||
|
default_conf.update(
|
||||||
|
{"pairlists": [{"method": "VolumePairList",
|
||||||
|
"number_assets": 10,
|
||||||
|
"sort_key": "quoteVolume"}], }, )
|
||||||
|
default_conf['exchange']['pair_blacklist'] = ['BLK/BTC']
|
||||||
|
|
||||||
|
mocker.patch.multiple('freqtrade.exchange.Exchange', get_tickers=tickers,
|
||||||
|
exchange_has=MagicMock(return_value=True), )
|
||||||
|
bot = get_patched_freqtradebot(mocker, default_conf)
|
||||||
|
# Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture
|
||||||
|
mocker.patch.multiple('freqtrade.exchange.Exchange',
|
||||||
|
markets=PropertyMock(return_value=shitcoinmarkets), )
|
||||||
|
# argument: use the whitelist dynamically by exchange-volume
|
||||||
|
whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC', 'FUEL/BTC']
|
||||||
|
|
||||||
|
current_wl = bot.dataprovider.current_whitelist()
|
||||||
|
assert whitelist == current_wl
|
||||||
|
Loading…
Reference in New Issue
Block a user