按照k线的更新规则:
规则2: K线序列 (例如上面例子中的ka1, ka2) 总是按周期推进. 每根K线在创建时和结束时各更新一次
在刚创建时,最新这个k线的各个价格值(high=low=close)是一样的,到本周期结束再次更新前,这个价格值应该都是保持不变的。
如果在此间根据quote进行的交易逻辑中使用kline.iloc[-1].hhv应该是取不到这个k线周期的hhv的,因为按照规则还未到周期结束,hhv等不会更新。
因此做回测时,只能使用tick或者其他小周期去拼凑,自行取得最新k线的high、low,在去与之前k线hhv或high比较取得hhv,或者llv。
但是在实盘中,k线更新规则又是怎么样的呢?是实时更新,抑或也是周期性更新呢?
是否可以在对kline做is_changing判断时,选取其价格字段(high/low/close),如api.is_changing(kline.iloc[-1],’close’),从而可以使用hhv取得包括最新k线在内的真实hhv呢?
west 已回答的问题 2020年5月20日
1.根据问题中“如果在此间根据quote进行的交易逻辑中使用kline.iloc[-1].hhv应该是取不到这个k线周期的hhv的”:你取-2的数据就可以
2.在实盘中,k线更新规则是实时更新
3. 你可以参考指标源码自行修改的
west 发表新评论 2021年3月29日
回测时最后一根K线没有周期内中间的变化数据(实盘过程中有的),这根K线可以理解为只有结束的那一次更新才有有效数据,而这时候它就已经成了-2了。
回测时K线没有实时变动的数据,如果要实时的,可以订阅tick,然后对应quote就是用tick生成的,就可以算实时的在更新
关于你说的2.实盘当中实时更新
那么,在回测中,是不是我订阅5秒钟频率的kline,quote就5秒更新一次,并且本标的的10分钟K线也会每5秒刷新kline[-1]的高低收价格(开已经固定了)?