原始数据取自tushare,使用python实现算法,基本逻辑如下:

1、缠论包含关系定义:

“实际图形里,有些复杂的关系会出现,就是相邻两K线可以出现如图6这种包含关系,也就是一K线的高低点全在另一K线的范围里,这种情况下,可以这样处理,在向上时,把两K线的最高点当高点,而两K线低点中的较高者当成低点,这样就把两K线合并成一新的K线;反之,当向下时,把两K线的最低点当低点,而两K线高点中的较低者当成高点,这样就把两K线合并成一新的K线。经过这样的处理,所有K线图都可以处理成没有包含关系的图形。”

处理K线包含关系:hi、li为第i根K线的高点和低点。hi > hi-1 且 li >li-1,方向向上;hi < hi-1 且 li <li-1,方向向下;(hi >= hi-1 且 li <=li-1) 或 (hi <= hi-1 且 li >=li-1),包含关系。当第i-1根K线方向向上,包含处理后K线为h=max(hi,hi-1),l=max(li,li-1);当第i-1根K线方向向下,包含处理后K线为h=min(hi,hi-1),l=min(li,li-1)。

PYTHON 缠论 python缠论笔的算法_算法


2、缠论笔的定义:

“像图1这种,第二K线高点是相邻三K线高点中最高的,而低点也是相邻三K线低点中最高的,本ID给一个定义叫顶分型;图2这种叫底分型,第二K线低点是相邻三K线低点中最低的,而高点也是相邻三K线高点中最低的。”

“两个相邻的顶和底之间构成一笔,所谓笔,就是顶和底之间的其他波动,都可以忽略不算,但注意,一定是相邻的顶和底,隔了几个就不是了。”

“但这里有一个细微的地方要分清楚,因为结合律是必须遵守的,像图3这种,顶和底之间必须共用一个K线,这就违反结合律了,所以这不算一笔,而图4,就光是顶和底了,中间没有其他K线,一般来说,也最好不算一笔,而图5,是一笔的最基本的图形,顶和底之间还有一根K线。在实际分析中,都必须要求顶和底之间都至少有一K线当成一笔的最基本要求。”

“而图7,就给出了经过以上处理,没有包含关系的图形中,三相邻K线之间可能组合的一个完全分类,其中的二、四,就是分别是顶分型和底分型,一可以叫上升K线,三可以叫下降K线。所以,上升的一笔,由结合律,就一定是底分型+上升K线+顶分型;下降的一笔,就是顶分型+下降K线+底分型。注意,这里的上升、下降K线,不一定都是3根,可以无数根,只要一直保持这定义就可以。当然,简单的,也可以是1、2根,这只要不违反结合律和定义就可以。”

“笔,必须是一顶一底,而且顶和底之间至少有一个K线不属于顶分型与底分型。当然,还有一个最显然的,就是在同一笔中,顶分型中最高那K线的区间至少要有一部分高于底分型中最低那K线的区间,如果这条都不满足,也就是顶都在低的范围内或顶比底还低,这显然是不可接受的。”

“本ID想了想,计算了一下能量力度,觉得以后可以把笔的成立条件略微放松一下,就是一笔必须满足以下两个条件:1、顶分型与底分型经过包含处理后,不允许共用K线,也就是不能有一K线分别属于顶分型与底分型,这条件和原来是一样的,这一点绝对不能放松,因为这样,才能保证足够的能量力度;2、在满足1的前提下,顶分型中最高K线和底分型的最低K线之间(不包括这两K线),不考虑包含关系,至少有3根(包括3根)以上K线。”

“当然,站在本ID理论的角度,由于这次的底分型范围的上沿也在4672点,所以4195点上来的走势最终是否延伸为笔,关键也在4672点的站稳。因为笔的最基本条件就是顶和底分型之间必须有不重合的部分,1月23日那个底分型,就是因为后面不能突破站住1月22日高点4818点,所以使得不可能延伸为笔,进而原来的向下笔继续延伸,形成后面的下跌。”

3、上证月线图结果对比:

PYTHON 缠论 python缠论笔的算法_PYTHON 缠论_02


图上半部分是缠笔的划分,下半部分是程序得出的笔的划分。

差异:3-4,缠标为一笔,程序结果3-4构不成一笔。有两个原因排除3-4为一笔:其一,按照包含处理,4构不成底分型;其二,按缠后期阐述,顶分型高点3低于底分型4上沿,不符合顶底分型不重合的条件。