股票量化软件:在赫兹量化中测试移动平均线计算的性能

测试条件

计算速度取决于很多因素。因此,本研究作为结果获得的数据在其他测试条件下可能有所不同。换言之,性能的绝对值将有所不同,但是相对值将是类似的(针对某个平台)。

因此 MQL5 中的 iMA 函数本身不返回计算结果(它返回指标的句柄),我们将测试两个函数的速度:iMA 和 CopyBuffer。

测试条件:

  • CPU:Core i7 965

  • 交易品种:"EURUSD"

  • 价格数据大小:10000 个元素

  • 客户端:自主交易,图表中的最大柱数设置为 10000

  • 移动平均线模型:MODE_SMA、MODE_EMA、MODE_SMMA、MODE_LWMA

  • 计算速度的精确度限制为两位有效数字

  • 移动平均线函数的可能调用数量:7

2. 如何测试

要测量移动平均线的计算时间,我们使用 GetTickCount() 函数,该函数运行于毫秒级别。此精确度还不足够,因此我们需要组织某些循环以提高测量的质量。

但是,如果我们用相同的计算和相同的输入数据多次重复循环,则结果会失真。该事实的原因如下:iMA 函数在客户端的全局缓存中创建相应技术指标的一个副本。如果在全局缓存中已经存在一个指标的副本(具有相同的参数),则不创建新的副本,指标副本的引用计数器增大。

换言之,整个缓存指标仅在第一次调用时计算一次,所有后续的调用仅采用已经存在的值,它仅重新计算新的数据。

因此,应按这样的方式组织循环:指标的输入参数在循环期间是唯一的。我们已经选择了三个这样的参数:平均周期、时间框架和应用的价格。

参数

值范围

平均周期

从 1 至 100

时间框架

М1、М5、М15、М30

应用的价格

PRICE_CLOSE、PRICE_OPEN、PRICE_HIGH、PRICE_LOW、PRICE_MEDIAN、PRICE_TYPICAL、PRICE_WEIGHTED

表 1. 输入参数的范围

我们将使用七种不同的调用方法计算含有 10000 个元素的数组的移动平均值(详情见第 4 节)。

3. 研究结果

我们已经将所有结果组合在表 1 中,使用以秒为单位的计算时间来评估计算性能(见表 1)。程序计算了 100х4х7=2800 类移动平均线,并且我们确定含有 10000 个元素的价格数组的计算时间。单次循环的计算时间约等于总时间除以 2800。例如,对于案例 1 和 SMA 模式,它约等于 0.0028/2800。

模式

MODE_SMA

MODE_EMA

MODE_SMMA

MODE_LWMA

平台

0 (见第 4.1 节)

0,0041

0,0040

0,0043

0,0041

MetaTrader 4

1 (见第 4.2 节)

0,0028

0,00023

0,00027

0,0045

MetaTrader 5

2 (见第 4.3 节)

0,0029

0,0029

0,0029

0,0029

MetaTrader 5

3 (见第 4.4 节)

0,0998

0,0997

0,0998

0,0998

MetaTrader 5

4 (见第 4.5 节)

0,0996

0,0996

0,0996

0,0996

MetaTrader 5

5 (见第 4.6 节)

0,0030

0,0029

0,0029

0,0029

MetaTrader 5

6 (见第 4.7 节)

0,000140

0,000121

0,000117

0,0035

MetaTrader 5

表 2. 结果

将在下文讨论测试案例的意义(第 4.1-4.7 节)。让我们评估移动平均线计算性能的整个画面。

为方便起见,在图表中表示结果(见图 1-5)。移动平均线的调用类型在 X 轴上表示(见表 2),用对数刻度 -1 表示 Y 轴的值,因此,值越大,性能越快。每个计算模型(SMA、EMA、SMMA、LWMA)对应于图表中的一根柱。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

图 1. 不同移动平均线算法的性能测试结果

可以看到在不同的移动平均线计算案例中计算速度出现显著差异。这意味着什么?由 MQL5 开发人员提供的几种移动平均线算法具有不同的计算性能:有很快的算法(案例 6)和较慢的算法(案例 3 和 4)。因此,在用 MQL5 编写使用移动平均线的程序时,必须选择正确的算法。

在以下的图中详细说明了各个移动平均线模型 (0-6) 的计算时间,见表 2。

编辑

添加图片注释,不超过 140 字(可选)

图 2. MODE_SMA 模式的移动平均线计算性能

编辑

添加图片注释,不超过 140 字(可选)

图 3. MODE_EMA 模式的移动平均线计算性能

编辑

添加图片注释,不超过 140 字(可选)

图 4. MODE_SMMA 模式的移动平均线计算性能

编辑

添加图片注释,不超过 140 字(可选)

图 5. MODE_LWMA 模式的移动平均线计算性能

比较两个平台的计算性能非常有趣:赫兹量化。表 2 中的案例 0 (MQL4) 和案例 1 (MQL5) 显示了结果。

为方便起见,让我们将 iMA 标准指标的计算结果组合到单独的图和表中(见图 6)。测试的计算时间以 Y 轴表示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值