通达信CON2STR和VAR2STR有什么区别?逐根文字与最后值排错

适用范围:通达信电脑客户端图表公式中的文字标注。历史K线上每根文字都像是最后一个价格,先检查是否用了CON2STR。官方将它定义为取最后的值转字符串;逐根数值转字符串应核对VAR2STR,拼接逐根文字则要同时核对VARCAT,不能只替换最里面一个函数。

最后值字符串与逐根序列字符串的原创对照,非软件截图
原创序列转换示意,数字为虚构样本,非客户端截图。

一、最后值与每个值不是同一问法

官方定义CON2STR(A,N)取A最后的值,即非序列值,按N位小数转为字符串;VAR2STR(A,N)则把A每一个值转为字符串。假设输入从旧到新是10、11、12,前者关心最后的12,后者保留三个位置各自的数字含义。

任务 对应函数方向 核对重点
展示最后取得的一个值 CON2STR 最后值与小数位
展示每根自己的值 VAR2STR 每根的日期与输入
逐根添加文字前缀 VARCAT 拼接阶段仍保持序列含义

上表是函数语义对照,不是截图或客户端输出记录。文本是否出现、显示几次,还受绘图条件和坐标影响。

二、逐根标注的最小示例

DRAWTEXT(CLOSE>OPEN,LOW,
VARCAT('C=',VAR2STR(CLOSE,2)));

这段原创组合在CLOSE>OPEN时,把文字放在LOW对应的价格位置,并拼接当前根收盘价。条件只是演示触发,不表示应当买入。官方VARCAT条目也使用DRAWTEXT与VAR2STR组合说明序列字符串用法。

排查时挑选三根条件成立的历史K线,分别记录CLOSE和文字。若条件不成立,本来就不应出现该根标注;不能把所有空白都归因于转换函数。

三、最后值面板的写法应当另看

DRAWTEXT_FIX(ISLASTBAR,0.02,0.05,0,
STRCAT('C=',CON2STR(CLOSE,2)));

这个例子用于最后一根对应的固定位置面板。CON2STR与非序列拼接STRCAT在这里服务于“显示一个最后值”的目的。它与历史逐根标注用途不同,坐标也是相对窗口位置,而不是LOW这样的价格值。

固定位置重叠与对齐可参考DRAWTEXT_FIX坐标排查;本文重点解决字符串在转换与拼接过程中丢失逐根含义的问题。

四、为什么只改VAR2STR还不够

如果外层仍用非序列拼接,不能仅凭内层有VAR2STR就假定整段文字已按序列处理。逐层写清每个函数返回的是单个字符串还是序列字符串,再和绘图函数一起核对。官方文档对VAR2STR、VARCAT均提示序列运算开销,并建议多股选股场景优先考虑非序列形式。

这项性能提示并不意味着两种函数可以在所有地方互换。需要历史逐根文字时保留对应语义;只展示汇总值时再选单值形式,不宣称已经做过性能测试。

五、其他显示失败点

条件不成立、LOW超出当前显示尺度、文字过密、N位数与预期不符,都可能影响观察。先在独立图表公式中只保留一条文字语句;不要把绘图语句当作条件选股输出。公式类型可参考技术指标与选股类型区别。

来源与限制

原始依据为通达信用户红宝书及官方函数文档的CON2STR、VAR2STR、STRCAT、VARCAT、DRAWTEXT、DRAWTEXT_FIX条目。示例用于解释组合方式,未做客户端版本、移动端或密集标注性能实测,不提供交易信号或收益承诺。

更多公式基础见通达信教程中心。