mirror of
https://github.com/freqtrade/freqtrade.git
synced 2024-11-10 18:23:55 +00:00
Add more filter param descriptions
This commit is contained in:
parent
4636de30cd
commit
e20b94d836
|
@ -7,7 +7,7 @@ from typing import Any, Dict, Optional
|
|||
from freqtrade.constants import Config
|
||||
from freqtrade.exceptions import OperationalException
|
||||
from freqtrade.exchange.types import Ticker
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -65,6 +65,36 @@ class PriceFilter(IPairList):
|
|||
|
||||
return f"{self.name} - No price filters configured."
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"low_price_ratio": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Low price ratio",
|
||||
"help": ("Remove pairs where a price move of 1 price unit (pip) "
|
||||
"is above this ratio."),
|
||||
},
|
||||
"min_price": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Minimum price",
|
||||
"help": "Remove pairs with a price below this value.",
|
||||
},
|
||||
"max_price": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Maximum price",
|
||||
"help": "Remove pairs with a price above this value.",
|
||||
},
|
||||
"max_value": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Maximum value",
|
||||
"help": "Remove pairs with a value (price * amount) above this value.",
|
||||
},
|
||||
}
|
||||
|
||||
def _validate_pair(self, pair: str, ticker: Optional[Ticker]) -> bool:
|
||||
"""
|
||||
Check if if one price-step (pip) is > than a certain barrier.
|
||||
|
|
|
@ -8,7 +8,7 @@ from typing import Any, Dict, List, Optional
|
|||
|
||||
from freqtrade.exceptions import OperationalException
|
||||
from freqtrade.exchange.types import Tickers
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -56,6 +56,24 @@ class ProducerPairList(IPairList):
|
|||
"""
|
||||
return f"{self.name} - {self._producer_name}"
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"number_assets": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of assets",
|
||||
"help": "Number of assets to use from the pairlist",
|
||||
},
|
||||
"producer_name": {
|
||||
"type": "string",
|
||||
"default": "default",
|
||||
"description": "Producer name",
|
||||
"help": ("Name of the producer to use. Requires additional "
|
||||
"external_message_consumer configuration.")
|
||||
},
|
||||
}
|
||||
|
||||
def _filter_pairlist(self, pairlist: Optional[List[str]]):
|
||||
upstream_pairlist = self._pairlistmanager._dataprovider.get_producer_pairs(
|
||||
self._producer_name)
|
||||
|
|
|
@ -15,7 +15,7 @@ from freqtrade import __version__
|
|||
from freqtrade.constants import Config
|
||||
from freqtrade.exceptions import OperationalException
|
||||
from freqtrade.exchange.types import Tickers
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -63,6 +63,42 @@ class RemotePairList(IPairList):
|
|||
"""
|
||||
return f"{self.name} - {self._pairlistconfig['number_assets']} pairs from RemotePairlist."
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"number_assets": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of assets",
|
||||
"help": "Number of assets to use from the pairlist.",
|
||||
},
|
||||
"pairlist_url": {
|
||||
"type": "string",
|
||||
"default": "",
|
||||
"description": "URL to fetch pairlist from",
|
||||
"help": "URL to fetch pairlist from",
|
||||
},
|
||||
**IPairList.refresh_period_parameter(),
|
||||
"keep_pairlist_on_failure": {
|
||||
"type": "boolean",
|
||||
"default": True,
|
||||
"description": "Keep last pairlist on failure",
|
||||
"help": "Keep last pairlist on failure",
|
||||
},
|
||||
"read_timeout": {
|
||||
"type": "number",
|
||||
"default": 60,
|
||||
"description": "Read timeout",
|
||||
"help": "Request timeout for remote pairlist",
|
||||
},
|
||||
"bearer_token": {
|
||||
"type": "string",
|
||||
"default": "",
|
||||
"description": "Bearer token",
|
||||
"help": "Bearer token - used for auth against the upstream service.",
|
||||
},
|
||||
}
|
||||
|
||||
def process_json(self, jsonparse) -> List[str]:
|
||||
|
||||
pairlist = jsonparse.get('pairs', [])
|
||||
|
|
|
@ -9,7 +9,7 @@ from freqtrade.constants import Config
|
|||
from freqtrade.enums import RunMode
|
||||
from freqtrade.exchange import timeframe_to_seconds
|
||||
from freqtrade.exchange.types import Tickers
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
from freqtrade.util.periodic_cache import PeriodicCache
|
||||
|
||||
|
||||
|
@ -55,6 +55,23 @@ class ShuffleFilter(IPairList):
|
|||
return (f"{self.name} - Shuffling pairs every {self._shuffle_freq}" +
|
||||
(f", seed = {self._seed}." if self._seed is not None else "."))
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"shuffle_frequency": {
|
||||
"type": "string",
|
||||
"default": "candle",
|
||||
"description": "Shuffle frequency",
|
||||
"help": "Shuffle frequency. Can be either 'candle' or 'iteration'.",
|
||||
},
|
||||
"seed": {
|
||||
"type": "number",
|
||||
"default": None,
|
||||
"description": "Random Seed",
|
||||
"help": "Seed for random number generator. Not used in live mode.",
|
||||
},
|
||||
}
|
||||
|
||||
def filter_pairlist(self, pairlist: List[str], tickers: Tickers) -> List[str]:
|
||||
"""
|
||||
Filters and sorts pairlist and returns the whitelist again.
|
||||
|
|
|
@ -7,7 +7,7 @@ from typing import Any, Dict, Optional
|
|||
from freqtrade.constants import Config
|
||||
from freqtrade.exceptions import OperationalException
|
||||
from freqtrade.exchange.types import Ticker
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -45,6 +45,17 @@ class SpreadFilter(IPairList):
|
|||
return (f"{self.name} - Filtering pairs with ask/bid diff above "
|
||||
f"{self._max_spread_ratio:.2%}.")
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"max_spread_ratio": {
|
||||
"type": "number",
|
||||
"default": 0.005,
|
||||
"description": "Max spread ratio",
|
||||
"help": "Max spread ratio for a pair to be considered.",
|
||||
},
|
||||
}
|
||||
|
||||
def _validate_pair(self, pair: str, ticker: Optional[Ticker]) -> bool:
|
||||
"""
|
||||
Validate spread for the ticker
|
||||
|
|
|
@ -15,7 +15,7 @@ from freqtrade.constants import Config, ListPairsWithTimeframes
|
|||
from freqtrade.exceptions import OperationalException
|
||||
from freqtrade.exchange.types import Tickers
|
||||
from freqtrade.misc import plural
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -63,6 +63,30 @@ class VolatilityFilter(IPairList):
|
|||
f"{self._min_volatility}-{self._max_volatility} "
|
||||
f" the last {self._days} {plural(self._days, 'day')}.")
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"lookback_days": {
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"description": "Lookback Days",
|
||||
"help": "Number of days to look back at.",
|
||||
},
|
||||
"min_volatility": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Minimum Volatility",
|
||||
"help": "Minimum volatility a pair must have to be considered.",
|
||||
},
|
||||
"max_volatility": {
|
||||
"type": "number",
|
||||
"default": None,
|
||||
"description": "Maximum Volatility",
|
||||
"help": "Maximum volatility a pair must have to be considered.",
|
||||
},
|
||||
**IPairList.refresh_period_parameter()
|
||||
}
|
||||
|
||||
def filter_pairlist(self, pairlist: List[str], tickers: Tickers) -> List[str]:
|
||||
"""
|
||||
Validate trading range
|
||||
|
|
|
@ -14,7 +14,7 @@ from freqtrade.exceptions import OperationalException
|
|||
from freqtrade.exchange import timeframe_to_minutes, timeframe_to_prev_date
|
||||
from freqtrade.exchange.types import Tickers
|
||||
from freqtrade.misc import format_ms_time
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -111,6 +111,48 @@ class VolumePairList(IPairList):
|
|||
"""
|
||||
return f"{self.name} - top {self._pairlistconfig['number_assets']} volume pairs."
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"number_assets": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Number of assets",
|
||||
"help": "Number of assets to use from the pairlist",
|
||||
},
|
||||
"sort_key": {
|
||||
"type": "string",
|
||||
"default": "quoteVolume",
|
||||
"description": "Sort key",
|
||||
"help": "Sort key to use for sorting the pairlist.",
|
||||
},
|
||||
"min_value": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Minimum value",
|
||||
"help": "Minimum value to use for filtering the pairlist.",
|
||||
},
|
||||
**IPairList.refresh_period_parameter(),
|
||||
"lookback_days": {
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"description": "Lookback Days",
|
||||
"help": "Number of days to look back at.",
|
||||
},
|
||||
"lookback_timeframe": {
|
||||
"type": "string",
|
||||
"default": "1d",
|
||||
"description": "Lookback Timeframe",
|
||||
"help": "Timeframe to use for lookback.",
|
||||
},
|
||||
"lookback_period": {
|
||||
"type": "number",
|
||||
"default": 0,
|
||||
"description": "Lookback Period",
|
||||
"help": "Number of periods to look back at.",
|
||||
},
|
||||
}
|
||||
|
||||
def gen_pairlist(self, tickers: Tickers) -> List[str]:
|
||||
"""
|
||||
Generate the pairlist
|
||||
|
|
|
@ -13,7 +13,7 @@ from freqtrade.constants import Config, ListPairsWithTimeframes
|
|||
from freqtrade.exceptions import OperationalException
|
||||
from freqtrade.exchange.types import Tickers
|
||||
from freqtrade.misc import plural
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList
|
||||
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -61,6 +61,30 @@ class RangeStabilityFilter(IPairList):
|
|||
f"{self._min_rate_of_change}{max_rate_desc} over the "
|
||||
f"last {plural(self._days, 'day')}.")
|
||||
|
||||
@staticmethod
|
||||
def available_parameters() -> Dict[str, PairlistParameter]:
|
||||
return {
|
||||
"lookback_days": {
|
||||
"type": "number",
|
||||
"default": 10,
|
||||
"description": "Lookback Days",
|
||||
"help": "Number of days to look back at.",
|
||||
},
|
||||
"min_rate_of_change": {
|
||||
"type": "number",
|
||||
"default": 0.01,
|
||||
"description": "Minimum Rate of Change",
|
||||
"help": "Minimum rate of change to filter pairs.",
|
||||
},
|
||||
"max_rate_of_change": {
|
||||
"type": "number",
|
||||
"default": None,
|
||||
"description": "Maximum Rate of Change",
|
||||
"help": "Maximum rate of change to filter pairs.",
|
||||
},
|
||||
**IPairList.refresh_period_parameter()
|
||||
}
|
||||
|
||||
def filter_pairlist(self, pairlist: List[str], tickers: Tickers) -> List[str]:
|
||||
"""
|
||||
Validate trading range
|
||||
|
|
Loading…
Reference in New Issue
Block a user