通达信板块公式筛选这个动作,第一次做的人常以为有一个「板块列表」函数可以调,写一句就拿到全部成分。实际做法正好相反:板块信息挂在每个标的自身的数据上,取数是按标的走,筛选是在这个结果之上做的一次归类与计数。

弄清这个取数方向,后面的写法就顺了。下面按数据挂在谁身上、单板块与多板块池的两种写法、板块层面的汇总口径,以及在复盘流程里的使用方式展开。文中函数名与写法以通达信 PC 版的公式系统为准,不同版本与券商定制版在板块字段与刷新机制上存在差异,请以你所用客户端帮助文档里的字段说明为准。

先明确一件事:板块筛选与选股不是同一个操作。板块筛选关心的是「哪些标的属于某组板块」,选股关心的是「哪些标的满足某个条件」。本文只讨论前者,后者的条件设计另有口径。

一、板块信息挂在标的身上,不在另一个列表里

通达信的数据组织方式是:每只标的身上带若干属性字段,其中包含它所属的板块、行业、地域等信息。公式运行在同标的的数据上,因此取板块信息就是读这些字段。这意味着算式本身不区分「查板块」和「查个股」,它始终是对当前标的求值。

想做的事 数据的实际所在 常规做法
判断当前标是否属于某板块 标的自身的板块字段 读取对应字段后做条件判断
取某个板块的所有成分 不在单个标的身上 交由条件选股功能按条件筛出全体
统计某板块整体的量能 板块指数自身的数据 改用板块指数作为标的取数

第二行是理解上的关键分界。公式一次只对一只标的求值,它没有能力「列出」一批标的;列出结果这件事由条件选股功能完成,公式负责提供判断依据。把这两件事分开,通达信板块公式筛选的写法就只剩「怎么写好那个判断条件」。

二、单板块限制的写法

最简单的需求是给算式加一个范围限定:只在某个板块内成立。写法是在原有条件上追加一个板块归属的判断。以行业板块为例,先用 HYBLOCK 一类的字段取出所属行业名称,再与目标名称比对。

{先取所属行业名称,再与目标比对}
所属行业:=HYBLOCK;
在目标行业:=所属行业='目标行业名称';

{叠加到原有条件上}
原条件:=CLOSE>MA(CLOSE,20);
叠加后:原条件 AND 在目标行业;

两点要说明。第一,板块名称的字符串必须与客户端里显示的完全一致,多一个空格或用了简称都匹配不上,写完之后用一次条件选股回看结果数量,为零时要先怀疑名称写错。第二,字符串前不要加多余的符号,两边的引号必须是英文半角。

行业之外的板块类型使用另外的字段,地域、概念各有对应项。字段名随版本变化,可靠的做法是在公式编辑器的函数列表里按类别查找,而不是凭记忆写。

板块归属字段返回的是名称字符串,不是编号。这意味着它对板块改名敏感:客户端里调整了板块名称之后,原来能匹配的条件会静默失效,不报错、不提示,只是筛选结果变空。定期回看条件的命中数量可以及早发现这类失效。

三、多板块池的写法

需要用一组板块而不是单个板块时,写法上有一个容易忽略的取舍:把多个判断用逻辑运算串起来,还是先归一再判断。

{写法一:逐个枚举,逻辑或连接}
池1:=(HYBLOCK='板块甲') OR (HYBLOCK='板块乙') OR (HYBLOCK='板块丙');

{写法二:先归一,再统一判断}
所属:=HYBLOCK;
在池中:=(所属='板块甲') OR (所属='板块乙') OR (所属='板块丙');

两种写法的取值相同,差别在维护。板块数量增加时,写法一只需在末尾追加一项;写法二需要同时改两处。板块数量不多的场合,写法一的修改成本更低。

板块数量多到十几个时,逐条枚举的可读性会下降。这时可以把名称判断收进一个中间量,让主条件保持简短:

