TICK回测研究四,合成K线的问题分析

一、概述

K线合成是指将原始的TICK数据按时间范围进行汇总,如下表所示的TICK数据,

时间

价格

成交量

20211115091322000毫秒

192

1

20211115091322250毫秒

190

2

20211115091322500毫秒

191

1

20211115091322750毫秒

193

3

可以简单汇总成一条信息,

时间 = 20211115091322

OPEN = 192

CLOSE = 193

HIGH = 193

LOW = 190

VOL = 7

这样的操作1秒钟能够压缩的信息量有限,但是对于更大周期如1分钟、1小时、1天或更长的时间,能够将非常庞大的信息压缩到简单的6条数据。

实际上我们常用一些指标如MAMACDBOLL等也是基于这个逻辑,即是将庞杂的信息浓缩成关键的“指标”。

然而在K线合成上各家都有自己的逻辑,这就导致后续指标计算也产生了分歧,再进一步量化策略的执行也会产生区别。本篇就是着重于分析各家K线合成的逻辑和由此产生的问题。

 

二、问题根源

前面的概述中,我们将91322秒包含的4TICK汇总成了一个秒K线,这个秒K线时间范围是“22000毫秒之后至23000毫秒之前”的数据,那么时间戳为23000毫秒收到的数据,是属于22秒成交的还是23秒成交的?这是后面一系列问题的根源。

时间

价格

成交量

091321000毫秒

190

2

091321250毫秒

192

3

091321500毫秒

193

1

091321750毫秒

191

2

091322000毫秒

192

1

091322250毫秒

190

2

091322500毫秒

191

1

091322750毫秒

193

3

091323000毫秒

194

2

091323250毫秒

192

3

091323500毫秒

191

1

091323750毫秒

193

2

从直观上,我们倾向于22000毫秒到22750毫秒的成交归属于22秒,23000毫秒到23750毫秒的成交归属于23秒,但实践中却有个问题,假设交易所在15:00:00准时闭市,那么14:59:59依然还是有交易的,14:59:59.00014:59:59.25014:59:59.50014:59:59.750会依次收到交易所的行情信号,这些我们都可以归于59秒,但是15:00:00.000会收到交易所发来的最后一笔行情,这个怎么处理?

所以实际上我们应该将22000毫秒归属到21秒去,如果我们画秒K的话,就应该从早上第一个秒开始到最后一个秒结束,即9:00:01 - 15:00:00。到这里一切都好说,但是接着关于时间标记各软件商就有了矛盾,以至于后面分歧越来越大画的K线就完全不一样了。

 

三、问题一:时间标记

上一节中,我们知道在秒K中,我们的时间范围是9:00:01 - 15:00:00,但需要注意的是,09:00:01包含的成交实际上是09:00:00-09:00:01这个秒发生的,而15:00:00包含的成交实际上是14:59:95-15:00:00这个秒发生的。所以在合成K线时,时间的标记大家就有了分歧。

方式一:取K线的结束时间,即每天第一个K的时间是09:00:01,最后一个K15:00:00

方式二:取K线的开始时间,即每天第一个K的时间是09:00:00,最后一个K14:59:59

下表是方式一的合成示意:

时间

价格

成交量

K线时间

K线数据

091321000毫秒

190

2

 

 

091321250毫秒

192

3

091321

Open = 192

Close = 192

High = 193

Low = 191

Vol = 7

091321500毫秒

193

1

091321750毫秒

191

2

091322000毫秒

192

1

091322250毫秒

190

2

091322

Open = 190

Close = 194

High = 194

Low = 190

Vol = 8

091322500毫秒

191

1

091322750毫秒

193

3

091323000毫秒

194

2

091323250毫秒

192

3

 

 

091323500毫秒

191

1

 

 

091323750毫秒

193

2

 

 

 

两种方式都有人用,我大概看了下:

方式一,标K线的结束时间:极星、通达信、富途

方式二,标K线的开始时间:文华、快期、TB

只需要看,如果第一个K的时间是9:00:00那就是方式二,其他的就是方式一,由时间标记的不同逻辑后面又衍生出了很多不同。

 

四、问题二:跨交易时段问题

我们知道内盘交易所交易时间并不连续,主要交易时段如下,

第一节:9:00-10:15

第二节:10:30-11:30

第三节:13:30-15:00

第四节:21:00-23:30

对于1秒周期的K线,各节包含的时间标签如下表所示:

 

方式一,标K线的结束时间

方式二,标K线的开始时间

第一节

09:00:0109:00:02...10:14:5910:15:00

09:00:0009:00:01...10:14:5810:14:59

