欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

实时优化结果可视化 - MetaTrader 5 专家

author emer | 372 人阅读 | 0 人评论 |

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

MetaTrader 5 策略测试程序允许在每次测试通过后获取交易系统的统计参数。

统计参数可以使用以下方式获得测试统计()函数,内部调用OnTester()OnDeinit()功能。

引入了处理优化结果的函数(帧优先(),帧过滤器(),下一帧(),帧输入()帧添加()),交易者现在能够执行视觉优化。现在可以在 Expert Advisor 优化或数学问题解决期间处理和显示必要的数据。

我们将考虑本文中描述的优化过程中 EA 交易测试结果可视化示例的详细信息“在 MetaTrader 5 测试器中可视化策略”

1. 优化过程中平衡动态的可视化

1.1.下载文件

Moving Averages_With_Frames.mq5 Expert Advisor 应复制到terminal_data_folder\MQL5\Experts。

应将它们复制到terminal_data_folder\MQL5\Include。

代码库程序可以通过 MetaTrader 5 终端(“工具箱”窗口的代码库选项卡)自动下载。为此,请选择“下载”。所有代码都将被下载并放置在其文件夹中。

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

图 1. 通过 MetaTrader 5 终端下载 CodeBase 程序

1.2.测试 EA 交易

Moving Averages_With_Frames.mq5 Expert Advisor 应在策略测试器中启动。

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

图 2. Moving Averages_With_Frames.mq5 测试设置

优化选项:

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

图 3. Moving Averages_With_Frames.mq5 测试设置

在优化过程中,EA 交易会显示余额动态和优化过程统计数据:

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

图 4. Moving Averages_With_Frames.mq5 优化

优化流程:

1.3.EA 交易原理

Moving Averages_With_Frames.mq5 Expert Advisor 是基于标准 MetaTrader 5 终端包 (MQL5\Experts\Examples\Moving Average) 中包含的 Moving Averages.mq5 创建的。

//--- 连接用于处理优化结果的代码
#include 
//--- 帧生成器CFrameGenerator fg;//+------------------------------------------------------------------+
//|测试功能                                                 |
//+------------------------------------------------------------------+
双倍的OnTester()
  {// - - 插入您的优化标准计算函数这里  双倍的测试员标准=数学抗体测试统计STAT_SHARPE_RATIO)*测试统计统计利润));
   测试员标准=测试统计统计利润)>0?TesterCritetia:(-TesterCritetia);//--- 在每次测试后调用并提交优化标准作为参数   fg.OnTester(TesterCritetia);//---  返回(测试员标准);
  }//+------------------------------------------------------------------+
//| TesterInit 函数                                              |
//+------------------------------------------------------------------+
空白OnTesterInit()
  {//--- 准备图表以显示多条平衡线   fg.OnTesterInit(3);// 参数设置图表上的平衡线数量  }//+------------------------------------------------------------------+
//| TesterPass 函数                                              |
//+------------------------------------------------------------------+
空白OnTesterPass()
  {//--- 处理获得的测试结果并显示图形   fg.OnTesterPass();
  }//+------------------------------------------------------------------+
//| TesterDeinit 函数                                            |
//+------------------------------------------------------------------+
空白OnTesterDeinit()
  {//--- 优化结束   fg.OnTesterDeinit();
  }//+------------------------------------------------------------------+
//|  图表事件处理                                    |
//+------------------------------------------------------------------+
空白 图表事件常量 整数ID,常量 长的&l参数,常量 双倍的&d参数,常量 细绳&s参数)
  {//--- 点击标题时优化结束后启动帧显示   图。图表事件(id,lparam,dparam,sparam,100);// 100 是两次镜头之间的暂停(以毫秒为单位)  }//+------------------------------------------------------------------+

此代码可以类似地在任何 EA 交易中使用。

CFrameGenerator 类用于处理优化结果。该类包含以下方法 处理策略测试器事件(OnTester(),OnTesterInit(),OnTesterPass(),OnTesterDeinit())和图表事件的方法(OnChartEvent())。 使用的图形对象是在 CFrameGenerator 类的 OnTesterInit() 方法中准备的。

每次测试通过后,都会在测试代理上调用 CFrameGenerator 类的 OnTester() 方法。这个方法 提供基于交易结果的余额曲线动态计算。余额曲线图是一个一维数组,其长度取决于已执行交易的数量。

然后,测试统计()函数用于请求统计数据(净利润、利润系数、回收系数、交易数量、交易数量、最大资金回撤百分比、自定义优化标准值)并生成一个框架(在我们的例子中是测试通过数据数组),该框架(从测试代理)发送到终端帧添加()功能。

帧在 CFrameGenerator 类的 OnTesterPass() 方法中接收和处理。帧读取操作由下一帧()功能。对已生成框架的 EA 输入参数的请求是使用以下命令执行的帧输入()功能。

获取数据后,使用 CSimpleTable、CColorProgressBar 和 CSpecialChart 类方法显示和更新数据。

需要注意的是,执行OnTester()处理函数在测试代​​理上在完成另一个当前优化过程之后。这允许使用MQL5 云网络分布式网络能够执行复杂的数学计算。为此,请将计算部分放置到 OnTester 事件处理程序中。

使用优化加速数学计算的示例(连续小波变换维尔斯特拉斯函数)显示在主题中“实时管理优化流程并将大量数据从代理传输到 MetaTrader 5”

2. 使用 CSimpleTable、CColorProgressBar 和 CSpecialChart 类的示例

Attached Test_SimpleTable.mq5 and Test_CSpecialChart.mq5 scripts contain examples of working with CSimpleTable, CColorProgressBar and CSpecialChart classes.应将它们复制到terminal_data_folder\MQL5\Scripts。

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

图 5. Test_SimpleTable.mq5 脚本运行结果

Visualization of Optimization Results in Real Time - expert for MetaTrader 5

图 6. Test_CSpecialChart.mq5 脚本运行结果


附件下载

📎 specialchart.mqh (7.71 KB)

📎 simpletable.mqh (10.78 KB)

📎 framegenerator.mqh (15.08 KB)

📎 colorprogressbar.mqh (4.89 KB)

📎 test_simpletable.mq5 (2.52 KB)

📎 test_cspecialchart.mq5 (2.19 KB)

📎 moving_average_with_frames.mq5 (8.67 KB)

Source: MQL5 #914

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录