Beispiel #1
0
def test_load_partial_missing(testdatadir, caplog) -> None:
    # Make sure we start fresh - test missing data at start
    start = arrow.get('2018-01-01T00:00:00')
    end = arrow.get('2018-01-11T00:00:00')
    data = load_data(testdatadir,
                     '5m', ['UNITTEST/BTC'],
                     startup_candles=20,
                     timerange=TimeRange('date', 'date', start.int_timestamp,
                                         end.int_timestamp))
    assert log_has('Using indicator startup period: 20 ...', caplog)
    # timedifference in 5 minutes
    td = ((end - start).total_seconds() // 60 // 5) + 1
    assert td != len(data['UNITTEST/BTC'])
    start_real = data['UNITTEST/BTC'].iloc[0, 0]
    assert log_has(
        f'UNITTEST/BTC, spot, 5m, '
        f'data starts at {start_real.strftime("%Y-%m-%d %H:%M:%S")}', caplog)
    # Make sure we start fresh - test missing data at end
    caplog.clear()
    start = arrow.get('2018-01-10T00:00:00')
    end = arrow.get('2018-02-20T00:00:00')
    data = load_data(datadir=testdatadir,
                     timeframe='5m',
                     pairs=['UNITTEST/BTC'],
                     timerange=TimeRange('date', 'date', start.int_timestamp,
                                         end.int_timestamp))
    # timedifference in 5 minutes
    td = ((end - start).total_seconds() // 60 // 5) + 1
    assert td != len(data['UNITTEST/BTC'])

    # Shift endtime with +5 - as last candle is dropped (partial candle)
    end_real = arrow.get(data['UNITTEST/BTC'].iloc[-1, 0]).shift(minutes=5)
    assert log_has(
        f'UNITTEST/BTC, spot, 5m, '
        f'data ends at {end_real.strftime("%Y-%m-%d %H:%M:%S")}', caplog)
Beispiel #2
0
def test_load_data_1min_timeframe(ohlcv_history, mocker, caplog,
                                  testdatadir) -> None:
    mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv',
                 return_value=ohlcv_history)
    file = testdatadir / 'UNITTEST_BTC-1m.json'
    load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC'])
    assert file.is_file()
    assert not log_has(
        'Download history data for pair: "UNITTEST/BTC", interval: 1m '
        'and store in None.', caplog)
Beispiel #3
0
def test_load_data_mark(ohlcv_history, mocker, caplog, testdatadir) -> None:
    mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv',
                 return_value=ohlcv_history)
    file = testdatadir / 'futures/UNITTEST_USDT-1h-mark.json'
    load_data(datadir=testdatadir,
              timeframe='1h',
              pairs=['UNITTEST/BTC'],
              candle_type='mark')
    assert file.is_file()
    assert not log_has(
        'Download history data for pair: "UNITTEST/USDT", interval: 1m '
        'and store in None.', caplog)
Beispiel #4
0
def test_init_with_refresh(default_conf, mocker) -> None:
    exchange = get_patched_exchange(mocker, default_conf)
    refresh_data(datadir=Path(''),
                 pairs=[],
                 timeframe=default_conf['timeframe'],
                 exchange=exchange)
    assert {} == load_data(datadir=Path(''),
                           pairs=[],
                           timeframe=default_conf['timeframe'])
Beispiel #5
0
def test_get_timerange(default_conf, mocker, testdatadir) -> None:
    patch_exchange(mocker)

    default_conf.update({'strategy': 'DefaultStrategy'})
    strategy = StrategyResolver.load_strategy(default_conf)

    data = strategy.ohlcvdata_to_dataframe(
        load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC']))
    min_date, max_date = get_timerange(data)
    assert min_date.isoformat() == '2017-11-04T23:02:00+00:00'
    assert max_date.isoformat() == '2017-11-14T22:58:00+00:00'
Beispiel #6
0
def test_get_timerange(default_conf, mocker, testdatadir) -> None:
    patch_exchange(mocker)

    default_conf.update({'strategy': CURRENT_TEST_STRATEGY})
    strategy = StrategyResolver.load_strategy(default_conf)

    data = strategy.advise_all_indicators(
        load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC']))
    min_date, max_date = get_timerange(data)
    assert min_date.isoformat() == '2017-11-04T23:02:00+00:00'
    assert max_date.isoformat() == '2017-11-14T22:58:00+00:00'
Beispiel #7
0
def test_validate_backtest_data(default_conf, mocker, caplog,
                                testdatadir) -> None:
    patch_exchange(mocker)

    default_conf.update({'strategy': 'DefaultStrategy'})
    strategy = StrategyResolver.load_strategy(default_conf)

    timerange = TimeRange('index', 'index', 200, 250)
    data = strategy.ohlcvdata_to_dataframe(
        load_data(datadir=testdatadir,
                  timeframe='5m',
                  pairs=['UNITTEST/BTC'],
                  timerange=timerange))

    min_date, max_date = get_timerange(data)
    caplog.clear()
    assert not validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC',
                                      min_date, max_date,
                                      timeframe_to_minutes('5m'))
    assert len(caplog.record_tuples) == 0
Beispiel #8
0
def test_validate_backtest_data_warn(default_conf, mocker, caplog,
                                     testdatadir) -> None:
    patch_exchange(mocker)

    default_conf.update({'strategy': 'DefaultStrategy'})
    strategy = StrategyResolver.load_strategy(default_conf)

    data = strategy.ohlcvdata_to_dataframe(
        load_data(datadir=testdatadir,
                  timeframe='1m',
                  pairs=['UNITTEST/BTC'],
                  fill_up_missing=False))
    min_date, max_date = get_timerange(data)
    caplog.clear()
    assert validate_backtest_data(data['UNITTEST/BTC'],
                                  'UNITTEST/BTC', min_date, max_date,
                                  timeframe_to_minutes('1m'))
    assert len(caplog.record_tuples) == 1
    assert log_has(
        "UNITTEST/BTC has missing frames: expected 14396, got 13680, that's 716 missing values",
        caplog)
Beispiel #9
0
def test_init(default_conf, mocker) -> None:
    assert {} == load_data(datadir=Path(''),
                           pairs=[],
                           timeframe=default_conf['timeframe'])