写通达信K线包含公式之前,先把方向定下来。包含关系本身只是两根 K 线之间的区间关系,但处理包含的时候必须选一个方向——按向上处理,还是按向下处理。方向不定,公式里写出来的高低点序列会来回跳,画在图上看不出规律。

下面把包含关系的定义、方向的选择、公式写法与图上标注四件事按顺序讲完,最后给一段可以逐点核对的验证办法。全文只讲几何关系与取值口径,不涉及判断层面的内容。文中函数名以通达信金融终端为参照,可在公式编辑器的函数查询里核对。

一、包含关系的定义

相邻两根 K 线,如果其中一根的最高价不低于另一根的最高价,并且最低价不高于另一根的最低价,那么这一根的区间把另一根完全罩住,两者构成包含关系。用高低两个端点判断即可,不需要看开盘与收盘。

{ 包含关系的两种情形 }
情形一:当前这根罩住前一根
   HIGH >= REF(HIGH,1)  且  LOW <= REF(LOW,1)

情形二:前一根罩住当前这根
   HIGH <= REF(HIGH,1)  且  LOW >= REF(LOW,1)

{ 两个条件同时成立属于相等,按同向处理 }

判断只用高低两端,是因为 K 线的区间由最高价与最低价决定。开盘价与收盘价决定的是实体,实体的长短不影响区间的罩住关系。用实体去判断包含,会把一批实际构成包含的 K 线漏掉。

端点完全相等的情形要单独说一句。两根 K 线的最高价与最低价完全相同时,前面两条判定会同时成立。这种情形按同向处理,只需要标一次;如果两个条件分别输出,图上会出现两个重合的标记,看起来像两处包含关系。把两个条件用或的关系合成一个输出,就不会有这个问题。

二、方向先定,再谈合并

包含关系出现之后,两根 K 线要合并成一根继续往后比较,否则包含会顺着序列一直传递下去,越滚越大。合并的方式取决于当前序列的方向:向上走的时候取两者的最高价作为新高、取两者中较高的最低价作为新低;向下走的时候取较低的最高价与较低的最低价。

方向 合并后的高点 合并后的低点
向上 两根高点中较高的那个 两根低点中较高的那个
向下 两根高点中较低的那个 两根低点中较低的那个

方向怎么来,取决于合并之前的序列是往上还是往下。这就带来一个实现上的选择:要么在公式里只做标注、不做合并,把每一处包含关系直接标在图上交给看图的人;要么引入一个方向变量,按顺序递推地处理。前者简单,输出是一串标记;后者复杂,输出是一条平滑后的高低点序列。

选哪一种,取决于你要拿输出去做什么。只是想把包含位置找出来逐个数一遍,标注版本就够;要把高低点序列接到别的判断上,才需要合并版本。通达信K线包含公式的这两条路线在写法上差别不大,在核对上的难度差得多,先做简单的那一条是省事的顺序。

先做标注,再做合并。标注版本的公式只有几行,能立刻确认判定条件写对了;合并版本一旦方向变量写错,输出会整体偏移,反而不容易看出问题在哪。把两步分开写,各自核对过之后再合起来。

三、公式怎么写

标注版本的通达信K线包含公式只需要比较四个端点,把成立的位置输出成条件值。写成两点:一个表示当前这根罩住前一根,另一个表示前一根罩住当前这根。

{ 标注版本:只判定,不合并 }
A1:=HIGH-REF(HIGH,1);      { 高点之差 }
A2:=LOW-REF(LOW,1);        { 低点之差 }

B1:=A1>=0 AND A2<=0;      { 当前罩住前一根 }
B2:=A1<=0 AND A2>=0;      { 前一根罩住当前 }

包含:IF(B1 OR B2,1,0);
{ 输出为 1 表示该位置存在包含关系 }

合并版本要在上面基础上加两个量:一个记录当前方向,一个记录合并后的高值与低值。方向可以用高低点的相对位置来判断,也可以用均线方向这类外部量来定;用哪种取决于你想让合并跟着谁走,写之前先决定,因为两种口径画出来的序列不同。

四、把包含处标在图上

判定出来之后要在图上看得见,用绘图类函数画在 K 线附近。标记类输出挂在主图上,用图标画在最低价下方的位置,或者用短线段画在两根 K 线之间。这两种画法都不改变 K 线的绘制,只是在图上叠加符号。

{ 把包含位置标在主图下方 }
DRAWICON(包含,HIGH*1.02,2);
{ 位置参数按需调整,符号编号以函数说明为准 }

标记的位置要留出余量。画在最高价之上的标记会被上方的 K 线挡住,画在最低价之下同样会被下影线盖住,用倍数偏移把标记推出 K 线区间之外,图上才看得清。倍数取值不必精确,能看出来即可。

标记的疏密与阈值无关,这一点与别的公式不同。包含关系是几何判定,没有可以调整的阈值参数,标出来多少处由价格序列决定。看到标记很密,不要去找参数,去看周期——换一个更长的周期,相邻两根之间的区间关系会重新排列。

五、核对与边界

核对通达信K线包含公式的办法是逐点对照。在图上找到一处肉眼可见的包含关系,记下它的日期,再看公式在这一天有没有输出标记,位置对不对。找一处最直观的,比如一根大实体 K 线包住前一根小 K 线的位置。对上了,再看一处相等的情形,确认两个条件都成立时会输出一个标记而不是两个。

周期切换之后要重新核对。同一个品种在一分钟线上出现的包含关系,与它在日线上出现的包含关系不是同一批;周期变了,相邻两根之间的区间关系随之改变。公式不需要改,但拿分钟线的结论去描述日线的形态是不成立的。

还有一类边界是数据完整性。序列最左边若干根没有更早的 K 线可比,第一根不参与判定,这一点在公式里会自动体现为没有输出;手动核对时直接从第二根开始对。核对记录建议写成四列:位置日期、两根 K 线的高低点、是否构成包含、公式输出。四列记下来,发现输出与预期不一致时,能直接看出是判定条件写错了还是核对的位置选错了。通达信K线包含公式的核对不需要覆盖很长的时间段,两三处不同的情形就足以说明条件写对了。主图副图指标 一栏讲输出挂在主图上的取值与显示设置,公式编写与语法函数 一栏讲绘图函数的参数写法,两处接在这一步之后看。

把包含关系写成公式之后,得到的是一组位置坐标,而不是一个结论。这一组位置可以用来核对形态描述里的说法是否与价格序列一致,也可以用来检查同一段描述在不同周期下是否还成立。公式本身不做取舍,取舍留给人。这也是把几何关系先量化的价值所在:一个说法能不能被复现,验一次就知道。

量化之后还有一件附带的事:同一个说法在不同品种上是否成立,也可以逐个数出来。数出来的结果只描述被数过的那些位置,不负责推广到别的地方。

文中函数名与菜单路径以通达信金融终端为参照,函数参数与符号编号可在公式编辑器内的函数查询中核对;不同版本与券商定制版的支持范围可能存在差异,请以你所用版本的函数说明与图表显示效果为准。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。