Inicio Trading Sistemático Publicación

Manejador de eventos multicurrency OnTick en MetaTrader 5: Potencia tu trading

Archivos adjuntos
280.zip (5 KB, Descargar 1 veces)

Hoy les traigo una implementación innovadora del modo multicurrency en MetaTrader 5, que se integra a través de la función OnTick(string symbol). Si estás buscando optimizar tus estrategias de trading, este nuevo enfoque es justo lo que necesitas.

Beneficios:

  • Ofrece un verdadero modo multicurrency tanto en cuentas demo como reales.
  • Configuraciones sencillas y fáciles de usar.
  • La lista de eventos para OnTick(string symbol) es configurable: NewTick y/o NewBar.
  • Se puede personalizar la lista de símbolos (ya sea usando todos los símbolos del Market Watch o algunos específicos).
  • Al trabajar con los símbolos del Market Watch, puedes gestionar eventos 'al instante' en OnTick(string symbol).
  • No es necesario entender todos los detalles técnicos, ya que todo el código está contenido en el archivo de inclusión.
  • Compatible con el Strategy Tester.

Plantilla del Asesor Experto:

//+------------------------------------------------------------------+
//|                                        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 "Plantilla del Asesor Experto"
#property description "con manejador de eventos multicurrency OnTick(string symbol)"

//+------------------------------------------------------------------+
//|                CONFIGURACIONES DEL MODO MULTICURRENCY                       |
//|           del manejador de eventos OnTick(string symbol)                 |
//|                                                                  |
//| 1.1 Lista de símbolos necesarios para proceder en los eventos:             |
#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"
//| 1.2 Si deseas todos los símbolos del Market Watch, utiliza esto:         |
//#define  SYMBOLS_TRADING    "MARKET_WATCH"
//|     Nota: Selecciona solo una forma de 1.1 o 1.2.                   |
//|                                                                  |
//| 2.  Tipo de evento para OnTick(string symbol):                        |
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//|     Nota: el tipo de evento debe corresponder a la                 |
//|                                                                  |
//| 3.  Archivo de inclusión:                                                |
#include <OnTick(string symbol).mqh>
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Función de inicialización del experto                                   |
//| Esta función debe ser declarada, incluso si está vacía.                |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Agrega tu código aquí...
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Función multi tick del experto                                       |
//| Utiliza esta función en lugar de la función estándar OnTick()      |
//+------------------------------------------------------------------+
void OnTick(string symbol)
  {
   //--- Agrega tu código aquí...
   Print("Nuevo evento en el símbolo: ",symbol);
  }
  
//+------------------------------------------------------------------+
//| Función ChartEvent                                              |
//| Esta función debe ser declarada, incluso si está vacía.                |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // id del evento
                  const long& lparam,   // parámetro de evento de tipo largo
                  const double& dparam, // parámetro de evento de tipo doble
                  const string& sparam) // parámetro de evento de tipo string
  {
   //--- Agrega tu código aquí...
  }
  
//+------------------------------------------------------------------+
//| Función de desinicialización del experto                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   //--- Agrega tu código aquí...
  }

//+------------------------------ fin -------------------------------+

Algunas características:

1. Configuraciones

Todas las configuraciones se pueden ajustar utilizando las directivas #define. Para el correcto funcionamiento de la función OnTick(string symbol), solo necesitas especificar dos parámetros: SYMBOLS_TRADING y CHART_EVENT_SYMBOL. El primero (SYMBOLS_TRADING) define la lista de símbolos utilizados para los eventos, y el segundo (CHART_EVENT_SYMBOL) define los tipos de eventos para todos los símbolos.

El SYMBOLS_TRADING contiene la lista de símbolos, por ejemplo:

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

La lista debe estar preparada como cadenas, separadas por comas. La lista termina al final de la línea.

El SYMBOLS_TRADING puede definirse de la siguiente manera:

#define  SYMBOLS_TRADING    "MARKET_WATCH"

Este método significa que se utilizarán todos los símbolos del Market Watch. Puedes modificar la lista de símbolos 'al vuelo'. Solo agrega o quita de Market Watch los símbolos necesarios.

El tipo de evento CHART_EVENT_SYMBOL se define por un flag o combinación de ellos de la enumeración ENUM_CHART_EVENT_SYMBOL. Consulta los detalles aquí (en ruso).

Aquí tienes ejemplos de tipos de eventos:

//--- Ejemplo 1. Evento OnTick:
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//--- Ejemplo 2. NewBar M1 y New Bar H1:
#define  CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M1

2.  Archivo de inclusión.

El #include OnTick(string symbol).mqh es necesario, ya que este archivo contiene la implementación de la función OnTick(string symbol). Proporciona una forma sencilla de usar toda la función OnTick(string symbol). Algunas de las funciones estándar deben ser declaradas en el código del Asesor Experto, incluso si están vacías.

3. Strategy Tester.

Como sabes, en este momento, OnChartEvent no está soportado en el Strategy Tester. Para solucionar este problema, se utilizan variables globales para manejar los eventos. Este método se utiliza solo en el Strategy Tester; en todos los demás casos (en cuentas reales/demo), los eventos se procesan a través de OnChartEvent. 

Aquí está la característica. En el Strategy Tester, OnTick(string symbol) funcionará con los ticks del símbolo especificado en la configuración del Strategy Tester. En otras palabras, funciona como OnTick(), pero también se llama cuando hay nuevos ticks en los símbolos seleccionados. Para trabajar con el Strategy Tester, SYMBOLS_TRADING debe ser especificado como una lista de símbolos.

4. "Espías".

Utiliza los "espías" (agentes-indicadores). El archivo "Spy Control panel MCM.ex5" debe estar ubicado en la carpeta \MQL5\Indicators\.

5. Los archivos del archivo comprimido deben ser extraídos en la carpeta \MQL5. Los archivos necesarios son:

    • /MQL5/Experts/OnTick(string symbol).mq5 - Ejemplo de Asesor Experto, código fuente de la plantilla;
    • /MQL5/Experts/OnTick(string symbol).ex5 - Archivo compilado del Ejemplo de Asesor Experto;
    • /MQL5/Indicators/Spy Control panel MCM.mq5 - Agente-indicador, código fuente;
    • /MQL5/Indicators/Spy Control panel MCM.ex5 - Archivo compilado del Agente-indicador;
    • /MQL5/Include/OnTick(string symbol).mqh - archivo de inclusión con todas las funciones necesarias para implementar la función OnTick(string symbol).

Publicaciones relacionadas

Comentarios (0)