你想表达的条件是「成交比前几天明显放大」,写出来却只有 VOL>REF(VOL,1) 这一句。通达信成交量选股公式最容易出问题的地方就在这里:条件成立的日子确实变多了,可多出来的那些并不符合原先的想法,自然语言到源码的那一步把条件翻译得太粗了。
下面按「先分清公式类型,再选表达方式,再定参数,最后核对结果」的顺序讲清楚通达信成交量选股公式怎么写。文中的菜单项与函数名以通达信金融终端个人版为准,券商定制版的界面项名称可能有差异。全文只讲条件的表达方式与验证方法,不涉及任何标的的判断,也不给出方向性结论。
一、先分清条件公式与指标公式
通达信里的公式分成两类出口。指标公式输出一条或多条数值序列,挂在主图或副图上显示,用来观察;条件公式输出 0 或 1 的取值,供条件选股功能筛选用,用来判断。
这个区别决定了源码的写法。指标公式里可以保留中间变量并让它们显示出来,条件公式则必须收敛到最后一个取值上。把一段副图指标直接丢给条件选股功能,会直接提示公式类型不匹配,或者条件恒成立。
识别办法看公式管理器里的分支目录:技术指标分支下的公式不会出现在条件选股的公式列表里,条件选股分支下的公式也不会出现在副图挂载的列表里。写完一段源码之后先确认保存到了哪个分支,比事后排查省时间。
| 项目 | 指标公式 | 条件公式 |
|---|---|---|
| 输出 | 一条或多条数值序列 | 单个成立与不成立的判断 |
| 入口 | 公式管理器 → 技术指标 | 公式管理器 → 条件选股 |
| 结尾写法 | 变量名加冒号,输出到副图 | 变量名加冒号,但取值收敛到 0 或 1 |
二、量能条件有三种表达方式
把「量能放大」这类描述落成源码,可用的表达方式有三类。三类算的不是同一个东西,混用会让条件变得无法核对。
- 与自身历史比。用当日成交量除以过去若干日的平均成交量,得到倍数。这一类回答的是「比自己的平常水平大多少」。
- 与价格配合比。用成交量与当日价格变动的方向组合,得到量价配合的判断。这一类回答的是「放量的同时价格往哪边动」。
- 占总量比。用当日成交量占同期总成交量的比例,得到相对份额。这一类回答的是「在这段时间的成交里占多大分量」。
三类里第一类最容易核对,因为它只需要成交量和它的历史值,不引入第二个字段。条件写得越少依赖,出错时定位越快。
三、把自然语言翻成源码
以第一类为例,把「比过去 5 日均量放大 1.5 倍以上」翻译成源码,写出来是这样。
{ 条件:当日成交量超过过去 5 日均量的 1.5 倍 }
N: 5 (1, 250, 1)
R: 1.5 (0.5, 10, 0.1)
均量:=MA(REF(VOL,1),N);
放量:VOL>均量*R;
这段源码里有两处容易写错的地方。一是分母取的是 REF(VOL,1) 而不是 VOL:把当日成交量算进均量里,放大的倍数会被自己稀释,条件变得偏松。二是结尾用 > 做比较,输出的就是 0 或 1,可以直接给条件选股功能使用。
四、参数与阈值怎么定
两个参数里,N 决定基准的平滑程度,R 决定门槛高低。二者不独立:把 N 调大,均量曲线变平滑,同样的 R 会筛出更多日子;把 R 调高,筛出的日子变少,但减少的是哪些日子取决于 N。
还有一个与参数无关的变量是复权口径。前复权与不复权下,同一根 K 线的成交量数值本身不变,但与之配合的价格条件会变;若通达信成交量选股公式里同时用了价格与量能,两种复权设置下的结果会不同。核对前把复权设置固定下来,并在记录里写明用的是哪一种。
定参数的办法是先固定一个,再调另一个,并且每次都把筛出的日子数记下来。两个参数同时改,结果变化时就分不清是哪一个造成的。这个过程在公式管理器的参数栏完成,改完保存、回到条件选股界面重新执行即可。
| 调整方式 | 效果 | 要注意的副作用 |
|---|---|---|
| N 调大 | 基准更平滑,条件更容易成立 | 对单日的突然放量不敏感 |
| N 调小 | 基准贴近近期,条件更严格 | 前一日异常值会主导基准 |
| R 调高 | 筛出的日子变少 | 门槛过高时结果为空,不代表没有放量 |
五、四类情况会让条件失真
条件写对了,结果仍然可能与预期不符。下面四类是核对时应当逐个排除的。
| 情况 | 表现 | 核对办法 |
|---|---|---|
| 本地数据起点不足 | 图表左端若干位置无结果 | 把数据起点与结果为空的位置对照 |
| 复权设置不一致 | 同一条件在不同复权口径下结果不同 | 固定复权设置后重跑一次 |
| 分母含当日数据 | 条件长期偏松,成立次数异常多 | 检查均量里是否用了当日成交量 |
| 停牌与半日交易 | 个别位置的成交量与常态不同 | 对照当日实际成交时间 |
第三项是在通达信成交量选股公式里出现次数最多的一类写法问题,且不会报错。判断办法很简单:把均量单独输出成一条副图曲线,看它是否在当日放量时跟着一起抬高。跟着抬高,说明分母里混进了当日数据。
六、用条件选股功能核对结果
通达信的条件选股功能在公式管理器之外的另一个入口,菜单路径为「功能 → 选股器 → 条件选股」。选好公式与周期、指定数据范围后执行,结果会列在选股结果窗口里。
核对时用两个动作。第一个是把条件中的阈值改成极端值:把 R 改到远高于常态,结果应当为空;把 R 改到远低于常态,结果应当覆盖大范围对象。若极端取值下结果不变,说明条件没有真正参与判断。第二个是把参数组合记下来,换个时间点重跑一次,结果应当一致;不一致时先检查复权设置与数据是否发生过更新。
七、动手前的检查清单
写通达信成交量选股公式之前,按下面五项对一遍,能省掉一轮返工。
- 公式类型选的是条件选股,不是技术指标;
- 均量的分母用的是
REF(VOL,1),不含当日成交量; - N 与 R 都声明在参数表里,没有写死在源码中;
- 结尾是
>这类比较表达式,输出收敛到 0 或 1; - 本地数据已下载到足够的历史长度,覆盖要核对的最早位置。
本文只讨论条件的表达方式、参数设置与结果核对方法,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 公式编写与语法函数 里讲参数表与比较表达式的条目、公式安装与导入 里讲公式管理器入口的条目、指标回测与风险验证 里讲数据口径与失效场景的条目,可对照查看。