{名称判断单独成行,主条件只引用结果}
在池中:=(HYBLOCK='板块甲') OR (HYBLOCK='板块乙') OR (HYBLOCK='板块丙')
      OR (HYBLOCK='板块丁') OR (HYBLOCK='板块戊');

{主条件保持一行}
结果: 在池中 AND CLOSE>MA(CLOSE,20);
拆行时注意换行的位置。算式在运算符后换行是安全的,在关键字或函数名中间换行会让编译器把两段拼成无法识别的记号。把换行统一放在逻辑运算符后面,可以避免这一类问题。

四、板块层面的汇总口径

有时需求不是「筛出板块内的标的」,而是「看板块整体的情况」。这是另一条路径:把板块指数作为取数对象,用它的数据参与计算。板块指数在客户端里有对应的代码,写法与普通标的相同。

汇总需求 取数对象 注意点
板块整体涨跌 板块指数 指数有自身的加权口径,不等于成分的简单平均
板块整体量能 板块指数 指数的量能字段同样是加权口径
成分的分布情况 需在选股结果上二次统计 公式内无法完成跨标的计数

第三行又回到前文那条边界:公式一次只对一只标的求值,跨标的的计数要在选股结果的列表上做,不在公式里做。把它记成一条约束,就不会在算式里反复尝试无法实现的写法。

五、放进复盘流程的使用方式

板块筛选的产出是一份名单,它的价值取决于这份名单接下来怎么用。把它接进复盘流程时,有三种排法。

  1. 先按板块列出当期范围内的标的,再在其上叠加自定义条件。这样得到的名单范围收敛,二次核对的工作量小。
  2. 先按自定义条件筛出结果,再看这些结果分别落在哪些板块。这种方式能看到条件的分布,适合检查条件是否在某一类标的上集中出现。
  3. 把两种排法的结果做差集,看被板块条件挡掉的那部分。差集里反映的是被板块条件排除掉的那一类标的,值得单独看一遍。

三种排法的产出都要落到记录上才有复盘价值。记录时保留三类字段:筛选所用的条件、结果的数量、以及结果的板块分布。数量用于判断条件是否收得过紧或过松,分布用于判断条件是否偏向某一类标的。

{记录用的输出:把关键判断暴露成可见的量}
在池中:=HYBLOCK='板块甲';
结果: 在池中 AND CLOSE>MA(CLOSE,20);
命中数:COUNT(结果,0);

把命中数单独输出成一条线,可以在图上直接读到累计命中情况,不必每次都去看条件选股的结果数量。它是一个数值序列,不具备方向含义,适合作为条件松紧的参照。

六、写法上的几条边界

最后收拢几条限制,都是在算式已经写出来之后才容易发现的。

  • 板块字段的值在盘中可能随数据刷新而变化,纳入或移出板块的成分会在两根之间切换。以板块归属作为限定条件时,这根切换会造成结果数量的跳动。
  • 板块名称的匹配区分全角与半角字符。从文档里复制名称时如果带了全角空格,匹配会静默失败。
  • 板块指数在某些版本的免费客户端里数据长度较短,以它为对象的窗口函数在起点附近取值不完整。

通达信板块公式筛选的做法可以压缩成两句:板块信息按标的取,筛选结果由条件选股列出。算式里能做的只有判断,不能做的是枚举。认识到这一点,写法上的取舍就都清楚了。

板块与指数相关的字段取法可以对照 复盘方法与数据工具 一栏;算式能编译但结果为空时的排查顺序,见 报错与卡顿排查 一栏;条件写在选股功能里的完整设置方式,见 选股公式与预警 一栏。

一句判断:判断板块归属是一件事,枚举板块成分是另一件事。前者写在公式里,后者交给功能去做,混在一起写是这类算式反复失效的常见原因。

文中字段名与语法按通达信 PC 版公式系统的常见写法描述;不同版本与券商定制版在板块字段命名、刷新机制与指数数据长度上存在差异,具体请以你所用客户端帮助文档为准。本文只讨论公式语法与数据口径,不构成任何投资建议。

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