百年数学函数如何革新您的交易策略?
概述
对金融市场当前状态的分析,是成功交易最重要的基础。它使交易者能够评估当前形势、预测可能的价格变化,并做出明智的交易决策。为此,可以使用各种数学方法和模型。
在本文中,我们将讨论几种新的数学函数。其实并不是全新的。它们在大约100年前是新的。现在,有些函数已被遗忘,而有些则被应用。但出于某种原因,并未用于交易。让我们尝试纠正这一令人遗憾的疏漏。
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函数帮助我们显著简化此类计算。函数的典型定义如下……在研究了其定义后,我明白了为何交易者鲜少使用它们。
总体而言,Walsh函数的经典定义并不适用于我们的需求。我们需要更加简洁清晰的表达方式。因此,我们将按如下方式计算p阶函数:

这种Walsh函数定义方法使我们能够构建离散傅里叶变换的离散化模拟。其中,余弦函数对应变换的实部,正弦函数对应虚部。正弦函数追踪趋势方向,余弦函数捕捉趋势转折点。归功于这种组合,指标可实现价格平滑,且函数阶数越高,平滑效果越强。

唯一限制是函数阶数不得超过指标周期。例如,若选用周期为8的指标。那么可使用0-7阶函数。
突破系统,自由交易
我们研究的函数已证明其实用价值。您的手机内部就隐藏着Walsh函数的应用。然而……任何领域都存在"但是"的转折。如果不存在,要么是完美无缺(极不可能),要么是有所隐瞒。让我们打破规则——不是出于破坏,而是为了拓展视野。
Rademacher函数基于正弦函数构建。正弦是奇函数:
![]()
没有人真正理解其数学本质,但是(又一个"但"是)正是这种奇异性,使其能够呈现价格变化的趋势模式。如果需要平滑价格波动区间?此时需要偶函数。例如余弦函数。
p阶Rademacher函数的平滑版本可定义为:

基于此类函数构建的指标同样能追踪趋势。但这些趋势是相对于指标中心点衡量的。换言之,该指标会显示趋势方向改变的临界点。

Walsh函数系统与三角多项式系统,或者傅里叶变换具有相似性。它们最初被设计为傅里叶变换的简化替代方案。Walsh函数的精度虽不及傅里叶变换,但计算速度极快且步骤极简。对当时的计算机而言,这一特性至关重要。
但是(又一个转折)还存在另一种可构建全新系统的变换,它就是Hartley变换。该变换基于正弦与余弦的和。其函数比例计算方式如下:

如果函数为对称型,那么可以平滑价格。如果为非对称型,则可以追踪趋势。基于此类函数构建的指标如下图所示:

接下来的改进涉及指标显示方式。任何0阶函数均等同于简单移动平均线(SMA)。但交易者习惯将SMA显示为图表上的连续线形。我们采用相同逻辑:在每根K线上仅计算指标最终值并连线,即可呈现传统均线形态。

基于这些函数还可以构建振荡器(Oscillator),指标本身仅需微调。将所有0阶函数系数归零。所得振荡器将显示线性指标相对于SMA的波动情况。

后两类指标通过差分计算实现,滞后性极低。这样一来,对交易策略具有积极影响。
交易策略
现在让我们看一下如何在交易中使用这些指标。
在第一种策略中,我将利用指标跟踪趋势的能力。策略规则非常简单:
- 如果当前价格低于最低指标值,且前一根K线价格高于当前价格,则开立买入头寸并关闭卖出头寸;
- 如果当前价格高于最高指标值,且前一根K线价格低于当前价格,则开立卖出头寸并关闭买入头寸。
尽管规则简单,策略效果却相当不错。

基于线性指标,您可以构建价格与指标线交叉时产生信号的策略:
- 如果当前价格高于指标线,且前一根K线低于指标线,则开立买入头寸并关闭卖出头寸;
- 如果当前价格低于指标线,且前一根K线高于指标线,则开立卖出并关闭买入头寸。

测试结果中规中矩。但您总是可以同时使用多个指标,每个指标自带参数。指标各自产生信号并贡献其微薄收益。
我们可以用另一指标的值替代价格值,对策略稍作改动。直觉上,一个指标应负责平滑,另一个负责趋势跟踪。改动后的结果可能如下所示:

我们也可用基于上述函数构建的振荡器来生成信号。
让我们先尝试最简单的方式,当指标线穿越零轴时产生信号。如果振荡器由负变正,则开立买入订单并关闭卖出订单;反之,如果由正变负,则产生相反信号。
此方法的准确性不高,其实际应用价值有待商榷。

让我们对该策略做一些改动。当振荡器触及预设最小值时开立买入订单。当指标值升破预设上限时开立卖出订单。当振荡器穿越零轴时平仓。
改变开仓信号后,结果略有改善。

如果您仍然不满意,可以随时调整参数。

由此可见,在交易中使用新指标相当合理。同时,文中所讨论的函数允许我们构建更复杂的策略。所有1阶及以上函数均为独立振荡器。您可以基于不同类型、阶数和周期的函数建立振荡器库。并据此获得更精确的交易信号。
结论
在交易中使用这些“新旧”函数,为价格走势分析与交易决策开辟了新的视角。它们有助于识别价格行为中的隐藏模式,并对未来变化做出预判。在此基础上,可以构建有效的交易策略。此外,Rademacher与Walsh函数还可用于过滤噪声、提升预测质量。
撰写本文时使用了以下程序:
| 名称 | 类型 | 特征 |
|---|---|---|
| New Function | 指标 |
|
| New Function Lin | 指标 | 计算所选函数系统的最新已知值并显示在图表上。 |
| New Function Osc | 指标 | 基于阶数1及以上的函数构建的振荡器。 |
| EA New Function | EA | 利用当前价格与函数最小/最大值的偏差来生成信号。 |
| EA New Function Lin | EA | 当价格穿越New Function Lin指标线时生成信号。 |
| EA New Function Lin 2 | EA | 当两条New Function Lin指标线交叉时生成信号。 |
| EA New Function Osc | EA | 当New Function Osc指标线穿越零轴时生成EA信号。 |
| EA New Function Osc 2 | EA | 当New Function Osc指标线穿越指定水平时生成EA信号。 水平值通过输入参数LvlBuy与LvlSell设定。 |
本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/17252
注意: MetaQuotes Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。
本文由网站的一位用户撰写,反映了他们的个人观点。MetaQuotes Ltd 不对所提供信息的准确性负责,也不对因使用所述解决方案、策略或建议而产生的任何后果负责。
您应当知道的 MQL5 向导技术(第 54 部分):搭配混合 SAC 和张量的强化学习