第二节

10:30:0110:30:02...11:29:5911:30:00

10:30:0010:30:01...11:29:5811:29:59

第三节

13:30:0113:30:02...14:59:5915:00:00

13:30:0013:30:01...14:59:5814:59:59

第四节

21:00:0121:00:02...23:29:5923:30:00

21:00:0021:00:01...23:29:523:29:59

 

对于2秒、3秒周期的K线情况还行,似乎没有什么问题,我们只选取其中一节看下:

 

方式一,标K线的结束时间

方式二,标K线的开始时间

2秒周期

第一节

09:00:0209:00:04...10:14:5810:15:00

09:00:0009:00:02...10:14:5610:14:58

3秒周期

第一节

09:00:0309:00:06...10:14:5810:15:00

09:00:0009:00:02...10:14:5610:14:58

 

但对于7秒这种无法被60整除的K线情况就不妙了,由于不好计算确切时间,我们做一个简单的示例,

对于盘中休息的处理,

方式一:标记K线结束时间。如早上10:15:00前最后一个K的是时间是10:14:58,则下一个K的时间应该是10:30:05。但有些系统却是10:15:05,为啥呢,因为10:15:00后虽然不交易了,但是行情并没有关闭,所以打这个时间戳也说的通。所以可以想见的是,有的系统应该是取10:15:05有的取10:30:05

方式二:标记K线开始时间。如早上10:15:00前最后一个K的时间是10:14:58,则下一个K的时间应该是10:30:05。但有些系统却是10:30:00,为啥呢,还是15分以后交易只是暂停没有结束,他可以认为10:14:58 - 10:15:05是一个周期,再下一个周期可不就应该是10:30:00了吗。

前面只是说了由秒周期导致的跨时段问题,那么有一些软件为了避免分歧,就限制了秒、分周期必须可以被60整除,小时周期必须可被24整除。但即使这样,依然存在问题,特别是跨交易时段、跨交易日。

 

五、问题三:跨交易时段、跨交易日问题

前面只是说到秒周期、分钟周期就遇到很多问题,那么我们继续扩大周期,比如用4小时周期。早上9:0011:30,总共也才交易了2个半小时,如果用4小时周期的K线,那第一根K就是9:00-14:00,而且中间还空档了15分钟,第二根K14:00到第二天的早上10点了,这还咋整。一天一共也没交易8小时,你咋画两个4小时的K呢,所以很多软件就不支持1H以上的周期,另一些就随缘,把一天直接分成2K,而且这个K还是跨交易日的,其实分析起来并不得劲。

 

六、问题四:日K、周K、月K

K主要的问题是,有时候有夜盘,有时候又没有夜盘,所以有的K数据多,有的K数据少,这其实是有影响的。

K呢就是有时候交易所放假,有些周有5天,有的只有一天。

K跟周K差不多,也是数据量不成正比,过年的那个月少了好几个交易日。

 

七、解决方案

方案一:按秒进行汇总,不考虑自然时间的分割

即将交易时的每一秒都汇总起来,1分钟等于60个秒,60秒等于1小时,而不考虑自然时间的分割。比如下表这样,在09:00:03这个秒下没有数据,那么直接跳过,也就是09:00:01-09:00:04只有3秒。而后60秒汇聚成1分钟,601分钟再汇聚成1小时。

09:00:01

09:00:02

09:00:03

09:00:04

这样其实就不存在所谓1分钟、1小时的周期,只存在60秒、3600秒这样的周期。

 

 

方案二:按分钟进行汇总

参考前面秒的方式,只是精确度只到分钟。同样的,也不存在1小时的周期,只有60分钟的。

 

方案三:按小时进行汇总,可行吗?

不可行,因为存在10:1511:30这样的时间。

 

方案四:按时段进行汇总

即将一天分为4个小节,5个时段

第一节

09:00:01 - 10:15:00

1小时15分钟

第二节

10:30:01 - 11:30:00

1小时15分钟

第三节

13:30:01 - 15:00:00

1小时30分钟

第四节

21:00:01 - 22:15:00

22:15:01 - 23:30:00

1小时15分钟

1小时15分钟

这样除了下午多了15分钟,其他时段正好都是1小时15分钟,而且时间的开始和结束都卡的很好,不失为一个好的方案。

 

八、回顾

前面我们分析了K线合成的各种问题,并提出了一些解决方案,但并不是说这些方案就是好的,需要在实际应用中根据业务的要求去选合适的方法。

 

posted @ 2021-11-17 17:31  布兰姥爷  阅读(654)  评论(0编辑  收藏  举报