https://www.shinnytech.com/blog/why-our-kline-different/
这个文章里面提到天勤的K线和别的平台是不同的生成方式。对于其中的第二条:“采用了按K线时间严格补全对齐的算法”
https://www.shinnytech.com/wp-content/uploads/img_5c1b0cd3e59e1.png
这样一来,岂不是会生成很多“一字线”,尤其对于短周期的K线,回测经常是一条很长很长的直线。所有技术指标,比如均线,全都重合为一条线;再比如海龟交易法中,算 ATR,因为“一字线”,ATR 就会等于0,放在分母计算头寸,还会引起程序出错。。。
这样的补齐算法真的好吗。。。
K线是衡量趋势变化的指标,我觉得传统的生成方式采用未补全,滤除四价归一重复的一字线,是有其道理的。。。
感谢老师回复!
其实以上文章已经阐释得很清楚——无论如何组织K线,都是基于交易所发来的tick数据截面,于是所谓市场的“连续性”也是不存在的——我们根本无法知道tick以下市场是什么形态:也许是有实体带引线的k线,也许是十字星,也许是一字线……但截取tick以后,算法直接将其仅仅“脑补”为四价归一的一字——那并不客观。
基于此,这种算法是存在一个悖论——它从客观上忽略了tick级以下的市场状态(我们无法获取而忽略),却从主观上在更大时间维度用这种重复冗余甚至错误的信息进行填充以显示“连续性”……Emmm,应该说是很有问题的。。。
我是在移植其他平台的策略到天勤发觉的这个情况,倘若策略基于的原始数据存在根本的差别,策略的表现也难怪大相径庭。
是不是可以考虑给 get_kline_serial 函数加个参数,让用户自行选择K线的生成方式,这样就各得所爱了。
日内还好说,差不太多,周K是以每周四到每周三为一根K线,这是让人没想到的