通达信公式参数设置的作用只有一个:把写死的数字变成可以在界面上调的数字。写完参数之后,同一个公式不必改代码就能跑不同的一组取值,对照起来方便得多。

下面讲参数从声明到调用的完整链路,以及多组参数在一个公式里怎么共存。语法以通达信金融终端个人版为准,参数个数与界面项在不同版本里会有差异,操作前先确认自己软件里的入口位置。

一、参数在公式头里声明,不在正文里写

通达信公式参数设置的第一步是在公式头部声明参数,写法是 参数名(最小值,最大值,默认值):

{ 头部声明:三个参数 }
{ 参数声明写在公式最前面,格式为
  名称(下限,上限,默认值) }

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 根取不到值
  → 用参数时,这一段的范围是不固定的 }

这件事在验证时要额外留意。用默认值跑一遍看不出问题,把参数调到上限再跑一遍,最左侧的空白段会明显变长。如果公式里有依赖这一段数据的判断,结果会跟着变。

五、改参数之后要重新验一遍的项

参数改完不等于事情结束,下面几项要跟着看一次:

  1. 最左侧取不到值的区间:参数变大之后这一段的长度跟着变
  2. 信号数量:在同一段固定区间里数一次,与改之前比一比
  3. 输出的形态:参数变了之后圈出的位置落在什么样的结构上
  4. 与预警的对应关系:预警的计算周期是否与参数设定的含义一致

第二项的作用是提示参数带来的影响方向。把均线周期从 20 调到 60,信号数量通常变少,但这是要有数据才说得准的,不同公式的走向不一样,数一次比猜一次可靠。

六、存下来,别只留在界面上

通达信公式参数设置调好之后,取值是记在公式上的,跟着公式走。这意味着改代码时要留意一件事:如果公式被覆盖了,之前调好的参数取值也会一起没了。想留住某一组取值,就把当前状态另存成一个公式,名字里带上这组参数的值,两边并存。这样对照时可以直接切公式,不必每次重新调一遍滑块。

还有一个使用上的细节值得写进注释。参数暴露出来之后,别人拿到这个公式看到的只是一串可调项和一组默认值,不知道每一项该往哪个方向调。在公式注释里写清每一项的含义与调整方向,公式才真正可复用。这一步花的时间不多,省下的是后来反复试参数的时间。

关于取值范围,还有一点可以参照官方说明。

参数化之后还会遇到一种情况:同一个公式要在不同的品种或不同的计算周期上使用,而这两者需要的参数取值并不相同。这时不必写两条公式,把参数按用途分组、每组给出各自的默认值就够了。切换品种或周期时改一次参数,比维护两份几乎一样的代码省事,也不会出现改了一处忘了另一处的情况。

另一件值得留意的事是参数与公式名称的关系。公式名里如果写死了某个参数值,参数调走之后名字就与内容对不上了。名字里不写具体数字,只写它解决的问题,配上参数,公式的适用面会比写死一个取值宽一些。

界面上的下限与上限是输入约束,取值超出范围时软件会拦下;但拦下的是输入,不是取值本身的合理性。一个周期参数在上下限之内,仍然可能不是你这个公式需要的数。上下限保证的是「能输进去」,合理与否要自己在图上跑一遍才知道。

本文讲的是参数的声明、取值范围与多组共存,只作技术研究口径,不构成对任何标的的判断。参数取值属于设定,不同设定对应不同的清单,这属于公式的设定,不属于行情的结论。

站内还有 通达信公式编写教程 的其他条目,指标原理与参数 里讲参数取值怎么定,公式安装与导入 里讲公式怎么装进软件,可对照查看。

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