通达信主力公式里的「主力」,不是一个能直接观测到的量。行情软件能拿到的原始数据只有每一笔成交的价格、数量和时间,没有任何一个字段写着这笔成交的参与方是谁。所以所谓主力,实际上是使用者用成交数据构造出来的代理变量,不同公式指向的可以是完全不同的东西。

把这一点先摆正,后面关于参数与取值的问题才讲得清楚。本文拆解三类常见的构造口径,说明每一类在数学上算的是什么,以及口径不同会带来哪些后果。文中以通达信金融终端个人版的函数与数据字段为准。全文只作公式原理的讨论,不涉及任何标的的判断,也不给出方向性结论。

一、主力是代理变量,不是观测量

代理变量的意思是:想测量 A,但 A 测不到,于是改用与 A 有某种关联的 B 来近似。B 可以被算出来,B 与 A 的关联强度则取决于假设,而不取决于公式写得漂不漂亮。

这一点决定了几件在实务上要紧的事。第一,两个都叫「主力」的公式可以给出方向相反的曲线,因为它们的代理变量不同,谁也不算错。第二,公式的输出值本身没有单位,曲线的高低只有与自己的历史区间比较才有意义。第三,把参数改一改,曲线的形态就会变,参数是口径的一部分,不是精度调节旋钮。

说法 实际所指 能否直接验证
主力在某价位附近活动 该价位附近成交量较集中 可以,用成交分布核对
主力正在流入 按某口径算出的净额为正 只能核到口径,核不到参与方
主力已经离场 按某口径算出的净额转负 同上

二、三类常见的构造口径

把市面上叫「主力」的公式归一下类,算法基本落在三类里。每一类算的都是可以复算的东西,区别在于用哪些字段、如何加权。

  • 按单笔成交额分档。设定一个金额阈值,把超过阈值的成交记为「大单」,统计大单在两个方向上的成交金额之差。这里的核心假设是:单笔金额大与参与方规模大相关。阈值取多少,直接决定结果,且这个阈值没有标准答案。
  • 按主动方向统计。以成交价与买卖盘口的关系判断该笔成交是主动成交还是被动成交,再按方向累计金额。核心假设是主动方向能反映意愿强弱。逐笔数据可得性与盘口快照频率会影响这一步的精度。
  • 按量价加权合成。不区分单笔大小,直接用价格变动与成交量的组合构造指标,例如以涨跌方向对成交量加权后做累计。核心假设是价格变化方向已经隐含了资金意愿。
{ 第三类的典型骨架:方向加权累计 }
DIR:=IF(CLOSE>REF(CLOSE,1),VOL,IF(CLOSE<REF(CLOSE,1),-VOL,0));
ACC:=SUM(DIR,N);
主力线:ACC;

这段代码只用两个字段:收盘价与成交量。它算的是「按涨跌方向加权的成交量累计」,没有任何一步涉及参与方身份。把它称作主力线,是把一个统计量换了一个通俗名字。

三、参数怎么定,取值怎么读

三类口径里都有 N 这个累计周期参数。N 决定了曲线对近期变化的敏感程度:N 小,曲线随单日量能变化而频繁转向;N 大,曲线平滑,代价是转向滞后。参数本身没有正确值,要选的是与使用场景匹配的平滑度。

{ 参数表声明,界面可直接改 }
N: 20 (5, 250, 1)
DIR:=IF(CLOSE>REF(CLOSE,1),VOL,IF(CLOSE<REF(CLOSE,1),-VOL,0));
主力线:SUM(DIR,N);
零轴:0;

取值怎么读,要解决的是量纲问题。上面这段的输出是成交量单位的累计值,数值大小取决于该品种的成交量级别,不同品种之间不可比。可行的读法是两件事:一看曲线与零轴的位置关系,二看曲线与自身历史区间的位置。跨品种比较数值高低没有意义。

通达信主力公式的参数还有一处容易被忽略:阈值类参数的单位。按单笔成交额分档的那一类,阈值可以按金额定,也可以按手数定,还可以按与当日均量的倍数定。三种写法在同一段行情上会圈出不同数量的成交,最终曲线自然不同。核对时要把阈值连同它的单位一起记录,只记数字没有意义。

把零轴画出来是一个有用的习惯。有了零轴,曲线在零轴上下两侧的形态差别就变成可观察的;没有零轴时,纵轴自适应缩放会让曲线看起来始终在中间波动。

四、口径不同会带来三个后果

做通达信主力公式的对比与选用时,下面三个后果是绕不开的。

后果 具体表现 应对
曲线方向可能相反 两个都叫主力的公式在同一段区间上一个向上一个向下 先看两者的构造假设,而不是比较数值
参数改动会改形态 N 从 20 改到 60,曲线的转向点整体后移 把参数当作口径的一部分记录
跨品种不可比 不同成交量级别的品种数值差一个量级 只做自身历史区间的比较

第一项最容易被当成「其中一个算错了」。判断办法是把两段源码各自拆到最底层,看它们用的是同一类字段还是不同类字段。同类字段、不同参数,属于口径同一而平滑度不同;不同类字段,属于口径不同,两者本就不该一致。

还有一个常被跳过的步骤是确认数据可得性。按主动方向统计的那一类需要逐笔成交或较高频率的盘口快照,本地未下载这部分数据时,公式可能取到空值或退化成一个近似值。检查办法是把公式挂在分钟周期上跑一遍,看输出是否随周期缩短而变得细碎;输出完全不随周期变化的,多半没有真正用到逐笔数据。

需要留意的是引用类函数。若源码里用到了 ZIG、PEAK、TROUGH 这类峰谷函数,或者引用了尚未走完的周期数据,同一根 K 线在不同时刻算出的值会不同。核对时要先把这类函数挑出来单独看,否则会把未来数据造成的变化误当成参数效果。

五、验证方法与适用边界

验证一段通达信主力公式,能做的是复算,不是验证「主力」这件事。具体三步:把源码里用到的字段逐个列出来,确认每一个字段都能在软件的数据字典里找到;把参数代入一组具体数值,手算一根 K 线的输出;把公式输出与手算值对上。

手算样本的取法有讲究。取一段成交量已知、K 线根数不超过十根的区间,把每一根的量价数据抄下来,按源码的运算顺序逐步算一遍。根数少是为了让每一步都能对上,区间太长反而看不出错在哪一步。

三步走完,能确认的是公式如实算出了它声称的统计量。这之后仍有一层无法跨越的边界:从统计量到「主力在做什么」之间的那一步,是假设,不是推导。假设是否成立,取决于市场结构,只能观测,不能由源码证明。

通达信主力公式的合理用法,是把它当成一个口径明确、参数可核对、能复算的统计指标来用。它的价值在于取值过程透明,而不在于名字带来的解释力。

本文只讨论公式的构造口径与验证方法,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 指标原理与参数 里讲参数含义与取值口径的条目、指标回测与风险验证 里讲未来函数与样本区间核对的条目、公式编写与语法函数 里讲字段与函数用法的条目,可对照查看。

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