• 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

93.18
/freqtrade/util/migrations/binance_mig.py
1
import logging
1✔
2

3
from packaging import version
1✔
4
from sqlalchemy import select
1✔
5

6
from freqtrade.constants import DOCS_LINK, Config
1✔
7
from freqtrade.enums import TradingMode
1✔
8
from freqtrade.exceptions import OperationalException
1✔
9
from freqtrade.persistence.pairlock import PairLock
1✔
10
from freqtrade.persistence.trade_model import Trade
1✔
11

12

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

15

16
def migrate_binance_futures_names(config: Config):
1✔
17

18
    if (
1✔
19
        not (config.get('trading_mode', TradingMode.SPOT) == TradingMode.FUTURES
20
             and config['exchange']['name'] == 'binance')
21
    ):
22
        # only act on new futures
23
        return
1✔
24
    import ccxt
1✔
25
    if version.parse("2.6.26") > version.parse(ccxt.__version__):
1✔
26
        raise OperationalException(
×
27
            "Please follow the update instructions in the docs "
28
            f"({DOCS_LINK}/updating/) to install a compatible ccxt version.")
29
    _migrate_binance_futures_db(config)
1✔
30
    migrate_binance_futures_data(config)
1✔
31

32

33
def _migrate_binance_futures_db(config: Config):
1✔
34
    logger.warning('Migrating binance futures pairs in database.')
1✔
35
    trades = Trade.get_trades([Trade.exchange == 'binance', Trade.trading_mode == 'FUTURES']).all()
1✔
36
    for trade in trades:
1✔
37
        if ':' in trade.pair:
1✔
38
            # already migrated
39
            continue
×
40
        new_pair = f"{trade.pair}:{trade.stake_currency}"
1✔
41
        trade.pair = new_pair
1✔
42

43
        for order in trade.orders:
1✔
44
            order.ft_pair = new_pair
1✔
45
            # Should symbol be migrated too?
46
            # order.symbol = new_pair
47
    Trade.commit()
1✔
48
    pls = PairLock.session.scalars(select(PairLock).filter(PairLock.pair.notlike('%:%'))).all()
1✔
49
    for pl in pls:
1✔
50
        pl.pair = f"{pl.pair}:{config['stake_currency']}"
×
51
    # print(pls)
52
    # pls.update({'pair': concat(PairLock.pair,':USDT')})
53
    Trade.commit()
1✔
54
    logger.warning('Done migrating binance futures pairs in database.')
1✔
55

56

57
def migrate_binance_futures_data(config: Config):
1✔
58

59
    if (
1✔
60
        not (config.get('trading_mode', TradingMode.SPOT) == TradingMode.FUTURES
61
             and config['exchange']['name'] == 'binance')
62
    ):
63
        # only act on new futures
64
        return
1✔
65

66
    from freqtrade.data.history import get_datahandler
1✔
67
    dhc = get_datahandler(config['datadir'], config['dataformat_ohlcv'])
1✔
68

69
    paircombs = dhc.ohlcv_get_available_data(
1✔
70
        config['datadir'],
71
        config.get('trading_mode', TradingMode.SPOT)
72
        )
73

74
    for pair, timeframe, candle_type in paircombs:
1✔
75
        if ':' in pair:
1✔
76
            # already migrated
77
            continue
1✔
78
        new_pair = f"{pair}:{config['stake_currency']}"
1✔
79
        dhc.rename_futures_data(pair, new_pair, timeframe, candle_type)
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