Merge pull request #3616 from freqtrade/fix/pairfilter
Fix pairfilter crash
This commit is contained in:
commit
dbf4d1a694
@ -56,7 +56,7 @@ class PriceFilter(IPairList):
|
|||||||
:param ticker: ticker dict as returned from ccxt.load_markets()
|
:param ticker: ticker dict as returned from ccxt.load_markets()
|
||||||
:return: True if the pair can stay, false if it should be removed
|
:return: True if the pair can stay, false if it should be removed
|
||||||
"""
|
"""
|
||||||
if ticker['last'] is None:
|
if ticker['last'] is None or ticker['last'] == 0:
|
||||||
self.log_on_refresh(logger.info,
|
self.log_on_refresh(logger.info,
|
||||||
f"Removed {ticker['symbol']} from whitelist, because "
|
f"Removed {ticker['symbol']} from whitelist, because "
|
||||||
"ticker['last'] is empty (Usually no trade in the last 24h).")
|
"ticker['last'] is empty (Usually no trade in the last 24h).")
|
||||||
|
@ -661,7 +661,8 @@ def shitcoinmarkets(markets):
|
|||||||
Fixture with shitcoin markets - used to test filters in pairlists
|
Fixture with shitcoin markets - used to test filters in pairlists
|
||||||
"""
|
"""
|
||||||
shitmarkets = deepcopy(markets)
|
shitmarkets = deepcopy(markets)
|
||||||
shitmarkets.update({'HOT/BTC': {
|
shitmarkets.update({
|
||||||
|
'HOT/BTC': {
|
||||||
'id': 'HOTBTC',
|
'id': 'HOTBTC',
|
||||||
'symbol': 'HOT/BTC',
|
'symbol': 'HOT/BTC',
|
||||||
'base': 'HOT',
|
'base': 'HOT',
|
||||||
@ -766,7 +767,32 @@ def shitcoinmarkets(markets):
|
|||||||
"spot": True,
|
"spot": True,
|
||||||
"future": False,
|
"future": False,
|
||||||
"active": True
|
"active": True
|
||||||
},
|
},
|
||||||
|
'ADADOUBLE/USDT': {
|
||||||
|
"percentage": True,
|
||||||
|
"tierBased": False,
|
||||||
|
"taker": 0.001,
|
||||||
|
"maker": 0.001,
|
||||||
|
"precision": {
|
||||||
|
"base": 8,
|
||||||
|
"quote": 8,
|
||||||
|
"amount": 2,
|
||||||
|
"price": 4
|
||||||
|
},
|
||||||
|
"limits": {
|
||||||
|
},
|
||||||
|
"id": "ADADOUBLEUSDT",
|
||||||
|
"symbol": "ADADOUBLE/USDT",
|
||||||
|
"base": "ADADOUBLE",
|
||||||
|
"quote": "USDT",
|
||||||
|
"baseId": "ADADOUBLE",
|
||||||
|
"quoteId": "USDT",
|
||||||
|
"info": {},
|
||||||
|
"type": "spot",
|
||||||
|
"spot": True,
|
||||||
|
"future": False,
|
||||||
|
"active": True
|
||||||
|
},
|
||||||
})
|
})
|
||||||
return shitmarkets
|
return shitmarkets
|
||||||
|
|
||||||
@ -1388,6 +1414,28 @@ def tickers():
|
|||||||
"quoteVolume": 0.0,
|
"quoteVolume": 0.0,
|
||||||
"info": {}
|
"info": {}
|
||||||
},
|
},
|
||||||
|
"ADADOUBLE/USDT": {
|
||||||
|
"symbol": "ADADOUBLE/USDT",
|
||||||
|
"timestamp": 1580469388244,
|
||||||
|
"datetime": "2020-01-31T11:16:28.244Z",
|
||||||
|
"high": None,
|
||||||
|
"low": None,
|
||||||
|
"bid": 0.7305,
|
||||||
|
"bidVolume": None,
|
||||||
|
"ask": 0.7342,
|
||||||
|
"askVolume": None,
|
||||||
|
"vwap": None,
|
||||||
|
"open": None,
|
||||||
|
"close": None,
|
||||||
|
"last": 0,
|
||||||
|
"previousClose": None,
|
||||||
|
"change": None,
|
||||||
|
"percentage": 2.628,
|
||||||
|
"average": None,
|
||||||
|
"baseVolume": 0.0,
|
||||||
|
"quoteVolume": 0.0,
|
||||||
|
"info": {}
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf):
|
|||||||
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}],
|
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}],
|
||||||
"BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']),
|
"BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']),
|
||||||
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}],
|
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}],
|
||||||
"USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']),
|
"USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT', 'ADADOUBLE/USDT']),
|
||||||
# No pair for ETH, VolumePairList
|
# No pair for ETH, VolumePairList
|
||||||
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}],
|
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}],
|
||||||
"ETH", []),
|
"ETH", []),
|
||||||
@ -303,11 +303,11 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf):
|
|||||||
# ShuffleFilter
|
# ShuffleFilter
|
||||||
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"},
|
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"},
|
||||||
{"method": "ShuffleFilter", "seed": 77}],
|
{"method": "ShuffleFilter", "seed": 77}],
|
||||||
"USDT", ['ETH/USDT', 'ADAHALF/USDT', 'NANO/USDT']),
|
"USDT", ['ADADOUBLE/USDT', 'ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']),
|
||||||
# ShuffleFilter, other seed
|
# ShuffleFilter, other seed
|
||||||
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"},
|
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"},
|
||||||
{"method": "ShuffleFilter", "seed": 42}],
|
{"method": "ShuffleFilter", "seed": 42}],
|
||||||
"USDT", ['NANO/USDT', 'ETH/USDT', 'ADAHALF/USDT']),
|
"USDT", ['ADAHALF/USDT', 'NANO/USDT', 'ADADOUBLE/USDT', 'ETH/USDT']),
|
||||||
# ShuffleFilter, no seed
|
# ShuffleFilter, no seed
|
||||||
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"},
|
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"},
|
||||||
{"method": "ShuffleFilter"}],
|
{"method": "ShuffleFilter"}],
|
||||||
@ -347,6 +347,9 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf):
|
|||||||
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"},
|
([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"},
|
||||||
{"method": "StaticPairList"}],
|
{"method": "StaticPairList"}],
|
||||||
"BTC", 'static_in_the_middle'),
|
"BTC", 'static_in_the_middle'),
|
||||||
|
([{"method": "VolumePairList", "number_assets": 20, "sort_key": "quoteVolume"},
|
||||||
|
{"method": "PriceFilter", "low_price_ratio": 0.02}],
|
||||||
|
"USDT", ['ETH/USDT', 'NANO/USDT']),
|
||||||
])
|
])
|
||||||
def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers,
|
def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers,
|
||||||
ohlcv_history_list, pairlists, base_currency,
|
ohlcv_history_list, pairlists, base_currency,
|
||||||
|
Loading…
Reference in New Issue
Block a user