Update pairlists to use *args **kwargs init

This commit is contained in:
Matthias
2024-06-09 08:54:48 +02:00
parent 29e23dfdb9
commit f314607bb6
14 changed files with 44 additions and 151 deletions
+4 -11
View File
@@ -5,11 +5,11 @@ Minimum age (days listed) pair list filter
import logging import logging
from copy import deepcopy from copy import deepcopy
from datetime import timedelta from datetime import timedelta
from typing import Any, Dict, List, Optional from typing import Dict, List, Optional
from pandas import DataFrame from pandas import DataFrame
from freqtrade.constants import Config, ListPairsWithTimeframes from freqtrade.constants import ListPairsWithTimeframes
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.misc import plural from freqtrade.misc import plural
@@ -21,15 +21,8 @@ logger = logging.getLogger(__name__)
class AgeFilter(IPairList): class AgeFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
# Checked symbols cache (dictionary of ticker symbol => timestamp) # Checked symbols cache (dictionary of ticker symbol => timestamp)
self._symbolsChecked: Dict[str, int] = {} self._symbolsChecked: Dict[str, int] = {}
@@ -5,11 +5,10 @@ Provides dynamic pair list based on Market Cap
""" """
import logging import logging
from typing import Any, Dict, List from typing import Dict, List
from cachetools import TTLCache from cachetools import TTLCache
from freqtrade.constants import Config
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
@@ -22,15 +21,8 @@ logger = logging.getLogger(__name__)
class MarketCapPairList(IPairList): class MarketCapPairList(IPairList):
is_pairlist_generator = True is_pairlist_generator = True
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
if "number_assets" not in self._pairlistconfig: if "number_assets" not in self._pairlistconfig:
raise OperationalException( raise OperationalException(
+3 -11
View File
@@ -3,9 +3,8 @@ Offset pair list filter
""" """
import logging import logging
from typing import Any, Dict, List from typing import Dict, List
from freqtrade.constants import Config
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
@@ -15,15 +14,8 @@ logger = logging.getLogger(__name__)
class OffsetFilter(IPairList): class OffsetFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._offset = self._pairlistconfig.get("offset", 0) self._offset = self._pairlistconfig.get("offset", 0)
self._number_pairs = self._pairlistconfig.get("number_assets", 0) self._number_pairs = self._pairlistconfig.get("number_assets", 0)
@@ -3,11 +3,10 @@ Performance pair list filter
""" """
import logging import logging
from typing import Any, Dict, List from typing import Dict, List
import pandas as pd import pandas as pd
from freqtrade.constants import Config
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.persistence import Trade from freqtrade.persistence import Trade
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
@@ -17,15 +16,8 @@ logger = logging.getLogger(__name__)
class PerformanceFilter(IPairList): class PerformanceFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._minutes = self._pairlistconfig.get("minutes", 0) self._minutes = self._pairlistconfig.get("minutes", 0)
self._min_profit = self._pairlistconfig.get("min_profit") self._min_profit = self._pairlistconfig.get("min_profit")
+3 -11
View File
@@ -3,9 +3,8 @@ Precision pair list filter
""" """
import logging import logging
from typing import Any, Dict, Optional from typing import Optional
from freqtrade.constants import Config
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange import ROUND_UP from freqtrade.exchange import ROUND_UP
from freqtrade.exchange.types import Ticker from freqtrade.exchange.types import Ticker
@@ -16,15 +15,8 @@ logger = logging.getLogger(__name__)
class PrecisionFilter(IPairList): class PrecisionFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
if "stoploss" not in self._config: if "stoploss" not in self._config:
raise OperationalException( raise OperationalException(
+3 -11
View File
@@ -3,9 +3,8 @@ Price pair list filter
""" """
import logging import logging
from typing import Any, Dict, Optional from typing import Dict, Optional
from freqtrade.constants import Config
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Ticker from freqtrade.exchange.types import Ticker
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
@@ -15,15 +14,8 @@ logger = logging.getLogger(__name__)
class PriceFilter(IPairList): class PriceFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._low_price_ratio = self._pairlistconfig.get("low_price_ratio", 0) self._low_price_ratio = self._pairlistconfig.get("low_price_ratio", 0)
if self._low_price_ratio < 0: if self._low_price_ratio < 0:
+3 -10
View File
@@ -5,7 +5,7 @@ Provides pair list from Leader data
""" """
import logging import logging
from typing import Any, Dict, List, Optional from typing import Dict, List, Optional
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
@@ -32,15 +32,8 @@ class ProducerPairList(IPairList):
is_pairlist_generator = True is_pairlist_generator = True
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Dict[str, Any],
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._num_assets: int = self._pairlistconfig.get("number_assets", 0) self._num_assets: int = self._pairlistconfig.get("number_assets", 0)
self._producer_name = self._pairlistconfig.get("producer_name", "default") self._producer_name = self._pairlistconfig.get("producer_name", "default")
+2 -10
View File
@@ -14,7 +14,6 @@ from cachetools import TTLCache
from freqtrade import __version__ from freqtrade import __version__
from freqtrade.configuration.load_config import CONFIG_PARSE_MODE from freqtrade.configuration.load_config import CONFIG_PARSE_MODE
from freqtrade.constants import Config
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
@@ -27,15 +26,8 @@ logger = logging.getLogger(__name__)
class RemotePairList(IPairList): class RemotePairList(IPairList):
is_pairlist_generator = True is_pairlist_generator = True
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
if "number_assets" not in self._pairlistconfig: if "number_assets" not in self._pairlistconfig:
raise OperationalException( raise OperationalException(
+3 -11
View File
@@ -4,9 +4,8 @@ Shuffle pair list filter
import logging import logging
import random import random
from typing import Any, Dict, List, Literal from typing import Dict, List, Literal
from freqtrade.constants import Config
from freqtrade.enums import RunMode from freqtrade.enums import RunMode
from freqtrade.exchange import timeframe_to_seconds from freqtrade.exchange import timeframe_to_seconds
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
@@ -20,15 +19,8 @@ ShuffleValues = Literal["candle", "iteration"]
class ShuffleFilter(IPairList): class ShuffleFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
# Apply seed in backtesting mode to get comparable results, # Apply seed in backtesting mode to get comparable results,
# but not in live modes to get a non-repeating order of pairs during live modes. # but not in live modes to get a non-repeating order of pairs during live modes.
+3 -11
View File
@@ -3,9 +3,8 @@ Spread pair list filter
""" """
import logging import logging
from typing import Any, Dict, Optional from typing import Dict, Optional
from freqtrade.constants import Config
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Ticker from freqtrade.exchange.types import Ticker
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
@@ -15,15 +14,8 @@ logger = logging.getLogger(__name__)
class SpreadFilter(IPairList): class SpreadFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._max_spread_ratio = self._pairlistconfig.get("max_spread_ratio", 0.005) self._max_spread_ratio = self._pairlistconfig.get("max_spread_ratio", 0.005)
self._enabled = self._max_spread_ratio != 0 self._enabled = self._max_spread_ratio != 0
+3 -11
View File
@@ -6,9 +6,8 @@ Provides pair white list as it configured in config
import logging import logging
from copy import deepcopy from copy import deepcopy
from typing import Any, Dict, List from typing import Dict, List
from freqtrade.constants import Config
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
@@ -19,15 +18,8 @@ logger = logging.getLogger(__name__)
class StaticPairList(IPairList): class StaticPairList(IPairList):
is_pairlist_generator = True is_pairlist_generator = True
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._allow_inactive = self._pairlistconfig.get("allow_inactive", False) self._allow_inactive = self._pairlistconfig.get("allow_inactive", False)
+4 -11
View File
@@ -5,13 +5,13 @@ Volatility pairlist filter
import logging import logging
import sys import sys
from datetime import timedelta from datetime import timedelta
from typing import Any, Dict, List, Optional from typing import Dict, List, Optional
import numpy as np import numpy as np
from cachetools import TTLCache from cachetools import TTLCache
from pandas import DataFrame from pandas import DataFrame
from freqtrade.constants import Config, ListPairsWithTimeframes from freqtrade.constants import ListPairsWithTimeframes
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.misc import plural from freqtrade.misc import plural
@@ -27,15 +27,8 @@ class VolatilityFilter(IPairList):
Filters pairs by volatility Filters pairs by volatility
""" """
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._days = self._pairlistconfig.get("lookback_days", 10) self._days = self._pairlistconfig.get("lookback_days", 10)
self._min_volatility = self._pairlistconfig.get("min_volatility", 0) self._min_volatility = self._pairlistconfig.get("min_volatility", 0)
+3 -10
View File
@@ -10,7 +10,7 @@ from typing import Any, Dict, List, Literal
from cachetools import TTLCache from cachetools import TTLCache
from freqtrade.constants import Config, ListPairsWithTimeframes from freqtrade.constants import ListPairsWithTimeframes
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange import timeframe_to_minutes, timeframe_to_prev_date from freqtrade.exchange import timeframe_to_minutes, timeframe_to_prev_date
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
@@ -27,15 +27,8 @@ SORT_VALUES = ["quoteVolume"]
class VolumePairList(IPairList): class VolumePairList(IPairList):
is_pairlist_generator = True is_pairlist_generator = True
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
if "number_assets" not in self._pairlistconfig: if "number_assets" not in self._pairlistconfig:
raise OperationalException( raise OperationalException(
@@ -4,12 +4,12 @@ Rate of change pairlist filter
import logging import logging
from datetime import timedelta from datetime import timedelta
from typing import Any, Dict, List, Optional from typing import Dict, List, Optional
from cachetools import TTLCache from cachetools import TTLCache
from pandas import DataFrame from pandas import DataFrame
from freqtrade.constants import Config, ListPairsWithTimeframes from freqtrade.constants import ListPairsWithTimeframes
from freqtrade.exceptions import OperationalException from freqtrade.exceptions import OperationalException
from freqtrade.exchange.types import Tickers from freqtrade.exchange.types import Tickers
from freqtrade.misc import plural from freqtrade.misc import plural
@@ -21,15 +21,8 @@ logger = logging.getLogger(__name__)
class RangeStabilityFilter(IPairList): class RangeStabilityFilter(IPairList):
def __init__( def __init__(self, *args, **kwargs) -> None:
self, super().__init__(*args, **kwargs)
exchange,
pairlistmanager,
config: Config,
pairlistconfig: Dict[str, Any],
pairlist_pos: int,
) -> None:
super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
self._days = self._pairlistconfig.get("lookback_days", 10) self._days = self._pairlistconfig.get("lookback_days", 10)
self._min_rate_of_change = self._pairlistconfig.get("min_rate_of_change", 0.01) self._min_rate_of_change = self._pairlistconfig.get("min_rate_of_change", 0.01)