环境:阿里云服务器,金字塔python。
发现问题:上午python程序提示,本机j00、p00、m00等大连品种,15分钟k线数据量少于1601根。
调试过程:
1.通过数据管理器——整理数据——执行清理,清楚所有本地数据。
2.通过数据补充——自定义数据补充,补充所有品种连续合约近365日的5分钟数据。
3.设定基准合约为DQJ00,通过如下代码调试:
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
# 在context中保存全局变量
context.s1 = context.run_info.base_book_id
close_15m = history_bars(order_book_id=context.s1, bar_count=(1600+1),frequency='15m',fields='close')
date_close_15m = history_bars(order_book_id=context.s1, bar_count=(1600+1),frequency='15m',fields='datetime')
print(len(close_15m))
print(close_15m[-1])
print(date_close_15m[-1])
print(date_close_15m[-1500])
4.消息窗口结果:
14:26:18 > 1500
14:26:18 > 2013.5
14:26:18 > 20190401181500.0
14:26:18 > 20181219190000.0
只有1500根k线数据。换句话说,2018年12月19日以前的焦炭连续5分钟k线数据没有。
5.用同样方式测试其它大连交易所品种,棕榈连续,豆粕连续,也出现同样的问题。
用同样的方法测试螺纹连续,铜连续,白糖连续,TA连续,都没有问题
6.结论:可能金字塔历史数据服务器,关于大连交易所的数据出现问题。请尽快修复。
请仔细阅读我上面的叙述,并不是“由于交易所更改了交易时间”的问题。而是,金字塔的历史数据,出了问题。
我描述的问题本质是:只能取到截至2018年12月19日的15分钟数据,更久的数据缺失。
而非因近期交易所更改交易造成的。
请重视并尽快修复。
晚上又测试了一下。
close_15m = history_bars(order_book_id=context.s1, bar_count=(1000),frequency='15m',fields='close'),实际上可以取到932根k线。
close_15m = history_bars(order_book_id=context.s1, bar_count=(2000),frequency='15m',fields='close'),实际上可以取到1853根k线。
close_15m = history_bars(order_book_id=context.s1, bar_count=(3000),frequency='15m',fields='close'),实际上可以取到2775根k线。
所以问题可能是这样的:python里面的history_bars语句,当期货品种的交易时间更改后,也必须更改history_bars的底层代码,使bar_count=(1000)与实际15分钟k线的数量一致。