用于多货币 EA 交易和指标的“MCM 控制面板” - MetaTrader 5 的 Expert













MQL5 语言的优点之一是可以使用多货币指标和 Expert Advisor。看多货币 OnTickMarketWatch 刻度事件处理程序在 MQL5 中代码库。
使用脚本中提出的概念并不方便。例如,在许多事件的情况下,有可能是事件队列溢出。
这是来自的注释MQL5 参考:
客户端添加出现 事件到事件队列。所以事件是在一个接一个的过程中被处理的 按照收到的顺序。有一个例外 NewTick 事件。如果队列已经有这样的事件或者这个事件 正在处理,新的 NewTick 事件未入队。
事件队列限制在 尺寸。队列溢出时,旧事件将被删除而不进行处理 以允许接收新事件。因此,它是 推荐编写高效的事件处理程序,不推荐 使用无限循环(脚本有一个例外,它处理 仅开始事件)。
此外,有时只有在新柱出现时才需要重新计算指标值。另一种情况是,如果您需要在多货币 EA 交易中禁用某些交易品种的“即时”交易,以更改某些交易品种或其他内容的时间范围。
“其他东西”可能是外部数据。 MCM(多货币模式)控制面板就是基于这个想法。
顺便说一句,它也可以用于单一货币交易。
“MCM控制面板”(竞赛版)具有以下特点:
它具有在 EA 交易和指标中使用多货币模式所需的最少功能:
使用“MCM 控制面板”您可以添加自己的功能。详情请参阅下文。
此版本不支持保存/恢复控制面板设置。
可以通过多种方式启动“MCM 控制面板”:
在第三种情况下,面板将加载我们的 EA 交易或指标并附加到图表上。
您的 EA 交易应具有 OnChartEvent() 事件处理程序来处理 MCM 控制面板事件。
用户界面很简单,它是作为菜单实现的。菜单的大小和颜色可以通过输入参数进行配置。
它看起来如下:

该面板用于配置多货币 EA 交易和指标的事件。
面板的大小和位置取决于图表大小和字体大小(在输入参数中定义)。为了释放工作空间,可以最小化面板。

可以通过更改输入参数中的字体大小来更改面板的大小(默认情况下字体大小=10):

您可以设置任何您想要的颜色。
例如,粉红方案:

EMO计划:

菜单直观,易于使用。
“MCM 控制面板”按钮包含附加功能(不包含在此版本中):

使用“图表”按钮,您可以轻松更改当前交易品种和时间范围,只需选择它:

“事件”允许您“即时”启用/禁用某些交易品种的事件(无需重新启动 EA 交易或指标)并指定所需的事件。这些事件可以在 Expert Advisor 或 Indicator 的 OnChartEvent() 函数内进行处理。交易品种菜单仅包含从“市场观察”中选择的交易品种。您可以组合任何事件,所有事件都将被处理。
例如,不必担心时间范围上交易品种新的价格变动/条形的出现,面板引擎将发送事件:

这是“帮助”:

专有技术及其实施
我的解决方案发布于多货币 OnTickMarketWatch 刻度事件处理程序,但该面板还有一些附加功能:
有关事件和警报的信息
面板有一个状态栏来显示事件。
MCM控制面板的安装
将存档文件 mcm_control_panel.zip 解压到客户端文件夹中。之后会出现以下文件:
接下来,编译指标、脚本和 Expert Advisor。
启动 MCM 控制面板
MCM 控制面板的推出将 iControl 面板 MCM.mq5 指标附加到任何图表。
该面板可以从 EA 交易启动,只需将“exControl panel MCM”EA 交易附加到图表即可:

作为多货币的示例,我编写了 MultiTrend Expert Advisor。该指标根据 4 个货币对的分析绘制美元趋势:
这是代码:
//+------------------------------------------------------------------+ //| 多趋势.mq5 | //| 版权所有 2010,Liza | //| https://www.mql5.com/ru/users/Lizar | //+------------------------------------------------------------------+ #定义版本 “1.00 版本 2(2010 年 12 月 9 日)” #财产版权 “版权所有 2010,利扎尔” #属性链接 “https://www.mql5.com/ru/users/Lizar” #属性版本 版本 #属性描述“此 EA 交易使用 MCM 控制面板” 输入 颜色背景颜色=灰色的; // 菜单颜色 输入 颜色字体颜色=盖恩斯伯勒;// 文字颜色 输入 颜色选择颜色=黄色的; // 选定的文本颜色 输入 整数字体大小=10; // 字体大小 #include <控制面板 MCM.mqh>//<--- 包含文件 //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ 整数 初始化时() { //--- MCM 控制面板初始化。 //--- 不需要设置颜色,如果不指定,将使用默认颜色。 InitControlPanelMCM(bg_color,font_color,select_color,font_size);//--- 返回(0); }//+------------------------------------------------------------------+ //|专家去初始化函数 | //+------------------------------------------------------------------+ 空白 解初始化(常量 整数原因) { DeinitControlPanelMCM(); //<--- MCM 控制面板取消初始化 }//+------------------------------------------------------------------+ //| OnChartEvent 事件处理程序。 | //|有关详细信息,请参阅 MQL5 参考。 | //|可与 MCM 控制面板一起使用进行多币种交易 | //+------------------------------------------------------------------+ 空白 图表事件(常量 整数ID,// 事件标识符: // 如果 id-CHARTEVENT_CUSTOM==0 - 初始化事件(当 prev_calculated==0 时) // if id-CHARTEVENT_CUSTOM!=0 - “市场报价”窗口中的交易品种索引 常量 长的& lparam,// 大体时间 常量 双倍的&d参数,// 价格 常量 细绳& 垃圾邮件 // 象征 ) { 如果(id>=CHARTEVENT_CUSTOM) { 打印(字符串时间(时间当前(),TIME_SECONDS),“-> id=”, ID-CHARTEVENT_CUSTOM, “: ”,斯帕姆,” “,事件描述(lparam),“价格=”,d参数); } }//+------------------------------------------------------------------+
OnChartEvent() 参数。
控制面板生成自定义事件。这些事件可以使用 OnChartEvent() 事件处理程序在 EA 交易或指标中进行处理。
输入参数:
MCM 控制面板中支持的事件列表
使用 lparam 参数,控制面板可以在符号上发送最多 64 个不同的自定义事件。在此版本中支持以下事件:
由 EventDescription() 返回的事件描述显示在括号中(初始化、tick、Mxx 等)。 EventDescription 函数可以在控制面板 MCM.mqh 中找到(位于 ENUM_CHART_EVENT_SYMBOL 枚举之后)。
当 prev_calculated=0 时生成“初始化”事件,可用于准备数据,例如可以重新计算指标值。
要设置所需的事件,请单击“事件”按钮,选择交易品种和事件类型。所选事件以黄色(或指标输入参数中的所选颜色)显示。您可以选择一个或多个事件,所有这些事件都可以由我们的多货币 Expert Advisor 处理。要应用更改,请单击“启用/禁用事件”按钮。
可以对所有必要的符号执行相同的过程。

以下是“专家”选项卡中的日志:

附件下载
Source: MQL5 #215
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
