用百年数学函数给策略换引擎
◍ 用百年数学函数给策略换引擎
很多 MT5 交易者还在用均线交叉那套老逻辑,但一类源自百年前的数学函数正在被重新塞进指标算法里。这类函数本质是把价格序列做变换,让原本藏在噪声里的结构显形。 Aleksej Poljakov 在 2025 年 12 月 1 日发布的这篇文章,截至统计时有 721 次浏览、0 条评论,说明这类硬核内容还没被大众嚼烂。你可以在 MT5 里新建一个自定义指标,把经典数学函数接进 OnCalculate,亲自看变换后的曲线对假突破的过滤效果。 外汇和贵金属杠杆高、跳空频繁,任何函数改良都只是提高概率,不是免死金牌。先开 MT5 跑一遍回测再上实盘。
「被遗忘的百年数学函数值得搬进图表」
对盘面当下状态做量化判断,是交易决策的地基。评估当前形势、推演价格可能的偏移,靠的是数学方法和模型,而不是盘感口号。 本文要聊的几类数学函数并非凭空发明。它们约在100年前提出,后来有些被其他领域弃用,有些虽在应用却几乎没进过交易圈。 外汇与贵金属属高风险品种,任何模型都只给出概率倾向。把这类旧函数接进MT5,可能帮你看到常规均线滤不掉的结构变化。
Rademacher函数
从数学角度看, 函数 是自变量与其值之间的对应关系。它们可能看起来像这样,例如: 在交易中,这类函数极少被使用。 窗口函数 才是技术分析里最常用的。 这类函数的核心非常简单。先取固定数量的价格。每个价格乘以某个系数(计算方式往往晦涩难懂)。通过求和得出指标值。换言之,指标就是价格的函数。现在我们面对交易的核心问题:去哪里找简单、可解释的系数? 可以使用 Rademacher函数 设置指标系数。该函数的方程极其简单: 其中p为函数阶数,'sign'为符号函数: 此函数看起来更简单。例如,一阶函数由两段组成。 如果将这些线段的端点与零点相连,我们将得到一个形状相同但呈方波形态的正弦函数。"Quadratisch. Praktisch. Gut"。然而,这种形式并不适合交易。我们需要对其进行一些改动,以得到离散版本。我们需要对其进行一些改动,以得到离散版本。 假设我们决定基于Rademacher函数创建一个指标。首先设定其周期为N。那么该指标第i个系数可通过以下方程计算: 例如,这就是周期为8的二阶离散Rademacher函数的样子。 现在,我们可以开始基于这些函数开发指标。指标周期必须等于2的幂: 这样,指标将由阶数从0到s的Rademacher函数组成。例如,对于周期为4的指标,我们可以使用阶数为0、1和2的函数。 让我们看一下这类指标如何工作。首先,我们需要在每次读取未来指标时计算所有函数的值。 p = 0 1 1 1 1 p = 1 1 1 -1 -1 p = 2 1 -1 1 -1 现在,我们需要计算每个特征的权重。我们先将各函数的占比值与其对应的价格相乘,并将所有结果求和。再将上述求和结果除以指标周期数。最终为每个函数得出三个权重值。 0阶函数的权重大家都很熟悉 —— 即 SMA 。其余权重均可视为带位移且周期递减的线性趋势之"平均速度"。 了解各函数的加权比例后,就可以开始计算指标值。具体做法是把权重乘以当前指标读数所对应的Rademacher函数值,再求和。简单地说,计算权重时,按行把价格放入求和。当计算指标时,把权重当作输入按列求和。于是得到四条指标曲线: 换言之,某一价格的变化会导致整个指标曲线随之变动。一方面,我们可以观察其绘制形态。另一方面,可以说该指标会根据新数据动态调整其价格走势模型。 您能想象这样的指标在图表上的呈现形式吗?这里存在若干实现方案。在构建指标时,我们无需使用全部Rademacher函数,而可仅选取部分低阶函数。例如,基于0-2阶函数构建的16周期指标形态如下: 基于Rademacher函数构建的指标,其核心特性在于不专注于对价格进行平滑处理。而是将任意价格波动视为若干线性趋势的叠加,并从中推导出这些趋势的平均水平。
◍ 用 Walsh 函数给价格做离散平滑
三角多项式能对任意时间序列建模,但正余弦计算成本高。Walsh 函数把这套运算大幅简化,不过经典定义对交易场景并不友好,需要改写成更直白的离散形式。 我们按 p 阶重构 Walsh 函数后,它实质是离散傅里叶变换的离散近似:正弦分量对应虚部、管趋势方向,余弦分量对应实部、抓趋势转折。两者叠加,指标就能平滑价格,且阶数越高平滑越强。 硬限制是阶数不能越过指标周期。例如周期设为 8,那只能用 0 到 7 阶,超界会破坏变换结构。外汇与贵金属波动剧烈,高阶平滑只是概率上压低噪声,不等于方向可预测,实盘前请在 MT5 用历史数据验证阶数敏感性。
「用偶函数压噪声、奇函数抓趋势」
Rademacher 函数借正弦函数搭建,正弦是奇函数,这种奇异性让它天然能呈现价格变化的趋势模式;要平滑波动区间,就得换偶函数比如余弦。p 阶 Rademacher 的平滑版可定义为基于此类函数构造的指标,它追踪的是相对指标中心点的趋势,并标出趋势方向改变的临界位置。 Walsh 函数系统类似傅里叶变换的简化替代,精度不如后者,但计算极快、步骤极简,对老式计算机很关键。另一种 Hartley 变换用正弦+余弦的和构建,对称型可平滑价格、非对称型可追踪趋势,衍生指标能直接挂图观察。 任何 0 阶函数都等同 SMA,但交易者习惯看连续线,所以每根 K 线只算最终值并连线就能复刻传统均线。把所有 0 阶系数归零可得到振荡器,显示线性指标相对 SMA 的偏离。后两类靠差分计算,滞后极低,对策略有正向影响。 外汇与贵金属波动剧烈、杠杆高风险大,这类低滞后指标只提高信号灵敏度,不保证胜率,实盘前请在 MT5 用历史数据验证参数。
把指标接进下单逻辑的几条路子
把前面提到的指标真正用进交易,最直白的是吃趋势跟踪能力。规则可以压到极简:现价低于全部指标线的最小值、且前一根 K 线收在现价上方,就平空开多;现价高于全部指标线的最大值、且前一根 K 线收在现价下方,就平多开空。这种朴素写法回测表现意外地不差。 换成线性指标,也能做价格与指标线的穿越。现价上穿指标线且前一根还在线下,平空开多;现价下穿且前一根在线上,平多开空。实测结果只能算中规中矩,但好处是指标可叠多个,各自带参数、各自吐信号,攒起来赚点薄利。 想再换思路,可用一个指标做平滑、另一个做趋势,把后者的输出替掉价格去比。或者干脆做成振荡器:最简单的零轴穿越——由负翻正平空开多,由正翻负反向——但准确率偏低,实盘价值存疑。 改一下开仓触发会好些:振荡器触到预设下限开多,破预设上限开空,零轴穿越平仓,这样改完结果略有改善。仍不满意就调参数。外汇和贵金属波动剧烈、杠杆高风险大,任何信号都只是概率倾向,务必在 MT5 上先跑历史验证再谈真金。 所有 1 阶及以上函数本质都是独立振荡器,按类型、阶数、周期攒一个振荡器库,信号精度可能比单线交叉更靠谱。
◍ 把这条线请下神坛
Rademacher 与 Walsh 这类正交函数体系,在 MT5 里真正能落地的不是玄学,而是一组可下载验证的指标与 EA:New_Function 指标靠 N 决定阶数、周期恒为 2^N,P 限制 Rademacher 不超过 N、其余不超 2^N-1,Shift 让你把线拖到历史 K 上肉眼比对。 New_Function_Lin 只画最新已知值,Osc 用 1 阶以上函数做振荡器;五套 EA 分别吃价格偏离极值、Lin 穿越、双 Lin 交叉、Osc 穿零、Osc 穿 LvlBuy/LvlSell。外汇与贵金属波动剧烈,高杠杆下这些信号只代表概率倾向,不代表方向必现。 把 ZIP 里 8 个 mq5 拖进 MT5 回测一遍,先看清周期 = 2^N 在 EURUSD 的 M15 上怎么扭动,再谈策略,比对着名词空想实在。