K线包含和分型处理
首先我们回顾一下在缠中说缠原文中对顶底分型的定义:
- 顶分型:第二个K线高点是相邻三个K线高点中最高的,而低点也是相邻三个K线低点中最高的
- 底分型:第二个K线低点是相邻三个K线低点中最低的,而高点也是相邻三个K线高点中最低的
但是K线并不总是那么标准,相邻的两个K线可能存在包含关系,所以禅师引入了包含关系的处理,把原始的K线序列经过处理后,变成没有包含关系标准K线序列。
如果完全按照原文中的规则进行包含处理和识别分型,也并没有什么歧义,但是在最终的图形中会出现分型顶点前后出现毛刺的情况(也就是分型顶点并不是最高最低点)。
很长的一段时间我们都在寻求一种处理算法,要求能规避掉这些毛刺的出现,今天这篇文章也是为这个目的而生,这里会努力提出一套新的处理算法,并且在fqchan01中来实现这套算法。
大家还记得我们以前定义过一个叫做WAVEOPT的笔控制参数吗,在fqchan01中我们也沿用这个定义。我么用WAVEOPT个位数上的数字来控制选用哪种包含的处理算法。
- 如果个位数上是0,就采用原文中的包含处理方法,不做任何修饰。
- 如果个位数上是1,就采用第一种修正算法。
- 如果个位数上是2,就采用第二种修正算法。
也就是在这里我们会提出两种修正算法。我们先从三种方法都有的处理逻辑开始阐述,然后再分别阐述三种处理逻辑的不同部分。
起始K线的方向和包含处理
当处理包含关系的时候,做向上处理还是做向下处理,要先定义什么是向上什么是向下,缠师是这样定义的:
假设,第n根K线满足第n根与第n+1根的包含关系,而第n根与第n-1根不是包含关系,那么如果 ,那么称第n-1、n、n+1根K线是向上的;如果 ,那么称第n-1、n、n+1根K线是向下的。
很显然,在这个定义中,如果n=0那么是不是就玩不下去了,所以我们还是需要一个定义来没有遗漏且精确地描述出K线方向的判断:
K线包含关系处理规则(第一种修正算法)
基本定义
- 设 为第 根K线,其高点为 ,低点为
初始方向确定(n=0时)
- 查找最小的 使得 与 无包含关系
- 方向判定:
- 若 且 → 方向向下
- 若 且 → 方向向上
后续K线处理(n>0时)
假设 到 已处理, 为待处理K线:
情况1:前包含关系
条件: 包含
- 方向继承:
- 向上 → 向上,做向上包含处理
- 向下 → 向下,做向下包含处理
情况2:后包含关系
-
单根包含
条件: 仅包含
- 这也是方向继承
- 向上 → 向上, 和 作向上包含处理
- 向下 → 向下, 和 作向下包含处理
-
多根包含
条件: 包含 到 ,
- 当
时:
- 向上 → 向上, 和 作向上包含处理
- 向下 → 向上, 作为独立K线处理(特殊K线)
- 当
时:
- 向下 → 向下, 和 作向下包含处理
- 向上 → 向下, 作为独立K线处理(特殊K线)
- 当
时:
至此,我们把K线方向的判断和包含处理做了完整的定义。
K线包含关系处理规则(第二种修正算法)
这里我们还要提出另外一种包含处理方法,他和第一种修正方法基本一样,区别只是后包含关系中的第2种情况处理方式不同,下面我给出精确的定义。
如果 后包含 到 , x>1:
- 当
时:
- 向上 → 向上, 和 作向上包含处理
- 向下 → 向上, 到 做向下包含处理,原 到 的包含K线取消(特殊K线)
- 当
时:
- 向下 → 向下, 和 作向下包含处理
- 向上 → 向下, 到 做向上包含处理,原 到 的包含K线取消(特殊K线)
相信这样的定义已经完整了,可以根据喜好选择其中一种处理方式作为主要的划分手段。