实时优化结果可视化 - 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 终端(“工具箱”窗口的代码库选项卡)自动下载。为此,请选择“下载”。所有代码都将被下载并放置在其文件夹中。

图 1. 通过 MetaTrader 5 终端下载 CodeBase 程序
1.2.测试 EA 交易
Moving Averages_With_Frames.mq5 Expert Advisor 应在策略测试器中启动。

图 2. Moving Averages_With_Frames.mq5 测试设置
优化选项:

图 3. Moving Averages_With_Frames.mq5 测试设置
在优化过程中,EA 交易会显示余额动态和优化过程统计数据:

图 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。

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

图 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
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
