为什么我们的K线不一样?

某些细心的用户已经发现了,我们软件的K线与其它软件的K线有点不一样。那么,究竟有什么不一样,为什么要这样做,这个问题比较有意思, 我们下面来详细的讲一讲。

首先我们要知道的是, K线图并不是市场原始数据。市场中,一个合约一天交易真正的原始数据是这个样子的:

成交时间 成交价 成交量 买单单号 卖单单号
2017/01/03 09:00:00.135000 3501.2 3 13748392 13744382
2017/01/03 09:31:20.345000 3501.2 3 15643244 15643242
2017/01/03 09:31:20.347000 3501.4 10 15643262 15643270
2017/01/03 09:31:20.352000 3502.0 8 15643282 15643283
2017/01/03 15:00:00.000000 3610.4 2 59020390 59020320

上面这个表,叫做“逐笔成交表”,市场中每发生一笔撮合成交,交易所都会把当时的时间,成交的价格,成交量,以及成交的双方是哪两个报单都记下来。拿到了这张表格,就能完全掌握一个合约每天成交价格的全部情况。但遗憾的是,这个表格的数据,交易所从来没有对外公开过,你也不可能在任何软件里面看到这套数据(这里有的同学要说了,行情软件右下角那里不就有一个“逐笔成交”板块么?呵呵,那个板块的数据并不是这个表的数据,具体是什么,下面会讲到)。

交易所真正对外发送的数据,学名叫“定时行情截面快照”,俗称tick数据。 什么意思呢?就像一个人拿着照相机,每隔一段时间(国内期货交易所一般是半秒),对着上面那张表的最后一行拍个照片,并且去掉了买卖双方的信息。

图1:从逐笔数据变为截面数据的原理,每隔半秒,交易所按照最近一次的成交价格,输出一笔行情数据。

这个数据是行情软件从交易所能拿到的最详细的数据表了。行情软件里面的Tick图和“分笔成交”板块里面的数据就是用的这套数据。从“逐笔成交表”到“定时行情截面快照”的过程中,损失了很多成交细节,同时制造了一个绝大多数用户都没有意识到的误区:用户在交易所公开数据里面所能拿到的所有成交价,其时间标注都是滞后的。如果你在软件中看到时间为09:30:01的价格是3500, 并不代表09:30:01这一时刻的成交价是3500,而是代表09:30:01之前,最后一笔成交价是3500。至于这笔成交的真实时间是多少,对不起,除了交易所没人知道。

图2:行情软件中的“分笔成交”板块,其中的每行并非代表一笔成交,时间也不是真实成交时间。两行之间也可能出现过其它的成交价格,在这里也都看不到。

了解了所谓Tick数据的真相以后,我们再来看K线图。K线图(除日线以外)并不是交易所发布的官方数据,只是行情软件为了方便用户做技术分析而构造的。与多数软件相比,我们的K线生成算法有两个特征:

  • 1、连续交易时段内生成K线时,对于正好处于K线分界位置的Tick数据,同时用作为前一根K线的收盘价和下一根K线的开盘价。
  • 2、连续交易时段内用K线填满。例如1个小时总是有60根分钟线,即使其中有几分钟没有成交,也不会把整根K线取消。

但是Why?为啥这样做就有道理呢?咱们一个一个分别说。

先来说第一条,有的同学特别不理解,你这么一搞,K线图上不就没有跳空缺口了么?确实是的。但是值得考虑的是,为什么你要在K线图上寻找跳空缺口呢?因为技术分析的教材教我们了,跳空缺口表示市场瞬间发生了巨大的价格变化。那么这句话有没有问题呢?有问题。只有在交易时段分断的地方(比如每天的收盘和第二天的开盘),这种说法是对的。在连续交易时段中,这个说法并不成立。让我们举个栗子:

图3:大多数行情软件在生成K线时,将正好处于K线边际的Tick数据作为前一根K线的收盘价,而不用作后一根K线的开盘价。

在上面这张图里面,可以看得很清楚,市场中一共发生了两次实际跳空事件,仅仅是因为成交时间的区别,一个在K线图上画成了跳空缺口,一个没有。有的同学以为,跳空缺口和大阳线的区别,表示一个是突然上涨,一个是持续上涨形成的,这其实都是幻觉。你以为你在观察市场突变的信号,其实只是在观察市场突变时交易所的钟是不是刚好在整点附近罢了。而且,交易品种的成交越活跃,你所看K线的周期越长,市场价格突变在K线图上体现为缺口的概率就越低。假定某个品种每秒有1笔成交,在任一笔成交价格暴涨的概率都相等,那当你看 3秒线时,每次暴涨有1/3的概率体现为跳空缺口,如果看的是一分钟线,那每次暴涨只有1/60的概率体现为跳空缺口。如果盯着跳空缺口去找交易机会,那每找到一次的同时,就漏掉了其它的59次。事实上,无论采取何种K线算法,都不可能正确的将连续交易过程的价格突变体现成K线图上的缺口形态。那么应该怎样处理较好呢?我们相信技术分析的基本原理:本质相同或相似的市场行为,应该表现为相同或相似的图表特征;本质不同的市场行为,应该表现为明显不同的图表特征。因此,我们在设计K线时,并不鼓励用户使用交易时段内的跳空缺口作为判断市场价格突变的分析和决策依据,特意消除了这种盘中的缺口信号(跨交易时段的跳空缺口仍保留)。

图4:快期的K线,正好处于K线边际的Tick数据既作为前一根K线的收盘价,又作为后一根K线的开盘价。每根K线都覆盖一个完整的3秒时段。交易时段内的所有价格变化都包含到K线中。

至于问题2,为什么要把交易时段内的K线填满,这同样是为了技术分析的准确。我们所使用的绝大多数技术指标和画线图形,都对K线条数非常敏感。我们以最简单的均线为例。假如我们在分钟线图上增加了一条周期为5的均线,我们希望看到的是什么呢?应该是最近5分钟的成交均价。如果我们的K线不是填满的,就会出现错误的结果:

    在K线不满的情况下,均线指标依然取了最近的5条K线来计算了均价,但这5根K线的时间范围是不确定的。换句话说,在K线不满的情况下,用户对于自己技术指标覆盖的时间范围是随机且不可控的。基于这样的数据做的分析和交易策略中也蕴含随机风险。因此我们在设计时刻意避免了这种情形,确保所有品种,所有合约的技术指标都是稳定连续可控的。

技术分析的历史悠久,许多成名著作与大师都诞生于几十上百年前。在那个年代,还没有计算机,报单画图基本靠手,报纸上的K线图还是以日线图为主。而最近一二十年来,随着IT技术飞速发展,市场交易频率和行情数据频率都空前提高,在这种高速高频环境中,技术分析的数据准备和分析工作应该怎样进行,这一方面还缺少权威成熟的理论与技术,有待于我们一同探索研究。

谢谢阅读,欢迎讨论。