通达信公式参数设置的作用只有一个:把写死的数字变成可以在界面上调的数字。写完参数之后,同一个公式不必改代码就能跑不同的一组取值,对照起来方便得多。
下面讲参数从声明到调用的完整链路,以及多组参数在一个公式里怎么共存。语法以通达信金融终端个人版为准,参数个数与界面项在不同版本里会有差异,操作前先确认自己软件里的入口位置。
一、参数在公式头里声明,不在正文里写
通达信公式参数设置的第一步是在公式头部声明参数,写法是 参数名(最小值,最大值,默认值):
{ 头部声明:三个参数 }
{ 参数声明写在公式最前面,格式为
名称(下限,上限,默认值) }
N1(5,60,20) { 短周期,默认 20 }
N2(10,120,60) { 长周期,默认 60 }
M(1,5,2) { 倍数,默认 2 }
{ 正文里直接用参数名,不要再写数字 }
短均线 := MA(CLOSE, N1);
长均线 := MA(CLOSE, N2);
条件: 短均线 > 长均线 AND VOL > MA(VOL, N1) * M, COLORRED;
三个数字分别是下限、上限与默认值。下限与上限决定界面上滑块或输入框能取到的范围,默认值是公式第一次被挂上去时用的数。写清的这三项,决定了公式在界面上能被调到什么程度。
二、上下限怎么定:按可取范围,不按你喜欢
通达信公式参数设置里最容易定错的是上下限。上下限的作用是界定「允许取到哪一档」,不是界定「你习惯用哪一档」。把上限设成自己常用的那个数,等于把公式的可调范围关掉了一半。
| 参数 | 下限该定在哪 | 上限该定在哪 |
|---|---|---|
| 均线周期 | 1 或 2(最小可算的周期) | 按数据长度,通常不超过百余根 |
| 倍数 | 0 或 1(不放大到放大) | 按量能差异的量级,通常个位数足够 |
| 比例 | 0(关闭该条件) | 按该条件真正会取到的比例上限 |
下限设成 0 有一个额外好处:可以作为关闭开关。把某个倍数调到 0,对应的条件就自然不成立,等于临时关掉这一段,不用回去改代码。这种用法在对照不同条件组合时很省事,但要在公式注释里写清这一点,否则过一阵自己会忘。
三、多组参数共存:靠命名而不是靠默认值
在一个公式里放多组参数是常见需求。通达信公式参数设置的做法是按用途命名,让名字自己说明它是干什么的:
{ 分用途命名:短、中、长各一组 }
短周期(2,20,5)
中周期(5,60,20)
长周期(10,250,60)
{ 或者按条件分段命名 }
价格周期(2,120,20)
量能周期(2,60,5)
量能倍数(1,5,2)
{ 命名之后,正文里每个用途各取各的 }
价线 := MA(CLOSE, 价格周期);
量线 := MA(VOL, 量能周期);
条件: CLOSE > 价线 AND VOL > 量线 * 量能倍数;
命名按用途分比按顺序分好。N1、N2 的名字在过一段时间之后要靠回忆对应关系,而 价格周期 这样的名字不用回忆。名字长一点没关系,界面上显示得下。
四、参数与周期数耦合时要注意的地方
通达信公式参数设置里有一个容易忽略的耦合:参数控制的是周期数,而周期数越大,公式最左侧取不到值的区间就越长。把 MA(CLOSE, 20) 的 20 换成参数之后,这个区间会随着参数取值的不同而变化。
{ 周期数是参数时,最左侧的输出会随参数变化 }
线 := MA(CLOSE, N1);
{ N1 = 20 时,最左 19 根取不到值
N1 = 60 时,最左 59 根取不到值
→ 用参数时,这一段的范围是不固定的 }
这件事在验证时要额外留意。用默认值跑一遍看不出问题,把参数调到上限再跑一遍,最左侧的空白段会明显变长。如果公式里有依赖这一段数据的判断,结果会跟着变。
五、改参数之后要重新验一遍的项
参数改完不等于事情结束,下面几项要跟着看一次:
- 最左侧取不到值的区间:参数变大之后这一段的长度跟着变
- 信号数量:在同一段固定区间里数一次,与改之前比一比
- 输出的形态:参数变了之后圈出的位置落在什么样的结构上
- 与预警的对应关系:预警的计算周期是否与参数设定的含义一致
第二项的作用是提示参数带来的影响方向。把均线周期从 20 调到 60,信号数量通常变少,但这是要有数据才说得准的,不同公式的走向不一样,数一次比猜一次可靠。
六、存下来,别只留在界面上
通达信公式参数设置调好之后,取值是记在公式上的,跟着公式走。这意味着改代码时要留意一件事:如果公式被覆盖了,之前调好的参数取值也会一起没了。想留住某一组取值,就把当前状态另存成一个公式,名字里带上这组参数的值,两边并存。这样对照时可以直接切公式,不必每次重新调一遍滑块。
还有一个使用上的细节值得写进注释。参数暴露出来之后,别人拿到这个公式看到的只是一串可调项和一组默认值,不知道每一项该往哪个方向调。在公式注释里写清每一项的含义与调整方向,公式才真正可复用。这一步花的时间不多,省下的是后来反复试参数的时间。
关于取值范围,还有一点可以参照官方说明。
参数化之后还会遇到一种情况:同一个公式要在不同的品种或不同的计算周期上使用,而这两者需要的参数取值并不相同。这时不必写两条公式,把参数按用途分组、每组给出各自的默认值就够了。切换品种或周期时改一次参数,比维护两份几乎一样的代码省事,也不会出现改了一处忘了另一处的情况。
另一件值得留意的事是参数与公式名称的关系。公式名里如果写死了某个参数值,参数调走之后名字就与内容对不上了。名字里不写具体数字,只写它解决的问题,配上参数,公式的适用面会比写死一个取值宽一些。
界面上的下限与上限是输入约束,取值超出范围时软件会拦下;但拦下的是输入,不是取值本身的合理性。一个周期参数在上下限之内,仍然可能不是你这个公式需要的数。上下限保证的是「能输进去」,合理与否要自己在图上跑一遍才知道。
本文讲的是参数的声明、取值范围与多组共存,只作技术研究口径,不构成对任何标的的判断。参数取值属于设定,不同设定对应不同的清单,这属于公式的设定,不属于行情的结论。
站内还有 通达信公式编写教程 的其他条目,指标原理与参数 里讲参数取值怎么定,公式安装与导入 里讲公式怎么装进软件,可对照查看。
