diff --git a/freqtrade/analyze.py b/freqtrade/analyze.py index 6d6a85596..dc32675b6 100644 --- a/freqtrade/analyze.py +++ b/freqtrade/analyze.py @@ -2,7 +2,7 @@ Functions to analyze ticker data with indicators and produce buy and sell signals """ import logging -from datetime import datetime, timedelta +from datetime import datetime from enum import Enum from typing import Dict, List, Tuple @@ -154,7 +154,7 @@ class Analyze(object): # Check if dataframe is out of date signal_date = arrow.get(latest['date']) interval_minutes = constants.TICKER_INTERVAL_MINUTES[interval] - if signal_date < (arrow.utcnow() - timedelta(minutes=(interval_minutes + 5))): + if signal_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + 5))): logger.warning( 'Outdated history for pair %s. Last tick is %s minutes old', pair, diff --git a/freqtrade/tests/test_analyze.py b/freqtrade/tests/test_analyze.py index e6108e8f8..6e035d842 100644 --- a/freqtrade/tests/test_analyze.py +++ b/freqtrade/tests/test_analyze.py @@ -4,7 +4,6 @@ Unit test file for analyse.py """ -import datetime import logging from unittest.mock import MagicMock @@ -148,8 +147,9 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog): caplog.set_level(logging.INFO) mocker.patch('freqtrade.exchange.Exchange.get_ticker_history', return_value=1) exchange = get_patched_exchange(mocker, default_conf) - # FIX: The get_signal function has hardcoded 10, which we must inturn hardcode - oldtime = arrow.utcnow() - datetime.timedelta(minutes=11) + # default_conf defines a 5m interval. we check interval * 2 + 5m + # this is necessary as the last candle is removed (partial candles) by default + oldtime = arrow.utcnow().shift(minutes=-16) ticks = DataFrame([{'buy': 1, 'date': oldtime}]) mocker.patch.multiple( 'freqtrade.analyze.Analyze', @@ -159,7 +159,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog): ) assert (False, False) == _ANALYZE.get_signal(exchange, 'xyz', default_conf['ticker_interval']) assert log_has( - 'Outdated history for pair xyz. Last tick is 11 minutes old', + 'Outdated history for pair xyz. Last tick is 16 minutes old', caplog.record_tuples )