通达信只选板块公式这个说法,容易让人以为函数表里有一个专门的板块函数。实际情况不是这样:公式语言本身没有区分对象层级,作用范围是在公式之外指定的。同一段源码,把执行范围设成板块指数,它算的就是板块;设成全部品种,它算的就是全部品种。

本文把这个设定过程拆开讲:范围在哪一步指定、板块数据与个股数据的字段差在哪、核对时按什么顺序看。文中以通达信金融终端个人版的菜单与字段为准,券商定制版的入口名称可能有差异。全文只讲公式的作用范围与数据字段,不涉及任何标的的判断,也不给出方向性结论。

先要区分的是三件事:公式的语法、公式的执行范围、以及被执行的数据。语法决定这段代码能不能编译,执行范围决定它作用在哪些对象上,数据决定每个对象上算出什么。三者混在一起时,排查会找不到入手的位置。

一、作用范围在哪个环节设定

公式的编译与执行分成两个阶段。编译阶段只看语法,不关心对象是谁;执行阶段才把公式套到一批对象上。作用范围的指定发生在第二个阶段,可选的入口有两处。

入口 路径 作用范围
条件选股 功能 → 选股器 → 条件选股 由选股范围下拉框决定,可选板块或全部品种
板块分析 行情列表切换到板块页签后挂载指标 当前表格里的对象集合
副图挂载 K 线图上的指标切换 当前图表对应的单一对象

「只选板块」在操作上就是在条件选股界面把范围下拉框设成板块,而不是在源码里加条件。这样设定的好处是同一段源码可以在两种范围下复用,不必维护两份写法。

范围与条件的分工可以这样理解:范围决定公式被应用到哪些对象上,条件决定每个对象是否被记为成立。两者组合起来才是完整的一次执行。把范围写进源码,等于把这两个环节绑在一起,之后想换一批对象就只能改代码。

{ 源码本身不含范围设定,两种范围共用一份 }
N: 20 (1, 250, 1)
均量:=MA(VOL,N);
放量:VOL>均量*1.5;

二、板块数据与个股数据的字段差异

板块指数与个股用的是同一套字段名(开盘、最高、最低、收盘、成交量、成交额),但每个字段的含义不完全等价。板块的成交量是成分股的合计,价格是按某种加权方式合成的指数点位。这带来三处需要注意的地方。

字段 个股上的含义 板块指数上的含义
收盘价 该品种的成交价 按权重合成的指数点位
成交量 该品种的成交量 成分股成交量合计
成交额 该品种的成交金额 成分股成交金额合计

第一项的差别最要紧。指数点位的水平数值取决于编制时的基准,把指数点位代入需要价格量纲的表达式(例如与某个价格阈值比较),结果没有可比性。依赖价格比率的表达式(例如涨跌幅度、均线关系)不受影响,因为基准在相除时被约掉了。

成交量的差别在核对时也要留意。板块的成交量是成分股合计,合计值会随成分数量的多少而变。两个成分数量相差较多的分类,直接比较成交量合计没有得到信息;换算成相对自身历史的倍数之后,才具备比较的基础。

判断一段写法能不能直接搬到板块上,看它是否只用到价格的相对关系。只用相对关系的,可以直接搬;用到价格水平数值的,需要先改成比率形式。

三、一份可复用的核对清单

把通达信只选板块公式套用到一批板块之前,按下面的顺序逐项核对。顺序是从数据到条件再到结果,前一项不过关时后面的核对没有意义。

顺序 核对项 怎么确认
1 板块数据是否已在本地 行情列表切到板块页签,看是否有历史 K 线
2 板块清单是否包含需要的分类 对照板块管理界面里的分类列表
3 公式是否只用到相对关系 逐行检查,标记出比较价格水平数值的语句
4 参数是否已外露 公式管理器参数栏能看到 N 与阈值
5 范围下拉框是否设成板块 条件选股界面的范围一栏
6 结果清单能否逐项复核 抽一个对象手工核对一根 K 线的输出

第六项是整套核对里最容易被跳过的一步。查办法是随便取一个对象,把它的量价数据抄下来,按源码算一遍,与结果清单里的判断对照。对得上,前面的五步才算数;对不上,回到第三步重新检查表达式。

核对时建议固定一个对象反复用。固定对象的好处是数据不变,改动只有公式本身一处,问题定位路径短。每改一次源码就回到同一个对象上重算一遍,能较快看出改动带来的影响,也不必再追一遍数据是否发生了变化。

四、四个容易混淆的地方

下面四处是在使用通达信只选板块公式时容易被混为一谈的,逐条分清能省掉一轮无效排查。

  • 板块与板块指数不是一回事。「板块」是对象的集合,「板块指数」是集合合成出来的单一序列。把公式挂在集合上,得到的是每个对象的判断;挂在指数上,得到的是合成序列上的判断。两者的结果数量不同。
  • 自定义板块与系统分类是两套。自定义板块的成分由使用者维护,系统分类的成分随软件的板块数据更新。两套的成分会不一致,核对时要说明用的是哪一套。
  • 成分变动会改写历史。按当前成分回看历史,得到的是换了成分之后的序列。这一点在核对早期区间时要留意。
  • 范围设定不写进源码。同一段源码在不同范围下结果不同,源码本身看不出差别。分享公式时要把范围一并说明,否则对方复现不出同样的结果。

第三项与第四项合起来解释了一个现象:同一份源码,两个人跑出的结果不同。差别未必在代码上,可能在范围设定或成分版本上。

补充一点关于自定义板块的维护。自定义板块的成分需要手动增删,长期不维护之后,它与系统分类的差别会越来越大。核对之前先把自定义板块的成分清单导出一份,与系统分类对照,确认差在哪些对象上。这一步能避免把成分差异误当成公式差异。

这里没有列出各分类板块的字段命名与更新频率。这些内容随软件的板块数据版本变动,写死在文章里很快会过期,以你手上那版的板块管理界面为准是可靠的核对途径。

清单式的内容容易读完就放下,留一个可执行的落点更有用。把上面六项核对顺序抄成一张表格,每次换一批对象时重填一次,填不满的位置就是这次要补的功课。

既然如此,核对通达信只选板块公式的落点就很清楚了:先确认范围是在公式之外设的,再确认算法没有依赖价格的水平数值,最后抽一个对象手工验算一遍。这三步走完,剩下的问题就只剩下数据本身了。

本文只讨论公式的作用范围设定与数据字段口径,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 复盘方法与数据工具 里讲数据整理与清单核对的条目、公式编写与语法函数 里讲参数表与表达式的条目、公式安装与导入 里讲公式管理器入口的条目,可对照查看。

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