• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

freqtrade / freqtrade / 9394559170

26 Apr 2024 06:36AM UTC coverage: 94.656% (-0.02%) from 94.674%
9394559170

push

github

xmatthias
Loader should be passed as kwarg for clarity

20280 of 21425 relevant lines covered (94.66%)

0.95 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.14
/freqtrade/plugins/pairlist/OffsetFilter.py
1
"""
2
Offset pair list filter
3
"""
4
import logging
1✔
5
from typing import Any, Dict, List
1✔
6

7
from freqtrade.constants import Config
1✔
8
from freqtrade.exceptions import OperationalException
1✔
9
from freqtrade.exchange.types import Tickers
1✔
10
from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter
1✔
11

12

13
logger = logging.getLogger(__name__)
1✔
14

15

16
class OffsetFilter(IPairList):
1✔
17

18
    def __init__(self, exchange, pairlistmanager,
1✔
19
                 config: Config, pairlistconfig: Dict[str, Any],
20
                 pairlist_pos: int) -> None:
21
        super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos)
1✔
22

23
        self._offset = pairlistconfig.get('offset', 0)
1✔
24
        self._number_pairs = pairlistconfig.get('number_assets', 0)
1✔
25

26
        if self._offset < 0:
1✔
27
            raise OperationalException("OffsetFilter requires offset to be >= 0")
1✔
28

29
    @property
1✔
30
    def needstickers(self) -> bool:
1✔
31
        """
32
        Boolean property defining if tickers are necessary.
33
        If no Pairlist requires tickers, an empty Dict is passed
34
        as tickers argument to filter_pairlist
35
        """
36
        return False
1✔
37

38
    def short_desc(self) -> str:
1✔
39
        """
40
        Short whitelist method description - used for startup-messages
41
        """
42
        if self._number_pairs:
1✔
43
            return f"{self.name} - Taking {self._number_pairs} Pairs, starting from {self._offset}."
1✔
44
        return f"{self.name} - Offsetting pairs by {self._offset}."
×
45

46
    @staticmethod
1✔
47
    def description() -> str:
1✔
48
        return "Offset pair list filter."
1✔
49

50
    @staticmethod
1✔
51
    def available_parameters() -> Dict[str, PairlistParameter]:
1✔
52
        return {
1✔
53
            "offset": {
54
                "type": "number",
55
                "default": 0,
56
                "description": "Offset",
57
                "help": "Offset of the pairlist.",
58
            },
59
            "number_assets": {
60
                "type": "number",
61
                "default": 0,
62
                "description": "Number of assets",
63
                "help": "Number of assets to use from the pairlist, starting from offset.",
64
            },
65
        }
66

67
    def filter_pairlist(self, pairlist: List[str], tickers: Tickers) -> List[str]:
1✔
68
        """
69
        Filters and sorts pairlist and returns the whitelist again.
70
        Called on each bot iteration - please use internal caching if necessary
71
        :param pairlist: pairlist to filter or sort
72
        :param tickers: Tickers (from exchange.get_tickers). May be cached.
73
        :return: new whitelist
74
        """
75
        if self._offset > len(pairlist):
1✔
76
            self.log_once(f"Offset of {self._offset} is larger than " +
1✔
77
                          f"pair count of {len(pairlist)}", logger.warning)
78
        pairs = pairlist[self._offset:]
1✔
79
        if self._number_pairs:
1✔
80
            pairs = pairs[:self._number_pairs]
1✔
81

82
        self.log_once(f"Searching {len(pairs)} pairs: {pairs}", logger.info)
1✔
83

84
        return pairs
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc