大家好!今天我们来聊聊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>//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| 专家初始化函数 |intOnInit() { //--- 在此添加代码... return(0); } //+------------------------------------------------------------------+//| 专家多滴答函数 |voidOnTick(string symbol) { //--- 在此添加代码... Print("新事件在符号: ",symbol); } //+------------------------------------------------------------------+//| ChartEvent函数 |voidOnChartEvent(constint id, // 事件ID constlong& lparam, // long类型事件参数 constdouble& dparam, // double类型事件参数 conststring& sparam) // string类型事件参数 { //--- 在此添加代码... } //+------------------------------------------------------------------+//| 专家去初始化函数 |voidOnDeinit(constint 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