指标公式能保证盈利吗,这个问题靠使用经验回答不了,要回到机制上看:公式读到的是已经走完的数据,输出的是对这些数据的一次确定性计算,它没有渠道去取还没有发生的信息。把这一点立住,后面每一项判断才落在可核对的位置上。

下面把三处机制边界拆开:公式能处理的信息范围、参数调整带来的落差、未来函数造成的信号重绘,每一处都给一个能自己动手核对的检查办法。全文只讨论公式的计算口径与验证方法,不评价任何公式的效果,也不给出操作结论。文中出现的目录名与菜单名称以通达信金融终端个人版为参照,版本号可以在「帮助 → 关于」里核对,券商定制版的函数表与菜单位置可能与此不同。

一、公式的输入里没有未来

公式能读到的量是确定的:开盘、最高、最低、收盘、成交量、成交额这几条按时间排列的序列,加上由它们派生出来的中间变量。所有这些量在计算发生的那一刻都已经落地,公式对它做的是一次变换。

所以公式能回答的是「在给定数据上某个条件是否成立」,回答不了「接下来会怎样」。这两个问题的性质不同:前者是对已有事实的描述,后者是对未知的猜测。一段源码写得再复杂,只要它的输入只有上面那几条序列,它就没有办法把「接下来」变成输入。

有一个可以直接观察的对照实验。把同一段公式在今天收盘后跑一遍,记下最后一根 K 线上的输出;等本地日线数据往后补齐一根,再重新跑一次。已收盘那根 K 线上的输出不会因为新增数据而变化。若它变了,说明公式里含读取当前位置之后数据的函数,这正好是下一节的检测手段。

二、确定性变换意味着参数不带来新信息

同样的数据、同样的参数,算出的结果相同。这个性质的好处是可复现;它的另一面是公式不具备适应能力:市场结构变了,公式不会自己改口径。

参数的作用是设定变换的窗口与权重。把均线周期从 20 改成 30,改变的是对同一段历史取样的长度,没有引入历史之外的信息。参数表放在公式开头统一声明,改起来方便,也便于把不同参数下的输出并排比对。

这一点可以写成一个可运行的对照:

{ 同一段数据,两组参数,输出应逐根可对照 }
N1:=20;
N2:=30;
MA1:MA(CLOSE,N1);
MA2:MA(CLOSE,N2);

{ 参数表声明写法,改参数时不必进源码 }
{ 公式管理器 → 技术指标公式 → 新建 → 参数表 }

把两条输出的差值也打印出来,可以直观看到参数改变带来的不是精度提升,而是相位与幅度的平移。

三、参数调整如何造成回看与后续的落差

这里说的是指标公式能保证盈利吗这个问题里最容易被跳过的一环。在一段有限长度的历史上,可以被尝试的参数组合数量,远远多于这段历史里能够沉淀下来的稳定规律数量。这意味着只要肯反复调,总能找到一组参数让历史曲线看起来顺眼。

顺眼的原因不是规律被找到了,而是参数把那段历史里的偶然波动也一并记了下来。偶然波动不会按原样重来,于是同一组参数换到后面的一段数据上,表现会回落到一个更平的位置。这是机制层面的推论,不需要统计比例来支撑。

核对项 怎么做 看到什么值得继续查
参数个数与样本长度 数源码里可调的参数个数,对比用于调整的历史长度 参数个数相对于历史长度偏多
留出检验 把最近一段数据排除在调参之外,再用同一组参数跑这一段 两段的表现差距明显
邻域稳定性 把某个参数上下各挪一档,比较输出 结果对参数取值敏感
留出检验不用任何额外工具,用公式管理器里已有的回看区间就能做。关键是把「用来调参数的那段」和「用来看结果的那段」分开,两段不要重叠。

四、未来函数会让已经出现的信号重绘

有一类函数在计算当前这根 K 线时,会去读它后面的数据。历史回看时后面的数据是齐的,所以信号看起来落点很准;实际使用时后面还没有数据,同一个位置上的信号可能不出现,或者出现的位置变了。这个现象叫重绘。

