把通达信分时图画线公式挂到分时窗口上,会碰到两种结果:线画不出来,或者线画出来了却落在视野之外。前一种出在取数口径与画线函数的搭配上,后一种出在坐标系与越界判断上。下面按分时数据的特点、取值写法、画线函数取舍、挂载差别、验证方法五件事讲清楚,写法以通达信金融终端个人版为准,不同版本在措辞与菜单位置上可能有差异。
一、分时窗口的数据与日线不是一套东西
分时图是一分钟一根的当日数据,横轴从开盘走到收盘,纵轴按当日已出现的最高最低值自动缩放。它没有历史 K 线,公式取到的每个值都在当日范围内重算,跨日的历史序列在这个窗口里取不到。这决定了两件事:依赖长周期累计的条件在分时上没有落点,依赖当日累计的口径在分时上反而顺手。
分时窗口里能稳定取到的量有三类。现价是 CLOSE,也就是白线当前所在的位置;均价是当日成交额与成交量的比值;分时量是 VOL,当日累计到该根的量。个股的均价计算含成交量单位的换算,要按数据源给出的 AMOUNT 与 VOL 还原,指数上不要照抄个股的系数,两处量纲不同,混用会把均价线抬到坐标系之外。
还有一处:分时窗口里没有前一个交易日,跨日的历史序列要回到日线去取,再把结果引用过来。这一条决定了后面几节的写法。
二、坐标取值:通达信分时图画线公式里先要定三处
写一条通达信分时图画线公式,先要把纵坐标的取值定下来,画线函数只是把这些取值连起来。取值分三处:分时价、均价、分时量。三者量纲不同,一并压在同一张副图上,会出现一条被压平、另一条撑满纵轴的情况。
分时价用 CLOSE 取当前值。均价在个股上用 SUM(AMOUNT,0)/SUM(VOL,0)/100 还原,第二个参数写 0 表示从当日第一根累计到当前根,写正整数则取滚动的若干根,两者在开盘初期的差别最大。分时量用 VOL,取到的是当日累计量而不是单根的分钟量,与日线成交量比较之前要先换算。
分时价:CLOSE; 均价:SUM(AMOUNT,0)/SUM(VOL,0)/100; 分时量:VOL; DRAWTEXT(CROSS(CLOSE,均价),LOW*0.999,'价上均');
这四行逐行看:第一行取当前分时价;第二行还原当日均价,末尾的 100 是个股成交量以手为单位时的换算系数,指数公式里去掉;第三行取分时量;第四行在现价上穿均价的那一根下方写两个字。DRAWTEXT 的第二个参数是纵坐标,写成 LOW 的近似值是为了让它落在可见区内。
落点写在 LOW 或 HIGH 上会随当日波动贴着极值走,写成相对比例则与坐标系解耦。取值这一步定下来,画线函数换哪一种都不影响结果。
三、画线函数的取舍:DRAWLINE、POLYLINE、HORLINE
分时上图线可用的函数有三类:连接两点的 DRAWLINE、连接多点的 POLYLINE、给定数值的水平线 HORLINE。三者差别不在形状,而在取点方式与取不到点时的表现。
- DRAWLINE(条件1,价1,条件2,价2,延伸) 需要两个条件各命中一次,把两点连成一段。当日只命中一次时画的是一根斜线段,命中多次时取哪一组以版本实现为准。
- POLYLINE(条件,价) 把每个满足条件的点依次连成折线,条件成立的根数越多,折线越密。
- HORLINE(条件,价,左延伸,右延伸) 在满足条件的根上引出一条水平线,它不带时间维度,数值落在可视区之外时不渲染。
取舍按信号形态来定:一段连续抬升留下的斜线用 DRAWLINE,逐个拐点用 POLYLINE,需要横向贯穿的参考位用 HORLINE。三者混用在同一张副图上没有冲突,冲突出在它们共用一个纵轴,量纲差别大时先拆成两张副图。
{连接两点:从当日最高那根连到当日最低那根}
DRAWLINE(CLOSE=HHV(CLOSE,0),CLOSE,CLOSE=LLV(CLOSE,0),CLOSE,0);
{连接多点:把当日满足条件的每根依次连起来}
POLYLINE(CLOSE>均价,CLOSE);
{水平线:在当日均价上画一条横向参考线}
HORLINE(ISLASTBAR,均价,1,1);
{限制文字重复:同一方向两次标注之间至少隔 30 根}
DRAWTEXT(FILTER(CROSS(CLOSE,均价),30),LOW*0.999,'价上均');
四、挂载位置决定取点:通达信分时图画线公式在两处的差别
通达信分时图画线公式挂在哪里,决定了它的取点范围。挂在主图时公式与分时曲线共用坐标系,纵轴跟着当日价格走;挂在副图时公式有自己的坐标系,纵轴按自身数值区间缩放。同一个 DRAWLINE 在两处取到的点不同:日线窗口里的 HIGH 与 LOW 是当根 K 线的高低值,分时窗口里只是那一分钟的高低值。
越界是分时画线上最先暴露的问题。纵坐标写成固定的高位常数,当日价格没走到那里,线就不在可视区;写成 0 或负数,会落到横轴下方。DRAWICON 与 DRAWTEXT 放在同样位置也是这个结果,函数不报错,只是不渲染。
DRAWTEXT 在分时上另有两处限制。横轴根数多,条件成立的每根都写字,文字会连成一条带,需要用 FILTER 限制间隔;文字按该根的纵坐标定位,分时纵轴随当日高低点变化,同一个相对位置在早盘与尾盘落在不同的屏幕高度上,锚在 LOW 的近似值处比锚在固定数值处稳。
下面这张表把分时画线上会碰到的现象与对应处理列出来。
| 现象 | 含义 | 处理 |
|---|---|---|
| 日线有线段,切到分时看不到 | 取值口径与周期绑定,分时上条件不成立,或取点被当日数据截断 | 把条件改成现价与均价比较,累计参数写 0 表示当日至今 |
| 线画在视野之外 | 纵坐标写成了高于当日最高或低于当日最低的固定值 | 纵坐标改用 LOW、HIGH 的近似值,或改用相对比例 |
| 文字挤成一条带 | 条件成立的每根都执行 DRAWTEXT,分时横轴根数多 | 用 FILTER 限制标注间隔,或只在两端各标注一次 |
| 切回日线线又出现 | 公式挂载位置变了,取点位置随坐标系一起变 | 固定挂载位置,主图公式与副图公式分开维护 |
| HORLINE 看不到 | 给定数值不在当日坐标范围内,函数不渲染 | 核对取值来源是否含单位换算,或改用 DRAWLINE 取相对点 |
五、验证方法:两步确认改对了
验证分两步。第一步在公式管理器里验证语法与取数:用 Ctrl+F 打开公式管理器,选中公式后点「测试公式」,它会报出语法错误与取不到值的函数,通过后点「确定」保存。第二步在图上验证渲染:把公式分别挂到主图与副图,切到分时看线是否落在可见区内,再切回日线看同一条线是否还在,两处各自稳定才算改对。
数据层面的检查一并做掉。分时窗口只有当日数据,历史序列缺失时 REF 取到的是无效值,画线函数拿不到点就退回不画;停牌当日没有分时数据,公式挂上去是空的,这一条要在验证时区分开,不要当成语法写错。
公式文件落在 T0002 目录下,自编公式的备份在 T0002\gs_bak,导出文件用 tn6 后缀。改动之前先导出一次,改坏了可以回滚。公式管理器入口与测试按钮的位置在不同版本里可能有差异,以官方版本说明为准。
回到那张分时图:你手里的通达信分时图画线公式,取的是现价还是均价,挂的是主图还是副图,纵坐标押的是当日高低点的近似值还是一个固定常数?三处只要有一处没对齐,线就按上面的方式消失,而对齐它们只是改三个参数的事。
本文只作技术研究口径,不涉及也不构成对任何标的的判断。
站内还有 主图副图指标 的其他条目,公式编写教程 里讲函数取数与测试的步骤,量价形态与信号拆解 里讲信号怎么在图上定位,可对照查看。
