Revert ohlcv_candle_limit logic for okx
This commit is contained in:
parent
116b58e97c
commit
d60d0f64d2
@ -619,7 +619,10 @@ class Exchange:
|
|||||||
Checks if required startup_candles is more than ohlcv_candle_limit().
|
Checks if required startup_candles is more than ohlcv_candle_limit().
|
||||||
Requires a grace-period of 5 candles - so a startup-period up to 494 is allowed by default.
|
Requires a grace-period of 5 candles - so a startup-period up to 494 is allowed by default.
|
||||||
"""
|
"""
|
||||||
candle_limit = self.ohlcv_candle_limit(timeframe, self._config['candle_type_def'], None)
|
|
||||||
|
candle_limit = self.ohlcv_candle_limit(
|
||||||
|
timeframe, self._config['candle_type_def'],
|
||||||
|
date_minus_candles(timeframe, startup_candles))
|
||||||
# Require one more candle - to account for the still open candle.
|
# Require one more candle - to account for the still open candle.
|
||||||
candle_count = startup_candles + 1
|
candle_count = startup_candles + 1
|
||||||
# Allow 5 calls to the exchange per pair
|
# Allow 5 calls to the exchange per pair
|
||||||
|
@ -10,7 +10,7 @@ from freqtrade.enums.candletype import CandleType
|
|||||||
from freqtrade.exceptions import DDosProtection, OperationalException, TemporaryError
|
from freqtrade.exceptions import DDosProtection, OperationalException, TemporaryError
|
||||||
from freqtrade.exchange import Exchange
|
from freqtrade.exchange import Exchange
|
||||||
from freqtrade.exchange.common import retrier
|
from freqtrade.exchange.common import retrier
|
||||||
from freqtrade.exchange.exchange import timeframe_to_minutes
|
from freqtrade.exchange.exchange import date_minus_candles
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -23,7 +23,7 @@ class Okx(Exchange):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_ft_has: Dict = {
|
_ft_has: Dict = {
|
||||||
"ohlcv_candle_limit": 300, # Warning, special case with data prior to X months
|
"ohlcv_candle_limit": 100, # Warning, special case with data prior to X months
|
||||||
"mark_ohlcv_timeframe": "4h",
|
"mark_ohlcv_timeframe": "4h",
|
||||||
"funding_fee_timeframe": "8h",
|
"funding_fee_timeframe": "8h",
|
||||||
}
|
}
|
||||||
@ -53,15 +53,13 @@ class Okx(Exchange):
|
|||||||
:param since_ms: Candle-type
|
:param since_ms: Candle-type
|
||||||
:return: Candle limit as integer
|
:return: Candle limit as integer
|
||||||
"""
|
"""
|
||||||
now = datetime.now(timezone.utc)
|
if (
|
||||||
offset_mins = timeframe_to_minutes(timeframe) * self._ft_has['ohlcv_candle_limit']
|
candle_type in (CandleType.FUTURES, CandleType.SPOT) and
|
||||||
if since_ms and since_ms < ((now - timedelta(minutes=offset_mins)).timestamp() * 1000):
|
(not since_ms or since_ms > (date_minus_candles(timeframe, 300).timestamp() * 1000))
|
||||||
return 100
|
):
|
||||||
if candle_type not in (CandleType.FUTURES, CandleType.SPOT):
|
return 300
|
||||||
return 100
|
|
||||||
|
|
||||||
return int(self._ft_has.get('ohlcv_candle_limit_per_timeframe', {}).get(
|
return super().ohlcv_candle_limit(timeframe, candle_type, since_ms)
|
||||||
timeframe, self._ft_has.get('ohlcv_candle_limit')))
|
|
||||||
|
|
||||||
@retrier
|
@retrier
|
||||||
def additional_exchange_init(self) -> None:
|
def additional_exchange_init(self) -> None:
|
||||||
|
@ -20,14 +20,17 @@ def test_okx_ohlcv_candle_limit(default_conf, mocker):
|
|||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUTURES) == 300
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUTURES) == 300
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.MARK) == 100
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.MARK) == 100
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE) == 100
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE) == 100
|
||||||
|
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == 100
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == 100
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == 100
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == 100
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 100
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 100
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 100
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 100
|
||||||
one_call = int((datetime.now(timezone.utc) - timedelta(
|
one_call = int((datetime.now(timezone.utc) - timedelta(
|
||||||
minutes=290 * timeframe_to_minutes(timeframe))).timestamp() * 1000)
|
minutes=290 * timeframe_to_minutes(timeframe))).timestamp() * 1000)
|
||||||
|
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.SPOT, one_call) == 300
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.SPOT, one_call) == 300
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUTURES, one_call) == 300
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.FUTURES, one_call) == 300
|
||||||
|
|
||||||
one_call = int((datetime.now(timezone.utc) - timedelta(
|
one_call = int((datetime.now(timezone.utc) - timedelta(
|
||||||
minutes=320 * timeframe_to_minutes(timeframe))).timestamp() * 1000)
|
minutes=320 * timeframe_to_minutes(timeframe))).timestamp() * 1000)
|
||||||
assert exchange.ohlcv_candle_limit(timeframe, CandleType.SPOT, one_call) == 100
|
assert exchange.ohlcv_candle_limit(timeframe, CandleType.SPOT, one_call) == 100
|
||||||
|
Loading…
Reference in New Issue
Block a user