首页 系统交易 帖子

MetaTrader 5多货币模式OnTick事件处理器的全新实现

附件
280.zip (5 KB, 下载 2次)

大家好!今天我们来聊聊MetaTrader 5的新功能——多货币模式的OnTick事件处理器。这一功能实现了全能的多货币交易,提升了我们在交易过程中的灵活性。

功能优势

  • 支持真实和模拟账户的真正多货币模式。
  • 设置简单,易于使用。
  • OnTick事件列表可配置,包括新滴答和/或新K线。
  • 可以配置交易品种列表(从市场观察中选择全部品种或指定的某些品种)。
  • 在处理市场观察中的品种时,允许实时管理OnTick事件。
  • 无需深入了解内部工作机制,所有代码已包含在引入文件中。
  • 可以在策略测试器中使用。

专家顾问模板如下:

//+------------------------------------------------------------------+
//|  OnTick(string symbol).mq5 |
//|  Copyright 2010, Lizar |
//|  https://www.mql5.com/ru/users/Lizar |
//+------------------------------------------------------------------+
#define VERSION   "1.00 Build 1 (01 Fab 2011)"

#property copyright   "Copyright 2010, Lizar"
#property link               "https://www.mql5.com/ru/users/Lizar"
#property version             VERSION
#property description "专家顾问模板"
#property description "包含多货币OnTick事件处理器"

//+------------------------------------------------------------------+
//| 多货币模式设置 |
//| OnTick事件处理器的设置 |
//| 1.1 需要处理事件的符号列表: |
#define SYMBOLS_TRADING   "EURUSD","GBPUSD","USDJPY","USDCHF"
//| 1.2 如果要使用市场观察中的所有符号,可以使用: |
//#define SYMBOLS_TRADING   "MARKET_WATCH"
//| 注意:只能选择1.1或1.2中的一种方式。 |
//| 2. OnTick事件的类型: |
#define CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//| 3. 引入文件: |
#include <OnTick(string symbol).mqh>
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| 专家初始化函数 |
int OnInit()
  {
   //--- 在此添加代码...
   return(0);
  }
  
//+------------------------------------------------------------------+
//| 专家多滴答函数 |
void OnTick(string symbol)
  {
   //--- 在此添加代码...
   Print("新事件在符号: ",symbol);
  }
  
//+------------------------------------------------------------------+
//| ChartEvent函数 |
void OnChartEvent(const int id, // 事件ID
      const long& lparam, // long类型事件参数
      const double& dparam, // double类型事件参数
      const string& sparam) // string类型事件参数
  {
   //--- 在此添加代码...
  }
  
//+------------------------------------------------------------------+
//| 专家去初始化函数 |
void OnDeinit(const int reason)
  {
   //--- 在此添加代码...
  }

//+------------------------------ end -------------------------------+

一些功能介绍:

1. 设置

所有设置都可以使用#define指令配置。要使OnTick(string symbol)函数正确工作,只需指定两个参数:SYMBOLS_TRADING和CHART_EVENT_SYMBOL。第一个(SYMBOLS_TRADING)定义了事件所使用的符号列表。第二个(CHART_EVENT_SYMBOL)定义了所有符号的事件类型。

SYMBOLS_TRADING包含符号列表,例如:

#define SYMBOLS_TRADING   "EURUSD","GBPUSD","USDJPY","USDCHF"

符号列表必须用字符串表示,并用逗号分隔。列表以换行结束。

SYMBOLS_TRADING可以如下定义:

#define SYMBOLS_TRADING   "MARKET_WATCH"

这种方式表示将使用市场观察中的所有符号。可以通过这种方法“实时”更改符号列表。只需添加或移除所需的符号即可。

CHART_EVENT_SYMBOL事件类型由标志或它们的组合定义,详细信息请查看这里(俄文)。

2. 引入文件。

需要引入OnTick(string symbol).mqh文件,这个文件包含OnTick(string symbol)函数的实现。它提供了使用OnTick(string symbol)函数的简单方法。即使某些标准函数为空,也应该在专家顾问的代码中声明。

3. 策略测试器。

如您所知,目前,OnChartEvent在策略测试器中不被支持。为了解决这个问题,使用全局变量来处理事件。此方法仅在策略测试器中使用,在所有其他情况下(真实/模拟账户)通过OnChartEvent处理事件。

在策略测试器中,OnTick(string symbol)将在策略测试器设置的符号的滴答上工作。换句话说,它的工作方式类似于OnTick(),但在所选符号上有新滴答时也会被调用。对于策略测试器,SYMBOLS_TRADING必须指定为符号列表。

4. “间谍”。

它使用“间谍”(代理指标)。文件“Spy Control panel MCM.ex5”必须位于\MQL5\Indicators\文件夹中。

5. 从压缩包中提取的文件必须放在\MQL5文件夹中。所需文件:

  • /MQL5/Experts/OnTick(string symbol).mq5 - 专家顾问示例,模板的源代码;
  • /MQL5/Experts/OnTick(string symbol).ex5 - 专家顾问编译文件;
  • /MQL5/Indicators/Spy Control panel MCM.mq5 - 代理指标,源代码;
  • /MQL5/Indicators/Spy Control panel MCM.ex5 - 代理指标,编译文件;
  • /MQL5/Include/OnTick(string symbol).mqh - 包含文件,包含OnTick(string symbol)函数所需的所有函数。

相关帖子

评论 (0)