有人问:副图上那几行公式输出的数字偏小,能不能在公式里把字号调大?问的就是通达信公式字体设置这件事。先把结论摆出来,公式语言里没有设置字体与字号的函数,公式能改的只有颜色、线型线宽、图标、文字的内容与位置,字号属于软件界面层。
下面按语言层能控制什么、软件层在哪里改、四类误解与核对办法依次展开。函数名以本机公式编辑器的函数列表为准。
一、公式语言里没有设置字体与字号的函数
打开公式编辑器,把函数列表按类别过一遍,几组里都找不到设字号或者设字体的函数。DRAWTEXT 管的是写什么字、写在哪个位置,不管这个字多大;DRAWNUMBER 管的是把数值写到哪个位置、保留几位小数,也不管字号。字号是渲染层的属性,公式算出来的是一串数值和几个绘图指令,两者不在同一层。
这就决定了问题的走向:想把公式输出的字号调大,改动的位置不在公式里,往公式里加任何参数都改不动它。
把公式的产物拆开看,它给出的是一串逐根的数值,外加若干条绘图指令。数值由表达式算出,绘图指令说明这条数值怎么落到图上,两者都是数据。字号、字形、字距属于渲染阶段的属性,由软件按当前的显示配置统一决定,公式既读不到也写不了这些属性。这条分层决定了公式层与显示层的分工:公式决定画什么、写什么,软件决定长什么样。
同一份源码在不同人的机器上画出来的字不一样,原因就在这一层。源码里能留下的显示信息是有限的几个属性,字号不在其中;换一台机器或者换一个版本,显示配置回到那一台的设定,图上的字跟着变,公式文件本身没有变。
二、公式能控制什么
写通达信公式字体设置这个话题,先分清公式能动的那一半:颜色、线型线宽、图标、文字的内容与位置,四类都写在公式里。
颜色用颜色常量或十六进制写法。颜色常量是 COLORRED、COLORGREEN、COLORYELLOW 这一类,跟在绘图语句后面;也可以写成 COLOR 加十六进制值的形式,作用在画出来的线、柱、文字与图标上。
线型线宽用 LINETHICK1 到 LINETHICK7,数字表示线宽的档位,点线、虚线这类线型也有对应写法。它改的是这条输出的笔画粗细与样式,不动字号,也不动文字的字形。
图标用 DRAWICON(条件, 位置, 图标号),图标号对应软件内置的一套图形。文字的内容与位置用 DRAWTEXT(条件, 位置, 文字) 与 DRAWNUMBER(条件, 位置, 数值),位置参数取的是价格坐标上的值。
{ 公式里能写的显示属性 }
DRAWTEXT(C > O, H, 'UP'), COLORRED;
DRAWNUMBER(C > O, L, C), COLOR00FFFF;
DRAWICON(C > O, L, 1);
{ 这三行里没有字号与字体这两个参数 }
注意 DRAWTEXT 的第三个参数是文字内容本身,用一对单引号包住,文字多长会影响它占的位置,字号仍由软件决定。
位置参数决定文字落在哪一行上,取的是价格坐标方向上的值。写当根的最高价、最低价、收盘价,或者写一个固定数值,落到图上的高度不同;取值落在当前坐标区间之外时,这段文字不会出现在画面里,看起来像公式没生效,实际是位置写到了画面外。改位置比改字号更容易看出效果,把文字挪到空白处也是一种常用的收尾手法。
字号改不动,可动的部分还有内容本身。文字过长会向两边铺开,与相邻的标注叠在一起,把内容缩短、用符号代替词组、或者把这一处换成 DRAWICON 的图形标记,图面立刻清爽;需要给读者一个具体数值时,用 DRAWNUMBER 输出数值比用 DRAWTEXT 输出一整句话更省位置。这几种做法改的是写什么,改不了字多大。
三、软件层设置:字体与字号在哪里改
到了软件层,通达信公式字体设置的做法换了一套:字体与字号在「系统设置」对话框下的界面外观相关入口里改。这里改的是显示层参数,作用范围是整个软件。
把这几项分清。第一,设置里调字号,报价栏、信息栏、指标输出的文字一起变。第二,没有「只让这条公式的字变大」的开关。第三,改动的本机配置与公式文件分开存放,不互相覆盖。
显示层设置按区域分几处,报价栏与列表是一处,图表区的文字是一处,公式管理器里那个列表又算一处;改动哪一处的字体项,只影响那一处。想让图上的公式输出换字号的诉求,落点就在图表区这一处。改完把图表重新加载一次,或者切一根 K 线再切回来,新的字号才会反映到画面上。
配置文件的落点与公式文件分开。自编公式与备份放在安装目录的 T0002 下,公式文件是 PriGS.dat,备份目录是 gs_bak;显示层设置写在安装目录下另一处,两者互不覆盖。恢复公式备份不会带回显示设置,重装软件也不会带回公式,这两件事要分两次做,迁移的时候各走各的。
四、四类误解与两处容易出岔子的场景
误解一,改了没生效。在设置里改了字号,图上的公式输出看着没动,多半是当前版面没有重新加载,或者改的是另一个分组下的字体项。
误解二,以为公式能改字号。把 DRAWTEXT 的位置参数往上挪,字看着像大了,其实只换了位置。
误解三,以为改的是单条公式。设置里的字体项管整个软件,调完之后别的指标输出、报价栏一起变;单条公式的字号区分,软件层没有这个开关。
误解四,换机器后显示不同。显示层设置存在本机,换机器或者重装之后回到默认字号,公式文件没动,图上的字却变了。
高分屏缩放是另一处。系统缩放比例一改,界面按比例放大,公式输出的文字跟着界面走。
两台机器上同一份公式的字不一样时,比对顺序是先比显示配置、再比软件版本,最后才回到公式。公式文件可以逐字节比对,显示配置没法用公式文件代偿,先把配置这一层排除掉,剩下的才可能是版本差异带来的渲染差别。
五、怎么核对
核对分两步走。第一步把公式与软件设置分开查:先确认函数列表里没有字号、字体这类函数,再确认设置里改的字体项落在哪个分组。
第二步做对照:同一段行情,用默认设置导出一张图,改一次字号再导出一张,两张图对比输出文字的大小。
| 要改的项 | 所在的层 | 改动之后谁会跟着变 |
|---|---|---|
| 字体与字号 | 软件显示设置 | 该区域里所有指标输出、报价栏与列表的文字 |
| 颜色 | 公式语句 | 只有写这条语句的那一支输出 |
| 线型与线宽 | 公式语句 | 只有这条输出的笔画 |
| 图标 | 公式语句 | 只有写这条语句的那个位置 |
| 文字内容与位置 | 公式语句 | 只有这一条标注 |
表里第一行与后面四行的区别,就是这次要分清的那条边界:显示设置一项管一片,公式语句一项管一条。
- 看公式里有没有字号相关参数,找不到就是软件层的事。
- 看设置里改的是哪个分组,改完重新加载图表。
- 换机器或重装后,把显示层配置一起迁移再对照。
本篇不写什么:不写颜色代码的完整清单与线型对照,不写图标号的清单,不写主图坐标的设置,这三项各有专文。
能改的与改不了的,边界就落在这一层:字体与字号属于软件界面层的显示设置,改一次作用于整个软件;颜色、线型线宽、图标、文字内容与位置属于公式层,写在哪条公式里就跟着哪条公式。通达信公式字体设置这件事,改动的位置在设置里,不在公式里。
本文只作技术研究口径,不涉及也不构成对任何标的的判断。
站内还有 新手入门问答 的基础条目,主图副图指标 讲图面呈现的分工,通达信公式编写教程 讲各绘图函数的写法与参数,可对照查看。
