Add timeframe_to_prev_candle
This commit is contained in:
parent
933a553dd4
commit
dd0ba183f8
@ -793,6 +793,20 @@ def timeframe_to_msecs(ticker_interval: str) -> int:
|
||||
return ccxt.Exchange.parse_timeframe(ticker_interval) * 1000
|
||||
|
||||
|
||||
def timeframe_to_prev_date(timeframe: str, date: datetime = None):
|
||||
"""
|
||||
Use Timeframe and determine last possible candle.
|
||||
"""
|
||||
if not date:
|
||||
date = datetime.utcnow()
|
||||
timeframe_secs = timeframe_to_seconds(timeframe)
|
||||
# Get offset based on timerame_secs
|
||||
offset = date.timestamp() % timeframe_secs
|
||||
# Subtract seconds passed since last offset
|
||||
new_timestamp = date.timestamp() - offset
|
||||
return datetime.fromtimestamp(new_timestamp, tz=timezone.utc)
|
||||
|
||||
|
||||
def timeframe_to_next_date(timeframe: str, date: datetime = None):
|
||||
"""
|
||||
Use Timeframe and determine next candle.
|
||||
@ -800,6 +814,8 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None):
|
||||
if not date:
|
||||
date = datetime.utcnow()
|
||||
timeframe_secs = timeframe_to_seconds(timeframe)
|
||||
# Get offset to prev timeframe
|
||||
offset = date.timestamp() % timeframe_secs
|
||||
# Add remaining seconds to next timeframe
|
||||
new_timestamp = date.timestamp() + (timeframe_secs - offset)
|
||||
return datetime.fromtimestamp(new_timestamp, tz=timezone.utc)
|
||||
|
@ -14,10 +14,10 @@ from pandas import DataFrame
|
||||
from freqtrade import (DependencyException, InvalidOrderException,
|
||||
OperationalException, TemporaryError)
|
||||
from freqtrade.exchange import Binance, Exchange, Kraken
|
||||
from freqtrade.exchange.exchange import (API_RETRY_COUNT,
|
||||
timeframe_to_next_date,
|
||||
timeframe_to_minutes,
|
||||
from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes,
|
||||
timeframe_to_msecs,
|
||||
timeframe_to_next_date,
|
||||
timeframe_to_prev_date,
|
||||
timeframe_to_seconds)
|
||||
from freqtrade.resolvers.exchange_resolver import ExchangeResolver
|
||||
from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re
|
||||
@ -1567,6 +1567,30 @@ def test_timeframe_to_msecs():
|
||||
assert timeframe_to_msecs("1d") == 86400000
|
||||
|
||||
|
||||
def test_timeframe_to_prev_date():
|
||||
# 2019-08-12 13:22:08
|
||||
date = datetime.fromtimestamp(1565616128, tz=timezone.utc)
|
||||
|
||||
# 5m -> 2019-08-12 13:20:00
|
||||
assert timeframe_to_prev_date("5m", date) == datetime(
|
||||
2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc)
|
||||
# 10m -> 2019-08-12 13:20:00
|
||||
assert timeframe_to_prev_date("10m", date) == datetime(
|
||||
2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc)
|
||||
# 1h -> 2019-08-12 13:00:00
|
||||
assert timeframe_to_prev_date("1h", date) == datetime(
|
||||
2019, 8, 12, 13, 00, 0, tzinfo=timezone.utc)
|
||||
# 2h -> 2019-08-12 12:00:00
|
||||
assert timeframe_to_prev_date("2h", date) == datetime(
|
||||
2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc)
|
||||
# 4h -> 2019-08-12 12:00:00
|
||||
assert timeframe_to_prev_date("4h", date) == datetime(
|
||||
2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc)
|
||||
# 1d -> 2019-08-12 00:00:00
|
||||
assert timeframe_to_prev_date("1d", date) == datetime(
|
||||
2019, 8, 12, 0, 0, 0, tzinfo=timezone.utc)
|
||||
|
||||
|
||||
def test_timeframe_to_next_date():
|
||||
# 2019-08-12 13:22:08
|
||||
date = datetime.fromtimestamp(1565616128, tz=timezone.utc)
|
||||
|
Loading…
Reference in New Issue
Block a user