通达信公式图标设置,落到代码里就是一个函数:DRAWICON。三个参数分别管「什么时候画、画在哪、画哪一个」。卡住的人多半不是不会写这个函数,而是没弄清第三个参数指的是内置图标库里的编号,以及图标是画在指定坐标上的一个点,不参与曲线连接。
下面按参数含义、编号来源、位置对齐、主图副图差别、不显示排查与使用约定六步讲。文中函数名、菜单名与目录名称为通达信客户端的通用描述,不同版本与券商定制版对图标数量与函数形式的支持存在差别,请以你所用客户端的实际界面与官方说明为准。
一、三个参数分别管什么
DRAWICON 的参数顺序固定,职责分工清楚。
{ DRAWICON 的参数分工 }
第一个参数 —— 条件,结果为 1 或 0 的表达式
第二个参数 —— 位置,图标画在哪个数值高度上
第三个参数 —— 编号,内置图标库里的序号,整数
{ 三个参数都是序列,按根求值,条件成立的那几根才画 }
第一个参数写成比较表达式即可,例如收盘价高于某条均线的判断。比较结果为 1 时画,为 0 时不画。写成多个条件的组合也可以,用逻辑与、逻辑或连接,注意连接之后整体仍要能按根求出一个 1 或 0。
二、图标编号从哪来
通达信公式图标设置里最容易含糊的是第三个参数。编号不是自定义的图片,而是客户端内置图标库的序号,从 1 开始往后排。客户端里有哪些图标、一共多少个,由版本决定,不同版本的内置图标集存在差别。
| 做法 | 操作 | 适合什么时候用 |
|---|---|---|
| 逐个试画 | 新建一条公式,把编号从 1 递增,逐个保存并挂图 | 第一次确认本版本的图标集 |
| 成排对照 | 在一张图上并列画出若干编号,看哪一个符合语义 | 需要挑一个与含义相配的图标时 |
| 用统一编号 | 全部信号都用同一个编号 | 只关心有无信号、不区分类型时 |
逐个试画听起来笨,但它是一次性成本。把本版本的图标集确认一遍,记下常用几个编号,后面写公式时直接取值,不用每次重新试。编号成排对照的写法,用一条公式画出多个编号即可,不需要建多条公式。
三、位置参数要对齐到同一根
位置参数决定图标画在哪个高度上,它与条件参数按同一根 K 线求值。写在低位信号上,位置就取最低价一类的值;写在高位信号上,位置取最高价一类的值。两处若取自不同来源,图标的位置会与信号出现的那一根错开。
{ 位置对齐的两种写法 }
画在信号当根的下方:位置取当根最低价,再向下留一段距离
画在信号当根的上方:位置取当根最高价,再向上留一段距离
{ 距离用固定值或振幅比例表达,不要用未来数据 }
四、挂在主图与副图上的差别
通达信公式图标设置里还有一处与显示有关的差别:同一个公式挂到主图与挂到副图,位置参数面对的是两套坐标。主图的纵轴是价格,位置取价格量纲的数;副图的纵轴是公式自己的输出范围,位置要落在副图数值的范围内。
副图上画图标还有一个前提:副图的纵轴范围要能容纳这个位置。副图按公式自身的输出范围自动缩放,图标位置取在输出范围之外时会被截掉。核对办法是把位置参数的取值与副图输出的最大最小值放在一起看一遍。
| 挂载位置 | 位置参数的取值依据 | 取错时的表现 |
|---|---|---|
| 主图 | 价格量纲,如最高价、最低价 | 图标压住 K 线或飘到图外 |
| 副图 | 副图输出的数值范围 | 图标挤在边缘或整片不出现 |
判断方法很直接:先看公式挂在哪一侧,再看图标是不是出现在预期的位置。副图上的图标贴边,先怀疑位置参数用了价格量纲。这一点在站内另一篇讲挂载位置的文章里也提到过,见 通达信公式报错与卡顿排查 一栏。
五、图标不显示时的排查顺序
图标不显示的原因集中在几个可枚举的地方,按下面的顺序查比乱试快。
- 条件有没有出现过 1,先把条件用冒号写成可见输出挂到副图上看。
- 位置参数有没有落在图表的显示范围内,数值是不是价格量纲。
- 编号是不是超出了本版本的内置图标数量。
- 公式是否真的挂到了图上,还是在公式列表里没被选中。
- 保存之后有没有重新加载,改动是否已经生效。
第一步是关键。条件从不成立时,后面几项怎么查都是白费。把条件单独输出一次,看它在图上有没有出现过 1 的位置,能直接分开「条件没触发」与「画不出来」这两类原因。
六、图标与画线、文字的配合
图标很少单独使用。一张能读的图上,三类标记同时存在:曲线表示数值走势,图标表示条件成立,文字表示具体数值或状态。三类标记各管一段信息,混在一起用会让图变得难以读。
分工的原则是各管一层。曲线负责连续的数值,图标负责离散的事件,文字负责需要读出具体数值的位置。同一个判断不要既画图标又写文字,两者重复出现时,图上会被同一件事占据两处位置。
{ 三类标记的分工 }
曲线 —— 连续输出,如均线、差值、比例
图标 —— 条件成立的那几根,标一个点
文字 —— 需要读出具体数值的位置,用文字标注函数
{ 想加第四层时,先看能不能并进已有的某一层 }
画线与图标放在同一条公式里时,注意输出顺序。冒号输出的部分会参与图例与数值显示,冒号等号赋值的部分只作为中间量。把图标条件写成中间量、只在需要时输出,图例里就不会多出一行无意义的条目。
七、把图标用好的三条约定
第一条是同类信号用同一个编号。图标是一种标记,编号混用会让图上分不清哪一处是哪一类信号。把每一类信号与一个编号固定对应,写进公式的注释里,过一段时间回来改公式时不用重新猜。
第二条是控制图标的密度。条件写得宽,图标会连成一片,反而看不出结构。需要压密度时,给条件加时间间隔限制,例如与上一次出现保持若干根以上的距离,写法上用计数函数配合条件判断实现。
第三条是图标不承担计算职责。它是给眼睛看的标记,公式的输出值才是可被其他公式引用的部分。把关键判断只放在图标条件里、不写成独立输出,别人引用这段公式时拿不到这个判断。
把图标与画线配合使用,一张图上的信息层次会更清楚。画线函数的写法与颜色设置见 通达信公式编写教程 一栏,主图副图的整体呈现约定见 通达信主图副图指标 一栏。通达信公式图标设置这一项的核对,建议在公式定稿后连同画线部分一起做,避免改一处忘一处。
文中函数名与菜单名称为通达信客户端的通用描述;不同版本与券商定制版对内置图标的数量与编号、DRAWICON 的参数形式、副图坐标范围的处理存在差异,具体请以你所用客户端的实际界面与官方说明为准。本文只讨论绘图函数的参数与显示设置,不构成任何投资建议。
