我有多个时间框架,我想跟踪和预测值(ARIMA预测每段时间提前1段),我的算法在最低的时间框架上检索数据。注意:每个时间框架都是均匀的(但不一定是对称的),可以被较低的时间间隔。作为一个重要的副词,日内时间框架(1H,4H)应该从上午9:30开始(市场开放时间)。
1分钟,5分钟,15分钟,30分钟,1H,4H,1D,1W,1M
首先,该算法执行批量history调用,并在给定的时间范围内获取所有1分钟的数据(热身数据)。然后,在运行时(永不停止;这是一个交易算法),它每分钟接收数据。
第一步(在接收大量历史数据之后)是使用一个越来越小的数据集将其聚合到每个较高的时间框架中,以节省处理时间:
即,
1分钟时间帧数据=1分钟数据(历史批量数据)
5分钟时间帧数据=聚合1分钟时间帧数据到5分钟
15分钟时间帧数据=聚合5分钟时间帧数据到15分钟
等等。
给定以下示例数据集(并假设可能包含其他符号):
close high low open
symbol time
SPY 2018-05-22 09:31:00 270.245900 270.374166 270.226167 270.305100
2018-05-22 09:32:00 270.344566 270.374166 270.206434 270.245900
2018-05-22 09:33:00 270.374166 270.374166 270.314966 270.344566
2018-05-22 09:34:00 270.275500 270.374166 270.245900 270.374166
2018-05-22 09:35:00 270.413632 270.443232 270.275500 270.275500
2018-05-22 09:36:00 270.502431 270.522165 270.384032 270.413632
2018-05-22 09:37:00 270.541898 270.591231 270.492565 270.502431Q1:我如何聚合多索引熊猫的数据,以便每个符号的时间索引和列被聚合?下面是一个部分未经测试(而且可能不起作用)的解决方案,说明了我的意图:
# Where timeframe.Frequency is a string such as "1H" or "1min"
df.resample(timeframe.Frequency).agg({"open": "first", "close": "last", "low": "min", "high": "max"})A1:df.groupby(['symbol', pd.Grouper(freq=timeframe.Frequency, level='time')]).agg({'open':'first', 'close':'last', 'high':'max', 'low':'min'})
Q2:考虑到对于较高的时间框架(例如,5分钟的时间框架数据将包含@9:35am完整条形数据和@9:37am部分条形数据表示为@9:40 a),在给定时间帧的数据集中有部分数据是明智的,还是应该在运行时将其添加到数据集之前使用QuantConnect的整合器来完成它?如何在处理history时说明这些部分条形图数据
A2:部分条确实是在重采样时创建的。例如,在6月1日之后,我可能有一个1分钟的数据点,而我的每月时间框架数据将有一个6月30日的条目,其OHLC值为1分钟栏。此时,我可以删除行,或者在数据输入时继续用新值更新它。
发布于 2019-05-23 16:33:39
对于第一个问题,假设数据是由symbol和time索引的
(df.groupby(['symbol', df.index.get_level_values(1).floor('5T')])
.agg({"open": "first",
"close": "last",
"low": "min",
"high": "max"})
)给予:
open close low high
symbol time
SPY 2018-05-22 09:30:00 270.305 270.276 270.206 270.374
SPY 2018-05-22 09:35:00 270.276 270.542 270.276 270.591第二个问题过于定性,很大程度上取决于您的数据和抽样窗口。
https://stackoverflow.com/questions/56278496
复制相似问题