通达信公式颜色代码写错的时候不会有任何提示。公式照样编译通过,曲线照样画出来,只是颜色退回了默认值。你在源码里看到的是一串看起来完整的色名,屏幕上出现的是另一回事,排查时容易怀疑显示设置而不去核对拼写。颜色参数的位置与写法,是这一类问题里最先要固定的两件事。

下面按参数位置、名称常量、十六进制写法、线型线宽、不生效的四种情形与检查清单六层讲。文中色名常量与参数位置为通达信公式的通用描述,不同版本与券商定制版对可用色名、十六进制分量的排列顺序以及各绘图函数的参数次序可能存在差异,请以你所用客户端的帮助文档与实际显示效果为准。

一、颜色参数排在参数表的后段

通达信公式颜色代码在参数表里的位置是固定的:绘图类函数的参数表中,颜色排在最后一位;部分函数在颜色之前还有一个线型或线宽参数。位置固定是好事,代价是它与前面的数值参数长得不像一类东西,写串行时不容易察觉。

参数段 常见内容 写错后的表现
前段 条件、位置、价格 位置错乱或整段不显示
中段 线型、线宽、是否空心 形状变化,颜色不受影响
末段 颜色 不报错,退回默认色

第三行是这一节的重点。颜色写错时编译不失败,所以不能用「有没有报错」来判断这一位写得对不对,只能看屏幕上的实际颜色。核对时把图放大到能分辨线条颜色的程度,再对照源码里写的那一个常量。

二、名称常量的构成规律

客户端预置了一批色名常量,写法是一律大写的 COLOR 加上英文颜色名,例如红色、绿色、蓝色、黄色、青色、洋红、白色这些基础色各对应一个常量。基础色之外还有一组加亮变体,命名方式是在颜色名前面加上 LIGHT,用来表示亮度更高的一档。

{ 基础色的名称常量写法 }
COLORRED      { 红 }
COLORGREEN    { 绿 }
COLORBLUE     { 蓝 }
COLORYELLOW   { 黄 }
{ 加亮变体在颜色名前加 LIGHT }
COLORLIGHTRED
{ 灰色系另有一套名称,不要按英文习惯拼写 }
{ 拼错不会报错,只会退回默认色 }

灰色系是最容易拼错的一处。英文里灰色有 GRAY 与 GREY 两种拼法,客户端只认其中一种。遇到写上去不生效的情况,第一件事是把灰色系的名称逐个试一遍,确认本版本接受的是哪一个拼法。

名称常量还有一个使用上的便利:它不依赖数值,也不会因为版本变化而失效。用十六进制数值写的颜色在换版本之后可能需要重新核对分量顺序,用名称写的颜色不需要。因此在两套写法都可用的情况下,能写成名称的就写成名称,只在名称覆盖不到的颜色上使用数值写法。

三、十六进制写法与分量顺序

预置色名不够用时,通达信公式颜色代码可以写成数值形式,长度是六位十六进制数。三个颜色分量各占两位,但三个分量的排列顺序在不同版本与不同函数之间并不统一,照搬别的资料里写的色值,显示出来的可能是另一个颜色。

确认顺序的办法是拿单色试。先写一个只有其中一个分量非零的色值,例如只留最高两位非零,看它显示成红色、绿色还是蓝色,这一步就能反推出三位分量的先后。三个分量各试一次,顺序就确定了。这个方法不依赖任何外部资料,付出的代价是三次改稿与三次看图。

把试出来的顺序写进自己的笔记,并在公式里用注释标明分量顺序。换版本或换机器之后先重新试一次,因为顺序规则属于客户端实现细节,不随公式文件走。

四、线型与线宽是另一组参数

颜色决定线条是什么色,线型决定线条怎么画。客户端常见的线型关键字包括虚线、柱状线、十字线、圆点线,线宽则用一组从细到粗的常量表示,编号越大线越粗。

{ 线型与线宽写在颜色之前 }
{ 虚线、柱状、十字、圆点各有对应的关键字 }
{ 线宽常量从 1 开始,编号越大线越粗 }
{ 线宽只对线型有效,对柱状与圆点的效果有限 }

写这两组参数时有一处容易与颜色混淆:线型与线宽都是关键字或整数,颜色却既有名称常量又有数值写法。三者排在一起时,把颜色写成整数形式会让这一位看起来像线宽,改稿时容易误删。加注释是区分这三者的一步。

判断参数有没有写串行,有一个简单的办法:把这一位的参数逐个删掉再看显示效果。删掉线型,线条形状变化;删掉线宽,线条粗细变化;删掉颜色,线条颜色变化。三类效果互不重叠,哪一类没有出现,就说明对应的那一位不在你删掉的位置上。

五、写上不生效的四种情形

第一种是名称拼写不符。色名常量不区分大小写的情况需要确认,但拼写本身必须与客户端接受的形式一致,多一个字母或少一个字母都会退回默认色。

第二种是十六进制位数不对。六位以外的长度会被当作别的参数处理,屏幕上表现出的颜色与预期无关。

第三种是写在了不该写的位置。颜色被放进了前段参数的位置,客户端把它当作价格或位置值使用,图上会出现位置异常的标记,同时颜色保持默认。

第四种是参数顺序照搬了别的函数。不同绘图函数的参数表长度不同,颜色在其中的位置也不一样,从一个函数复制到另一个函数时不能只改函数名。

六、一图多线时的配色次序

一张图上放三条以上曲线时,颜色的作用从「好看」变成「可分辨」。写代码时的次序应当服务于读图:主曲线用一种色,参考线用另一种,辅助标记用第三种,不要把三条主曲线配成同一色系的深浅三档,因为放大之后深浅差别会消失。

深色底图与浅色底图需要两套配色。浅色底图上偏亮的颜色对比度不够,深色底图上偏暗的颜色会糊成一团。同一个公式换到另一种底图上使用之前,把每条曲线的颜色在两种底图下各看一遍,确认都能分辨再定稿。这一步花的时间不多,能避免交出去之后对方反馈「看不清」。

另外一处细节与输出形态有关。屏幕上的颜色在灰度输出时会被转成不同深浅的灰,红与蓝可能落到相近的灰度上。需要交付打印件时,把配色换成明暗差别较大的组合,或者给不同曲线配上不同的线型,让形状承担一部分分辨功能。

七、检查清单

改完颜色参数之后,按这五项依次过一遍。

  • 颜色是否排在参数表的末段,前面几位的参数个数是否与该函数一致。
  • 色名是否逐字核对过,灰色系用的是本版本接受的那个拼法。
  • 十六进制写法是否为六位,三个分量的顺序是否用单色试过。
  • 线型与线宽的常量是否写在颜色之前,有没有被误当成颜色删掉。
  • 屏幕上实际显示的颜色,是否与源码里写的那一个对得上。

这五项过完之后通达信公式颜色代码仍然不生效,问题就不在颜色参数上了,需要回到绘图函数本身,确认条件是否成立、位置参数是否落在了可见区间之外。绘图函数的整体写法见 通达信主图副图指标 一栏;曲线数值的来源与口径见 通达信指标原理与参数 一栏。

文中色名常量、参数位置与线型关键字为通达信公式的通用描述;不同版本与券商定制版对可用色名、十六进制分量排列顺序、线宽常量上限以及各绘图函数的参数次序存在差异,具体请以你所用客户端的帮助文档与实际显示效果为准。本文只讨论公式写法与显示设置,不构成任何投资建议。

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