你打算把「横盘之后突破」写成一个条件,第一步遇到的不是公式怎么写,而是横盘怎么定义。横盘在图上是一个视觉印象,公式里必须落成可以计算的区间条件。没有这一步,写出来的通达信横盘突破公式标出的是你认为像横盘的位置,而不是价格真的在一段区间里收窄。

下面把横盘的量化和突破的判定分开写,再列几类条件成立但结果不成立的情形。全文只讲几何关系与区间计算,不评价任何形态的效果,也不作方向判断。文中函数名以通达信金融终端为参照,可在编辑器内查询。

一、横盘先落成一个区间

把横盘写成公式,需要三个量:一段长度内的高点、同一段长度内的低点,以及两点之间的相对距离。前两个量用区间函数取,第三个量用两者之差除以一个基准,得到一个与价格水平无关的比值。比值小,说明这段区间收窄。

{ 三个基本量 }
H1:=HHV(HIGH,N);          { N 根内的最高 }
L1:=LLV(LOW,N);           { N 根内的最低 }
W1:=(H1-L1)/L1;           { 区间宽度占低点的比例 }

横盘:IF(W1<0.08,1,0);
{ 阈值 0.08 是设定值,按品种波动调整 }

用比例而不是用价差本身,是为了让同一段条件能横向比较不同价格水平的品种。同一段公式在低价与高价品种上都能直接用,不必逐个改阈值。比例的分母取低点还是取两者均值,会让结果略有差别,选定一种之后整段公式保持一致即可。

二、突破怎么判定

区间画出来之后,突破的判定是看当前这一根的价格是否越过了区间端点。取收盘价越过区间高点作为向上的条件,比用最高价越过更严格,因为最高价盘中可能触及后回落,收盘价则代表这一段结束时的位置。

{ 突破条件,用收盘价越过 }
H2:=REF(HHV(HIGH,N),1);    { 区间上沿,取前一根为止 }
TP:=CLOSE-H2;

向突破:IF(TP>0,1,0);

这里有一个容易忽略的细节:区间上沿要取到前一根为止,不能把当前这一根算进去。把当前这一根包含在内时,当前的高点会撑高区间上沿,条件里再要求收盘价越过它,等于要求价格越过自己,条件就很难成立。用引用函数把区间端点整体前移一根,是一种直接的改法。

写成两段输出,一段是「当前处于收窄区间内」,一段是「当前越过了上沿」,分别标在图上。两段分开之后,能够看出突破位置之前是否真的存在一段收窄区间,而不是只在越过的位置看到一个孤立的标记。

三、参数决定标出什么

通达信横盘突破公式里有两个参数需要先定:区间长度与收窄阈值。区间长度决定用多少根 K 线来圈定横盘,阈值决定多窄才算收窄。两个参数的作用方向不同,混在一起调会分不清是哪一个起了作用。

参数 调大的效果 调小的效果
区间长度 圈定更长的横盘,标记变少 只圈近期的窄区间,标记变多
收窄阈值 宽的区间也算横盘,标记变多 只有很窄的区间才算,标记变少

两个参数放在参数表里,挂图之后可以按品种单独调整。调的时候一次只改一个,改完看标记数量的变化方向是否符合预期;不符合,说明改的是另一个参数起作用的环节,先退回去。

参数表里的默认值只在把公式挂到图上的那一刻生效。已经挂在图上的实例不会因为改了默认值而跟着变,这一点在批量整理图表时容易造成理解偏差:看起来改了参数,图上的输出没有动,实际是那份图表仍然用着它挂上去时的取值。

四、几类条件成立但结果不成立的情形

第一类是区间太短。区间长度给得小,公式会把一小段整理当成横盘,标出来的位置实际上只是行情过程中的一次短暂停顿。判断办法是把区间长度往大调一档,看标记是否消失;消失了的那些位置属于这一类。

第二类是区间内的高点恰好等于低点。区间长度给得小、行情又处在极窄的范围内时,高点与低点可能取到同一个价格,此时宽度算出来是零。零宽度会让相对比例失去意义,输出可能出现极端数值。核对时看到输出里有异常大的比值,先回到区间宽度上看。

第二类是数据缺口。区间内如果有若干根数据缺失,高低点序列在缺口处被截断,算出来的宽度偏小,区间看起来比实际更窄。核对办法是把显示范围拉长,看缺口位置附近是否有断线。

第三类是除权与周期切换。除权会让区间内的价格出现台阶,复权前后算出的宽度不同;周期从日线换到分钟线之后,同一个长度参数对应的时间跨度变了,圈定的区间不再是同一段。

把条件标在图上之后,逐个数一遍标记位置,确认每一处之前都有一段真实的收窄区间。这一遍数完之后再去看结果,比直接拿标记当成结论要可靠。条件成立只说明价格满足了几何关系,不说明别的。

走到这里,通达信横盘突破公式的构成就完整了:一个区间宽度、一个区间端点、一个越过的条件,加上两个参数。剩下的工作都在核对上——把标记一处一处看过去,确认每一处之前的那段区间到底有多窄。

五、在历史数据上走一遍

条件写完之后,把它放到一段较长的历史数据上跑,观察两类位置:一类是标记出现后价格继续在区间内往返的,一类是标记出现后价格没有回到区间的。把这两类的数量分别数出来,是了解这段条件在历史数据上表现如何的方式,与它将来是否可用是两件事。

统计时记录三样东西:区间长度与收窄阈值的取值、统计的时间区间、以及统计样本覆盖的品种范围。三样缺一样,换个设置再跑一次得到的结果就无法与前一次比较。

统计结果本身只描述这一段历史里发生了什么。同一段条件换一段行情跑,得到的数字会不同,这个差异属于数据,不属于公式。把每轮统计的条件与结果都留档,几轮之后回看,能够分出哪些数字是条件变化带来的,哪些是行情变化带来的。这一步做完,公式的适用范围才算有了依据。

留档的格式不必复杂,一行写清区间长度、收窄阈值、统计起止与样本条数就够了。格式固定之后,几行记录并排看,差异一目了然。

六、这段公式的适用范围

通达信横盘突破公式只做了一件几何上的事:把一段收窄的区间圈出来,再看价格有没有越出它的上沿。区间怎么定、阈值取多少、周期用哪个,都由使用者决定,公式本身不包含对这些选择的判断。换个品种、换个周期、换一段行情,同一段公式圈出的位置就会不同。

因此使用之前要先定三件事:区间长度、收窄阈值、以及统计所依据的时间范围。三件事定下来,公式的输出才有确定含义。相关的内容可以对照着看:量价形态与信号拆解 一栏讲形态条件的量化表达,回测验证与风险控制 一栏讲在历史数据上核对条件的口径,指标原理与参数优化 一栏讲参数改变对输出的影响。

文中函数名、参数取值与阈值均为写法示例,以通达信金融终端为参照;不同版本与券商定制版的函数支持范围、数据深度可能存在差异,请以你所用版本编辑器内的函数说明与本地数据实际情况为准。

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