想让主图在某一段行情里换一层底色,翻遍函数列表也找不到叫「背景」的那一项。通达信主图背景公式不是靠某个专门函数完成的,它拿绘图函数去铺一块颜色区域,让这块区域落在 K 线周围。可行的写法有两条:一是用填充带把两条数值边界之间的整片区域涂满,二是用固定宽度的竖条在指定条件下排成一排。

下面按函数缺位这件事、两种写法的参数、坐标依赖、画上去看不见的几种情形、以及改完怎么核对来写。颜色与宽度的取值以本机公式编辑器里的函数说明为准,挂载位置以主图右键菜单里的叠加设置项为准。

一、主图上没有现成的背景函数

主图的绘制分两层:系统按开高低收画 K 线,指标公式往这一层上面再画东西。公式里能调用的绘图函数都是往图上「加」元素,没有一个是改画布底色的。所谓背景,是往 K 线上下一段区域内填充颜色,把它当作底色来用。

这件事决定了两个后果。第一,填充出来的色块也是图上的一个元素,会与 K 线争位置,压在上面的关系由绘制顺序决定。第二,色块的边界是数值,不是像素,主图纵轴一缩放,色块跟着变。

还有一层区别要分清:主图上原本就有背景色,那一层是在系统设置的外观项里改的,与公式无关。通达信主图背景公式画出来的色块盖在那一层上面,两处同时改会让颜色叠加,看不出是哪一层在起作用。排查颜色问题时,先确认是不是只动了一处。

另外要分清它与 K 线上色的差别。K 线上色是把 K 线本体换成另一种颜色,色块只落在实体与影线的范围里;背景填充涂的是两条边界之间的整片区域,范围比单根 K 线宽得多,两者可以同时存在。

二、写法一:用填充带包住两条边界

填充带的函数接收四个参数:一条上边界、一种颜色、一条下边界、另一种颜色。两条边界都是数值表达式,取什么值,色块就落在哪一段。

{ 用均线作为色块的两条边界 }
MA5  := MA(C, 5);
MA20 := MA(C, 20);
FILL: DRAWBAND(MA5, RGB(255,220,220), MA20, RGB(220,240,255));
{ 上边界与下边界都是价格口径,色块夹在两条线之间 }

两条边界的口径要一致。都取价格,色块就贴着价格区间走;一条取价格、一条取固定数值,两条线不在同一尺度上,色块会被拉到很远的地方,在图上只看到一片盖住半屏的颜色。

边界表达式的选择决定了色块的含义。用两条均线,色块表示两条均线之间的关系;用 K 线的上下轨,色块表示价格是否触及某个区间;用常量,色块就是固定的一条横带。

三、写法二:用竖条排成色块

另一条路是拿画竖条的绘图函数来铺。这个函数接收条件、起始价、结束价、宽度与空心标志,宽度给得足够大,相邻几根画出来就拼成一片。

{ 关键区间用宽竖条铺色 }
COND := MA(C, 5) > MA(C, 20);
MARK: STICKLINE(COND, 0, 1, 8, 0);
{ 起始价与结束价给成固定区间,宽度 8 画成粗条 }

这种写法的边界不是价格,而是绘制时给的起止价。起止价给固定值,色块就固定在图上某个区段;给成随价格变化的表达式,色块跟着价格走。宽度参数是相对的,写 8 画出来的是一排竖条,不是连续的一片,相邻根之间会留缝。

两条路的差别在可控性上。填充带给出的是连续区域,边界由数值决定;竖条拼出来的是断续的块,边界由宽度与起止价共同决定。要连续的一段底色,选前者;要按条件开关的色块,选后者。

四、为什么画上去看不见

公式写完了,图上却没有色块,先按下面三种情形查。

情形 表现 怎么确认
公式类型选错 在主图叠加列表里找不到这一支 公式管理器里看这支公式归在哪个分类下
输出线条数超出主图可容纳条数 提示叠加失败,或只画出前几条 数一下公式里以冒号输出的变量有几个
没在图上挂载 编译通过,主图没有任何变化 主图右键菜单的叠加设置里看有没有选中它

第一种情形与画法无关,是公式分类的问题。主图叠加只接受归在技术指标下的公式,归在条件选股或其它分类下的调不出来。第二种与输出条数有关,主图能同时叠加的线条数是有限的,超出部分不显示,色块的输出语句排在被截掉的那一段里,就等于没画。

第三种是挂载。编译通过表示语法没问题,但公式要出现在图上,还要在主图右键菜单里把它选为叠加对象。改完公式之后,如果这一支已经在叠加列表里,重新调用一次让它重画。

填充带盖住 K 线是正常现象,不是画错了。通达信的绘图函数没有透明度参数,色块是不透明的,它压在 K 线上就会遮住实体。想让走势还看得清,把两条边界收到 K 线的上下影线之外,或者只用竖条在窄区间里打点。

五、坐标依赖带来的偏移

色块的位置由边界数值与主图纵轴共同决定。主图纵轴取的是价格范围,边界给的是价格,两者同尺度,色块落在哪一段就由数值说了算。

换了一种刻度,结论跟着变。把纵轴从普通刻度改成对数刻度,同一个价格区间在图上占的高度不再是等比的,固定的色块看起来会被压扁或拉长。这不是公式算错了,是刻度换了,边界值没换。

{ 边界随价格变化的写法 }
BASE := REF(MA(C, 20), 1);
UP   := BASE * 1.05;
DOWN := BASE * 0.95;
FILL: DRAWBAND(UP, RGB(255,225,225), DOWN, RGB(225,240,255));
{ 边界按上一根的均线成比例给出,随价格整体移动 }

边界写成随价格变化的比例式,色块会跟着价格整体平移,不会因为行情涨跌而跑到图外。边界写成固定数值,行情走远之后色块就留在原地,看上去像是消失了一块。改通达信主图背景公式的边界时,先确认它是跟着价格走的,还是钉在某个不动的位置上。

两条边界的顺序也要固定。函数按参数位置区分上下边界,把上下写反,色块仍然会画出来,但取的是两种颜色,深浅关系跟着颠倒。看颜色猜顺序不稳妥,把两个边界表达式与函数参数位置逐个对上再写。

色块的视觉厚度由两条边界的间距决定,与颜色无关。间距极小的两条边界画出来是一条细线,看起来像是画错了;间距跨过整个价格区间,色块就是一整片。设置边界之前,先在副图上把这两条表达式各自画一遍,看它们之间的间距落在什么范围,再决定要不要拿它们当作填充的下上沿。

六、改完怎么核对

核对看三处,顺序固定。

先看编译。公式管理器里点「测试公式」,输出区给出每个以冒号输出的变量的取值,色块对应的那一条有没有值,在这一步就能看出来。

再看挂载。确认公式归在技术指标分类下,并且已经在主图右键菜单的叠加设置里被选中。这一步过了,主图上应当出现颜色区域。

最后看边界。把色块的两条边界单独画到副图上,与主图上的色块上下沿对照,两者的位置一致,说明边界的口径与主图纵轴是同一套。

通达信主图背景公式铺的是一块颜色区域,它不参与任何信号计算,输出值只是边界数值。色块画得对不对,看的是边界与挂载这两件事,与公式的判定逻辑无关。

站内还有 通达信主图副图与视觉呈现 的条目,通达信公式编写教程 讲绘图函数的参数,通达信信号拆解 讲把条件拆成判断段,可对照查看。

本文只作技术研究口径,不涉及也不构成对任何标的的判断。

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