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

交流Q群1064240775

  • 概述

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

时间

价格

成交量

2021年11月15日09点13分22秒000毫秒

192

1

2021年11月15日09点13分22秒250毫秒

190

2

2021年11月15日09点13分22秒500毫秒

191

1

2021年11月15日09点13分22秒750毫秒

193

3

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

时间 = 2021年11月15日09点13分22秒

OPEN = 192

CLOSE = 193

HIGH = 193

LOW = 190

VOL = 7

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

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

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

  • 问题根源

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

时间

价格

成交量

09点13分21秒000毫秒

190

2

09点13分21秒250毫秒

192

3

09点13分21秒500毫秒

193

1

09点13分21秒750毫秒

191

2

09点13分22秒000毫秒

192

1

09点13分22秒250毫秒

190

2

09点13分22秒500毫秒

191

1

09点13分22秒750毫秒

193

3

09点13分23秒000毫秒

194

2

09点13分23秒250毫秒

192

3

09点13分23秒500毫秒

191

1

09点13分23秒750毫秒

193

2

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

所以实际上我们应该将22秒000毫秒归属到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,最后一个K是15:00:00。

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

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

时间

价格

成交量

K线时间

K线数据

09点13分21秒000毫秒

190

2

09点13分21秒250毫秒

192

3

09点13分21秒

Open = 192

Close = 192

High = 193

Low = 191

Vol = 7

09点13分21秒500毫秒

193

1

09点13分21秒750毫秒

191

2

09点13分22秒000毫秒

192

1

09点13分22秒250毫秒

190

2

09点13分22秒

Open = 190

Close = 194

High = 194

Low = 190

Vol = 8

09点13分22秒500毫秒

191

1

09点13分22秒750毫秒

193

3

09点13分23秒000毫秒

194

2

09点13分23秒250毫秒

192

3

09点13分23秒500毫秒

191

1

09点13分23秒750毫秒

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:01、09:00:02、...、10:14:59、10:15:00

09:00:00、09:00:01、...、10:14:58、10:14:59

第二节

10:30:01、10:30:02、...、11:29:59、11:30:00

10:30:00、10:30:01、...、11:29:58、11:29:59

第三节

13:30:01、13:30:02、...、14:59:59、15:00:00

13:30:00、13:30:01、...、14:59:58、14:59:59

第四节

21:00:01、21:00:02、...、23:29:59、23:30:00

21:00:00、21:00:01、...、23:29:5、23:29:59

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

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

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

2秒周期

第一节

09:00:02、09:00:04、...、10:14:58、10:15:00

09:00:00、09:00:02、...、10:14:56、10:14:58

3秒周期

第一节

09:00:03、09:00:06、...、10:14:58、10:15:00

09:00:00、09:00:02、...、10:14:56、10: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:00到11:30,总共也才交易了2个半小时,如果用4小时周期的K线,那第一根K就是9:00-14:00,而且中间还空档了15分钟,第二根K从14:00到第二天的早上10点了,这还咋整。一天一共也没交易8小时,你咋画两个4小时的K呢,所以很多软件就不支持1H以上的周期,另一些就随缘,把一天直接分成2个K,而且这个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分钟,60个1分钟再汇聚成1小时。

09:00:01

09:00:02

09:00:03

09:00:04

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

方案二:按分钟进行汇总

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

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

不可行,因为存在10:15、11: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线合成的各种问题,并提出了一些解决方案,但并不是说这些方案就是好的,需要在实际应用中根据业务的要求去选合适的方法。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值