English Русский Español Português
preview
百年数学函数如何革新您的交易策略?

百年数学函数如何革新您的交易策略?

MetaTrader 5指标 |
338 0
Aleksej Poljakov
Aleksej Poljakov

概述

对金融市场当前状态的分析,是成功交易最重要的基础。它使交易者能够评估当前形势、预测可能的价格变化,并做出明智的交易决策。为此,可以使用各种数学方法和模型。

在本文中,我们将讨论几种新的数学函数。其实并不是全新的。它们在大约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 指标
  • Type — 构造指标时所使用的函数类型。
  • N — 决定指标阶数的参数,周期 = 2^N。
  • P — 所用函数的最高阶数,Rademacher函数:P ≤ N;其余函数:P ≤ 2^N - 1。
  • Shift — 指标偏移,可在历史数据上观察指标行为。
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

在 IBM 量子计算机上分析所有价格变动选项 在 IBM 量子计算机上分析所有价格变动选项
我们将使用 IBM 的量子计算机来发现所有价格变动选项。听起来像科幻小说?欢迎来到用于交易的量子计算世界!
您应当知道的 MQL5 向导技术(第 54 部分):搭配混合 SAC 和张量的强化学习 您应当知道的 MQL5 向导技术(第 54 部分):搭配混合 SAC 和张量的强化学习
软性参与者-评论者是一种强化学习算法,我们曾在之前的系列文章中考察过 Python 和 ONNX,作为高效的网络训练方式。我们重新审视该算法,意在利用张量,即 Python 中常用的计算图形。
使用 Python 创建波动率预测指标 使用 Python 创建波动率预测指标
在本文中,我们将使用二元分类来预测未来的极端波动。此外,我们将利用机器学习开发极端波动预测指标。
圆搜索算法(CSA) 圆搜索算法(CSA)
本文提出一种基于圆几何特性的新型元启发式优化算法——圆搜索算法(CSA)。该算法通过模拟切线方向上的点移动机制,在解空间中实现全局探索与局部开发的协同优化。