mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-27 20:20:55 +08:00
BLD: fix bundles last partial candle for minute mode - as reported in issue #266
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import abc
|
||||
import datetime
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
@@ -300,20 +301,34 @@ class DataPortalExchangeBacktest(DataPortalExchangeBase):
|
||||
)
|
||||
adj_bar_count = candle_size * bar_count
|
||||
|
||||
if data_frequency == 'minute' and adj_data_frequency == 'daily':
|
||||
end_dt = end_dt.floor('1D')
|
||||
if data_frequency == "minute":
|
||||
# for minute frequency always request data until the
|
||||
# current minute (do not include the current minute)
|
||||
last_dt_for_series = end_dt - datetime.timedelta(minutes=1)
|
||||
|
||||
# read the minute bundles for daily frequency to
|
||||
# support last partial candle
|
||||
# TODO: optimize this by applying this logic only for the last day
|
||||
if adj_data_frequency == 'daily':
|
||||
adj_data_frequency = 'minute'
|
||||
adj_bar_count = adj_bar_count * 1440
|
||||
|
||||
else: # data_frequency == "daily":
|
||||
last_dt_for_series = end_dt
|
||||
|
||||
series = bundle.get_history_window_series_and_load(
|
||||
assets=assets,
|
||||
end_dt=end_dt,
|
||||
end_dt=last_dt_for_series,
|
||||
bar_count=adj_bar_count,
|
||||
field=field,
|
||||
data_frequency=adj_data_frequency,
|
||||
algo_end_dt=self._last_available_session,
|
||||
)
|
||||
|
||||
start_dt = get_start_dt(end_dt, adj_bar_count, adj_data_frequency)
|
||||
start_dt = get_start_dt(last_dt_for_series, adj_bar_count,
|
||||
adj_data_frequency, False)
|
||||
df = resample_history_df(pd.DataFrame(series), freq, field, start_dt)
|
||||
|
||||
return df
|
||||
|
||||
def get_exchange_spot_value(self,
|
||||
|
||||
Reference in New Issue
Block a user