4.57K 浏览
0

上图是教程中给的使用时间对齐序列获得两个合约价差序列的范例。同时获取两个合约最新价,相减得到价差并保存在dif序列中,只要任一合约最新价有更新,dif就计算最新价差,因此dif的周期差不多就是tick的周期500ms,比较容易理解。

但是,现在想利用时间对齐序列获得指定周期的价差K线序列,比如:想获得上述合约价差的1分钟K线序列,并且绘制价差K线图,该怎么做呢?dif是周期500ms左右的价差序列,没有开、高、低、收四个构成K线的必要元素,只有价差。因此需要用diff序列来组合成1分钟K线,这个编程相对麻烦。当然,应该也不能用以下语句获得价差K线的开、高、低、收:

klines_spread.open = klines.open – klines.open1

klines_spread.high = klines.high – klines.high1

klines_spread.low = klines.low – klines.low1

klines_spread.close = klines.close – klines.close1

这样写显然不符合逻辑。所以,请问:如果想绘制两个合约价差的1分钟K线,该怎么写程序呢?可否给个范例?可能该示例比较典型,建议可以将其放到“示例程序”——“基本使用”中,作为t96。

万分感谢~

williamliu 已回答的问题 2019年12月22日
1

如果只使用K线操作,你要OHLC的话,要维护一个新的K线序列,逻辑是这样的,这是别的语言代码,你可以参照改一改。

diff_open=ka[-1].open-kb[-1].open;
diff_close=ka[-1].close-kb[-1].close;
diff_high=max(diff_open,diff_close);
diff_low=min(diff_open,diff_close);

williamliu 编辑评论 2019年12月23日

感谢~
但是请问周期该怎么处理呢?除了对tick的时间戳用循环处理,有没有更好的方式?

两个相同周期的K线操作,不必处理周期问题,因为TQSDK已经对齐时间了,按照参考代码的 规则 运算你的订阅K 里面的每一行,
实时状态下只需要在代码基础上加上比对更新最新的H L,
如果用两个品种TICK合成的话,要先写单品种K线合成规则、就要处理周期问题,合成规则你可以参考MT4的脚本,挺费劲的,转成PYTHON需要花不少功夫。然后合成TICK生成新的合成K线。

您正在查看2个答案中的1个,单击此处查看所有答案。