按用途分,可疑的写法集中在三族:峰谷定位类,函数名带 ZIG、ZIGZAG、PEAK、TROUGH 以及同名加 BARS 后缀的写法;回填类,如 BACKSET;向后引用类,如 REFX。具体拼写以你所用版本自带的函数说明为准,不同版本的函数表收词并不完全一致。

自定义公式与备份都放在软件安装目录下的 T0002 里,自定义公式数据文件是 PriGS.dat,备份目录是 gs_bak。在改动公式库之前,把 T0002 整个目录复制一份出来放在别的位置,这一步比后面任何检查都省事。

不要在没有备份的情况下直接覆盖 PriGS.dat。文件被写坏之后再想还原,就只能靠 gs_bak 里的旧副本,而那份副本的时点未必是你想要的那个。

五、三处可以自己动手的核对

第一处是时间切片对照。把同一根 K 线上的输出在收盘后记一次,在盘中再记一次,两次若不一致,公式里就有读取未完成数据的部分。这个办法不依赖任何函数名清单。

第二处是数据起点对照。把本地日线数据补齐到更长的区间后重跑,比较最早那一段的输出是否变化。这里要先排除数据本身的问题:本地数据不足时,函数会返回空值或 0,看起来像是公式出了问题,实际是数据没下载完。判断办法是看公式输出与本地数据的起始位置是否对得上。

第三处是函数名对照。把公式里用到的函数逐个抄出来,对着公式编辑器里的函数说明逐条看它引用了哪一段数据。如果你所用版本在公式编辑器里带测试入口,可以用它先筛一遍可疑的函数名;提示的文案随版本不同,以软件内的说明为准。

{ 时间切片对照:先只输出一个中间量,便于逐根比对 }
T1:=REF(CLOSE,1);
X:CLOSE-T1;

{ 把 X 的最后一根值在收盘后与盘中各记一次 }
{ 两次一致 → 这一行不含未来数据 }

六、把评估落在可核对的清单上

指标公式能保证盈利吗这个问题,落到操作上就变成一张清单。清单上的每一项都能自己验证,也都能被别人重复验证。凡是没法写进清单的说法,先放着。

核对项 用什么方式核
输入范围 看源码里出现的数据序列,是否只用到已收盘的量
未来函数 函数名对照 + 时间切片对照
参数与历史长度的比例 数参数个数,对比调参所用的历史长度
留出检验 调参与看结果分两段,不重叠
数据完整性 核对本地数据的起始位置与公式输出的起点
输出量纲 主图公式的值是否落在价格量级,副图公式是否与 0 轴可比

量纲这一项容易漏掉。主图公式与 K 线共用坐标轴,一条取值远高于价格的输出线会把 K 线压成一条细带;副图公式若把不同量纲的量画在同一坐标里,两条线的相对高低没有含义。这类问题不属于未来函数,也不会报错,但会让读图的人得到错误印象。

七、本文的范围

本文讨论的是公式的计算口径与验证方法,不涉及任何具体标的的判断,也不构成对任何公式或方法的评价。指标公式能保证盈利吗,从机制上给出的回答是:公式只能对已落地数据做确定性变换,参数的调整会让结果与产生它的那段历史贴得更紧,含未来函数的写法会让历史信号在后续数据到位后发生位移。这三点决定了公式输出是对历史的描述。

站内还有几处可以对照查看:回测验证与风险控制 一栏讲的是口径与验证顺序,公式编写与语法函数 一栏讲函数本身的用法,指标原理与参数优化 一栏讲指标构造。三处的侧重点不同,按需要挑一处看即可。

文中出现的目录名、文件名与菜单路径来自软件安装后的目录结构与公式管理器界面;不同版本、不同券商定制版可能存在差异,请以你所用版本的「帮助 → 关于」与本地实际目录为准。

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