VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 7
声望: 0

今天, 假期后, 早九点集合竞价开盘后, 螺纹2110 第一个分钟线最高最低价出现错误,
2021-06-15,09:00:00,最高5220,最低5116, 与实际的最高5210, 最低5147, 出入很大. 请问是否有遇到同样问题的朋友?

发现在BarGenerator中的update_tick函数中, 赋值最高最低值的部分对比老版本添加了一个判断语句if tick.high_price > self.last_tick.high_price: 请问这个判断句存在的作用是什么? 把这个判断句删除是否会产生其他问题?

BarGenerator中的update_tick函数

self.bar.high_price = max(self.bar.high_price, tick.last_price)

是否是这个判断语句, 引入了tick.high_price引起的.

if tick.high_price > self.last_tick.high_price:
self.bar.high_price = max(self.bar.high_price, tick.high_price)

self.bar.low_price = min(self.bar.low_price, tick.last_price)

这个判断具体有什么用?可否删除?

if tick.low_price < self.last_tick.low_price:
self.bar.low_price = min(self.bar.low_price, tick.low_price)

Member
avatar
加入于:
帖子: 126
声望: 14

要明白这个tick.high_price,我们首先要阐述一下行情的推送机制:
期货行情1秒2个tick,也就是说接收数据是500ms的截面数据而非订单簿数据。

截面数据:500ms内撮合成交后的结果数据。
订单簿数据:500ms内撮合成交了多少笔交易,就应该推多少个tick。

由此,就可能产生一个现象:我们接收到的tick数据和上一个tick的时间段内可能已经撮合产生了截至tick推送时的当日最高/最低价,但500ms时间结束撮合的最后价格却不是最高/最低价,由此,导致了tick.last_price与tick.high_price/tick.low_price并不一致。

而tick.high_price/tick.low_price却是真实代表当前当日最高最低价的。

以上。

Member
avatar
加入于:
帖子: 7
声望: 0

原来是这样, 明白了, 非常感谢您的帮助!

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】