先给结论:判断通达信买卖点公式验证做没做成,不看它能不能在图上画出点,看你能不能说出这个点在什么条件下不该出现。说不出来,说明你验的只是它亮不亮,不是它亮得对不对。

下面把验证这件事拆成可执行的四层。语法以通达信金融终端个人版为准,涉及的函数在不同版本里的参数个数会有差别,动手前先在自己软件里试算一遍。

一、先分清「信号」与「结论」不是一回事

通达信买卖点公式验证的第一个坎在命名上。公式输出的是一行判断成立的位置,而在日常说法里这个位置往往被当成一个结论。这两者之间隔着关于后续走势的判断,公式不承载这件事。

说法 它实际是 能不能写进公式
条件成立位置 几个数值比较同时为真 可以,这是公式的输出
形态位置 满足某种价格与量能组合的那一根 可以,但要写清组合的具体定义
后续会怎样 对未来的判断 不可以,公式读不到未来的数据

把三者分清之后,验证的目标就明确了:你要确认的是前两类的定义有没有被正确实现,而不是第三类会不会应验。前者是可验证的,后者不是。

二、条件链拆开逐项验

通达信买卖点公式验证的第一步是把整条条件链拆成单项。合成后的公式只给一个亮或不亮的结果,中间哪一项出了问题看不出来。

{ 原式:合成后的判断 }
信号: 条件一 AND 条件二 AND 条件三, COLORRED;

{ 拆开:逐项单独输出 }
项一: 条件一, COLORYELLOW;
项二: 条件二, COLORGREEN;
项三: 条件三, COLORBLUE;

{ 看四项输出的亮法,判断哪一项在替整条链做决定 }

拆开之后要看的是亮法对应关系。如果合成输出与某一项的输出完全重合,说明其他项在整段区间里恒为真,这一项实际上替整条链做了决定;如果合成之后一个都没亮,去找哪一项恒为假。这两种情况都属于条件有冗余或有一项写反了,不是公式坏了。

逐项输出之后,把四项放在同一个副图上并排看,比拆成四个窗口来回切更快。颜色分开是为了区分,用几个明显的不同色就够,不必讲究配色。

三、用历史区间检查两件事

拆完逐项,下一步是把公式放回历史区间,检查两个具体的量。

第一个是信号数量。在同一段区间里数信号的出现次数,数量异常多说明条件太松,一个没有说明某个子条件恒为假。这两个都不算得出结论,它们只是提示条件链里有问题,具体是哪一个,还得回到上一节的逐项输出。

第二个是信号与形态的对应。把信号位置与主图对照,看它们落在什么样的价格结构上。这一步的目的是确认「条件翻译得对不对」——如果你写的是某个形态,而信号出现在完全不相干的位置上,那是条件定义与需求之间对不齐,与语法无关。

检查项 正常表现 异常时的排查方向
信号数量 在一段区间里有疏有密,能数得清 过密看条件是否太松,为零看是否有项恒假
信号位置 集中在某类形态上 散落各处看字段或周期是否选错
历史与当前的一致性 同一段区间重复计算输出相同 输出会变,检查是否引用了当前根的数据

四、未来函数:让历史看起来很顺的那种写法

通达信买卖点公式验证里有一项要单独做,就是查未来函数。有一类函数在计算当前这一根 K 线时会读到它之后的数据,用了这类函数,公式在历史区间上会表现得很顺,在当时那一刻却算不出同样的结果。

{ 判断当前是不是最后一根 K 线 }
末根 := ISLASTBAR;

{ 把信号与这个判断一起输出,看是否同步出现 }
信号: 条件, COLORRED;
末根标记: 末根, COLORGRAY;

{ 信号只在末根这一根出现,说明公式依赖了
  只有在数据结束时才知道的信息 }

另一条相关的检查是往回取数的方向。用 REF 往历史方向取数本身不算未来函数;只有在取数的方向上越过了当前 K 线,才会读到之后的数据。检查的办法是把公式挂副图,往历史区间拉远一点,看信号会不会随着区间变长而改变位置——会改变,说明它读到了后面的数据。

把未来函数当成「写作错误」是一种误读。有些用途下这种写法是有意的,例如想让历史形态看起来连续。问题在于它不能用来判断当时那一刻的结果,验证的时候要先把这件事说清,再决定要不要用。

五、复权口径与停牌边界

通达信买卖点公式验证还要过一道数据口径的关。同一个公式在复权与不复权口径下读到的价格不同,均线系统与区间高点都会跟着变,输出的信号位置也就不同。判断公式对不对,要在一个固定口径下做,换口径时把结论也跟着换一次。

停牌那一段也要单独看。停牌期间没有 K 线,REF 与 MA 取到的是停牌前后拼接起来的数据,均线在那一段会失真。把公式挂上去之后,先扫一眼这几处,不要把这部分的输出当成公式表现的一部分。

六、验证至少要做到哪一步

  1. 逐项输出过一遍:每个子条件单独画一次,确认各自亮在哪些位置
  2. 数过信号数量:在同一段固定区间里数一次,记下这个数,改一行公式就再数一次
  3. 对照过主图形态:确认信号落在你要的那种结构上
  4. 查过未来函数:把信号与 ISLASTBAR 一起输出,确认两者不同步
  5. 固定过数据口径:复权方式与周期在验证期间不变
  6. 划出过边界:能说出这个公式在什么条件下不该有输出

六条里最后一条是分界线。前面五条做的事是确认公式按你写的方式在跑,最后一条做的事是确认你知道它的边界在哪里。两条都做到了,验证才算完成;只做到前面五条,等于确认了一台机器在动,但不知道它什么时候会出错。

把这六条落成可重复的动作,还需要一个固定的底子。最省事的办法是把验证用的那段区间、复权口径、计算周期写在一处备注里,每次都照这三项设置去跑。换了其中任何一项,前面数出的信号数量就失去对照价值,得重新数一遍。这一步看着琐碎,但它决定了你前后两次的结论能不能放在一起比。

另外值得单独记一笔的是参数与验证的关系。

逐项输出的做法还有一层用处:它能帮你判断这条公式的条件该不该合并。如果两个子条件的输出位置几乎完全重合,把它们写成两项是重复;如果一个子条件从不出现在另一个成立的位置上,两项之间是互斥的。这两种情况在合成后的输出里都看不出来,只有拆开逐项看才清楚。条件链该怎么组织,依据就在这里。

公式里的阈值、周期数一旦作为参数暴露出来,同一段区间在不同取值下的信号数量会差很多。验证时建议固定一组取值跑完,再换另一组跑一遍做对照,两组之间的差异才是参数带来的影响;如果每组都随手换取值,最后得到的一堆数字之间相互都不可比。

本文讲的是条件构成与验证方法,只作技术研究口径,不构成对任何标的的判断。条件与参数的取值属于设定,不同设定对应不同的清单,这属于公式的设定,不属于行情的结论。

站内还有 量价形态与信号拆解 的其他条目,指标回测与风险验证 里讲信号怎么用历史数据核,通达信公式编写教程 里讲条件表达式的基础写法,可对照查看。

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