通达信分时主图指标公式排查起来,第一层卡点在数据。分时图按 1 分钟周期取数,本地没下载 1 分钟数据的时候,公式算出来的是一条没有内容的线——源码写得再对也不会变。所以先说结论:分时主图不显示,先补数据,再谈公式。
下面按”取数 → 参数 → 挂载 → 显示 → 验证”的顺序讲。文中的目录名与文件名(T0002、PriGS.dat)来自通达信技术部公开的公式文件说明,函数名与周期后缀格式以通达信金融终端个人版为准。券商定制版的菜单名称有差异,界面入口的译名也随版本不同,以你软件里实际的为准。
一、分时主图和日线主图,差的是数据源
通达信分时主图指标公式跨不过去的第一个差异在周期:同一个公式挂在日线图上正常,挂到分时图上什么都没有。日线图的每一根 K 线是当天开高低收四个值,1 分钟图的每一根 K 线是一分钟的成交结果。公式里凡是带周期参数的函数,都按挂载位置的周期去取数。
由此带来两个直接后果。第一,公式里写死的周期参数在分时图上不合适:用日线调好的 MA(C,20),挂到 1 分钟图上就变成了 20 分钟均线。第二,往回取数据的语句在分时图上更容易取空——分时图一个交易日只有若干根 K 线,REF(C, 240) 这种往回数 240 根的写法,一天的数据量根本不够。
二、取数:1 分钟数据从哪来
分时图依赖 1 分钟周期的历史数据。这份数据不在日线数据里,需要单独下载。路径在系统菜单下:系统 → 盘后数据下载,把 1 分钟与 5 分钟勾上,选好日期区间做一次补充下载。下载完成后重启软件,再打开分时图看公式的输出。
有几个容易忽略的边界:
- 下载的区间决定分时的可见范围:只下载最近若干天,往前的分时图就是空的,公式也画不出东西,这不是公式的问题
- 分时数据的落地位置与日线不同:自编公式存在安装目录下的
T0002文件夹(自编指标在PriGS.dat),行情数据是另一套目录,改公式文件不会影响行情数据,重下数据也不会动公式 - 换一台机器要重新下:1 分钟数据不做云同步,换机器打开分时图是空的,需要在这台机器上重新走一次盘后数据下载
三、参数表:三个数值决定可见范围
通达信的公式可以带参数,参数在公式编辑器的参数表里填写,每行三个数值:缺省值、最小值、最大值。这三个数值决定了参数能被调到什么范围,也决定了公式在分时图上能不能取到足够的数据。
| 参数项 | 它决定什么 | 在分时图上要注意 |
|---|---|---|
| 缺省值 | 公式挂上去时先用的取值 | 缺省值按日线调的话,换成 1 分钟周期后含义会变,需要重新设一个适合分时的数 |
| 最小值 / 最大值 | 允许调整的上下界 | 上界设得太大,在分时图上调到上界时会超过一天的数据量,输出为空 |
| 参数名 | 公式里引用这个参数的标识 | 参数名要写成英文或拼音,不要用中文,避免与公式内部变量冲突 |
参数表留空也能保存公式,这时公式里就不能引用参数,只能写死数值。写死数值的公式换周期之后不会自动适配,这也是分时图上输出异常的一个来源。
{ 带参数写法:N 由参数表提供,可在界面上调整 }
均线: MA(C, N);
{ 参数表里填: 参数名 N 缺省值 20 最小值 2 最大值 240 }
{ 写死写法:换周期后依然是 20 根,含义随周期变 }
均线: MA(C, 20);
四、挂载:分时图上的主图位置怎么选
分时图的版式和日线图不同,它上半部分是价格走势、下半部分是成交量。要在分时图的价格区域叠加公式,需要在分时图界面上打开主图指标的切换入口(分时图界面里点右键取主图指标,或者用界面上的指标切换按钮),从列表里选中你的公式。这个入口的名称在各版本上有差异,位置都在主图区域的右键菜单附近。
有一种情况需要区分:公式属性里勾了 主图叠加,在日线图上会叠加到 K 线上,但在分时图上未必自动生效——分时图有自己的一套主图指标设置。在日线上勾好之后,回到分时图要把这套设置也选一次。
五、显示逻辑:坐标轴与画点密度
通达信分时主图指标公式的输出要落在价格区间里才看得见。分时图的纵轴是价格,横向是一天的交易时间。把条件成立与否直接输出成 0 和 1,值会贴在坐标轴底端,与边框重合。合理的做法是把输出换算到价格附近,例如:
条件 := C > REF(C,1);
{ 直接输出:值只有 0 和 1,贴在底边看不到 }
{ 换算到价格附近输出:落在分时线下方 }
DRAWTEXT(条件, L * 0.998, '↑');
{ 或者画竖向短线,高度参考当前价格 }
STICKLINE(条件, L, L * 0.997, 1, 0);
还有一条与密度有关:分时图上一天有相当多的数据点,公式里每根 K 线都输出文字或图标的时候,画面会被符号铺满,看起来像一片杂乱的颜色块,公式的输出反而看不清。可行做法是给输出加一层筛选,让符号只落在少数位置上。
六、在分时图上引用别的周期
分时主图上的公式常常要引用别的周期的结果,例如在 1 分钟图上用日线级别的判断。跨周期引用的格式是指标名.语句名#周期:
"MACD.DIF#DAY"(12,26,9); ← 在分时图上引用日线的 DIF "KDJ.J#DAY"(9,3,3); ← 引用日线的 J 值 "MA.MA1#WEEK"(5); ← 引用周线的均线 ← 周期后缀写在 # 之后,MIN1 表示 1 分钟,DAY 表示日线
引用别的周期时要注意两件事。一是被引用的公式必须已经存在,名字写错会落到”未知函数”里。二是引用来的值在分时图上是阶梯状的——它在一整个周期内不变,画在 1 分钟图上会是一条一段一段的台阶,这是正常现象,不是数据出错。
七、验证顺序与边界
把通达信分时主图指标公式的设置顺序收一遍,按这个顺序走可以少绕路:
- 先补数据:系统 → 盘后数据下载,勾 1 分钟与 5 分钟,下载完重启软件
- 再确认主图选的是不是这个公式:分时图上打开主图指标列表,看当前选中的名字
- 然后看参数:参数表里的缺省值是不是按分时周期设的,往回取数据的根数有没有超过一天的数据量
- 再改输出写法:把 0/1 这类值换算到价格区间,把每根都输出的符号加上筛选
- 最后换周期对照:同一个公式在日线和分时上分别看一次,确认差异只出现在周期这一层
本文讲的是软件目录、数据下载、参数表与挂载设置,不涉及具体标的的判断。分时主图上的公式输出的是一分钟级别的条件成立位置,这个位置与实际能成交的位置之间隔着价格与时间差,公式本身不承担这部分判断,需要自己在历史分时数据上逐段核对。
站内还有 主图副图指标 的其他条目,公式编写教程 里讲参数表与周期后缀的写法,报错与卡顿排查 里讲编译期与显示期报错的分流,可对照查看。
