在经历大约一年多的缠论研读后,我从程序员的角度出发,开启了读原文和编程实现的迭代模式。程序员的视角明显与交易员不同,重点放在缠论定义、定理和元素的程序化,最终实现走势分解和完全分类的自动化。从今年下半年开始将已经实现的C、python、MQL代码整理了一下,做个缠论图解网站玩玩。这样既能验证自我,也能方便有缘人。在接下来的文章中,我会沿着缠论学习的标准路径,从最基础的缠论元素开始,从程序的角度表达对缠论的理解。
原文中这样说:
当然,实际图形里,有些复杂的关系会出现,就是相邻两K线可以出现如图6这种包含关系,也就是一K线的高低点全在另一K线的范围里,这种情况下,可以这样处理,在向上时,把两K线的最高点当高点,而两K线低点中的较高者当成低点,这样就把两K线合并成一新的K线;反之,当向下时,把两K线的最低点当低点,而两K线高点中的较低者当成高点,这样就把两K线合并成一新的K线。
k线合并是为了将走势中两根K线之间的关系简化成“向上”和“向下”两个类别而提出的一种处理方法。从几何角度,我们把k线看做是有宽度(时间)和高度(价格)的矩形,这是一个“面”,那么我们要研究的标的就改为处理两个矩形之间的关系,使之仅保留“向上”和“向下”两种关系。
在合并之前,我们要知道,合并两个包含关系的k线最少需要涉及到几根k线才能完成。从原文中看到至少需要3根,前两根确定方向,后两根根据需要进行合并。
基于此,我们还要处理一些边界问题:
- 在实际的动态走势中,一根k线的“生”导致前一根k线的“死”(确认),只有确认的k线才能参与合并处理,这就意味着只有在新k线诞生的那一刻,才能对前一根k线进行合并处理,这是右侧边界,最新的k线是不能参与k线合并的,但它必须存在。
- 在走势的最开始处,为了确认方向,要从左往右一直找到两根不包含的k线才能开始进行合并分析。因为互相包含的k线没有方向。这是左侧边界,即最开始的两根k线必须互不包含。
至此,我们就有了从两根互不包含的k线开始,随着每一根已经确认的k线到来,比较其与前一根k线之间两高点和两低点的关系,包含就合并,非包含就留下。

由于最新的k线未参与到分析中来,它就是所谓“当下”,即在k线合并这个层面的“当下”。这个当下的变化,注意两个关键点会对走势分析有所帮助:
- 当下的前两根k线向上时,当下的前一根k线的最低点,只要这个点未下破,走势将继续向上。
- 当下的前两根k线向下时,当下的前一根k线的最高点,只要这个点未上破,走势将继续向下。
有朋友问我是否有代码提供,我补上合并k线的计算逻辑吧。
if 存在3个已确认的k线k3,k2,k1 then
if k3,k2向上 then
if k2,k1相互包含 then
向上合并k2,k1 => k2
return k3, k2
else
return k2, k1
else if k3,k2向下 then
if k2,k1相互包含 then
向下合并k2,k1 => k2
return k3, k2
else
return k2, k1
else
return k2, k1