错误写法:
现象: 报"未知字符串 N2",或者 N2 直接变成未定义符号。
原因: {N2: 均额窗口, 默认5} 这种写在代码区的"注释"其实是想顺便声明参数,但通达信不解析这种写法,N2 就成了未定义变量。网上很多流传指标的截图里带这种写法,粘过来必报错。
正确做法: 参数要么直接写死数字,要么去公式管理器的参数表正式新建。代码区不要写任何"参数说明式注释"。
错误写法:
现象: 有时报错,有时不报错但结果不对,排查半天。
原因: 2~3 个字母的短名极易撞通达信内部保留字。实测 KP、ZS、JJP 这类名字都出过问题。
正确做法: 要么用汉字变量名(通达信支持,且可读性好),要么英文变量名至少 4 个字符以上。
正确示例:
汉字变量名(竞价强度、动能值、量比)完全可用,但 CLOSE、EMA、AMOUNT、DYNAINFO、STICKLINE 这些系统函数名千万别翻译成中文,也别用汉字覆盖同名。
现象: 同一段代码,注释放行尾没问题,单独成行或放代码中间就报错;某些版本甚至直接解析失败。
原因: 通达信对 {} 注释的位置非常敏感(同花顺也有类似问题),不同版本行为还不一致。
正确做法: 交付/分享公式时,注释要么全删,要么只保留首行标题。别指望"注释不影响执行"——在通达信里真的影响。
:= 后 :,报重复定义错误写法:
现象: 部分通达信版本报"重复定义",另一些版本不报但图形异常。
原因: 先用 := 定义中间变量、再用 : 输出同名变量,属于易撞的灰色用法。
正确做法:计算用一个名,输出用另一个名。
这是我从网上流传指标里识别出的两处典型笔误:
原因: IF 的第一个参数必须是判断式(返回真/假),写成了价格或数值后条件永远为真,公式永远只走前一支——不报错,但逻辑全错,比报错更隐蔽。
正确写法:
TMA(X,A,B):要求 A、B 均小于 1(递推式 Y=AY'+BX)。A≥1 直接失效。DMA(X,A):要求 A 小于 1。标准示例是 DMA(CLOSE,VOL/CAPITAL),以换手率为权重。写或改公式前先核对函数参数的定义域,这类错误不报错但结果离谱。
错误写法:
原因: VOL 的单位是手(1 手 = 100 股),FINANCE(7) 返回的是流通股数(单位股)。直接相除结果差 100 倍。另外 AMOUNT 的单位是元,做均额类指标时注意量纲。
正确写法:
实测校正过的刻度:
宽度参数 | 效果 |
|---|---|
0 | 最细线 |
0.8 | ≈K线实体宽 |
1.0 | 略宽,仍不满格 |
1.6 | ≈满格(要"整根柱涂满"用这个) |
2.0 | 重叠 20% |
想让柱子涂满整个 K 线格,写 STICKLINE(...,1.6) 而不是 1.0。
现象: 副图指标里所有线条被压成一条横线,细节完全看不清。
原因: 输出行里带了人为抬高坐标的"天花板",比如 HHV(H,120)*1.3 这种锚点行。通达信的 Y 轴缩放会参考所有输出行的极值,天花板一行就把整个图形压扁了。
正确做法:
:= 中间变量,不参与坐标缩放;×1.02 保证绘图元素完整:1. 报错定位法。 通达信报"错误起始位置"时给的是字符数不是行号。把粘贴的内容从头数到那个字符位置,能精确定位到行。注意:编辑器会压缩空行,行号会偏移,按字符数数最准。
2. 除零保护。 任何除法分母统一用 MAX(X,0.0001) 保护:
上市首日、长期停牌复牌等情况分母可能为 0,不加保护整条线直接断。
ZIG/PEAK/TROUGH/REFX/BACKSET 一律不碰,信号会漂移,回测再好看都是假的。AI 辅助写公式的工作流跑通之后效率提升非常明显:我把踩坑规则沉淀成固定约束后,新公式的报错率基本归零。核心经验就一句话——通达信公式编辑器的报错信息几乎不给有效线索,事前规避比事后排查省十倍时间。上面 10 个坑覆盖了我这段时间遇到的全部报错类型,希望能帮你少走弯路。
(本文由尾末儿在 WorkBuddy 辅助下整理,所有坑均为实际调试中复现验证。)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。