Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

"MCM Control Panel" para Asesores Expertos e Indicadores Multidivisa - Asesor Experto para MetaTrader 5

Visualizaciones:
3599
Ranking:
(41)
Publicado:
2014.01.14 14:44
Actualizado:
2016.11.22 07:33
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Uno de las ventajas del lenguaje MQL5 es la posibilidad de utilizar indicadores y Asesores Expertos multidivisa. Vea Gestor multidivisa de eventos OnTickMarketWatch en CodeBase de MQL5.

Para utilizar dicho concepto, el script propuesto no es adecuado. Por ejemplo, si ocurren muchos eventos, es posible el desbordamiento de la cola de eventos.

Aquí tenemos lo que dice la Documentación de MQL5:

El terminal cliente añade los eventos nuevos a la cola de eventos. Por tanto los eventos son procesados uno tras otro por orden de llegada. Hay una excepción para el evento NewTick event. Si la cola ya tiene un evento de ese tipo o si dicho evento está en proceso, el nuevo evento NewTick no es añadido a la cola.

La cola de eventos tiene un tamaño limitado. Cuando ocurre un desbordamiento de la cola, los eventos más antiguos son eliminados sin ser procesados para permitir la recepción de los nuevos eventos. Por tanto, se recomienda escribir de manera eficiente los gestores de eventos, y no se recomienda utilizar cilos infinitos (la excepción son los scripts que solo gestionan el evento Start).

Además, a veces es necesario realizar los cálculos de los valores de un indicador solo cuando comienza una barra nueva. Otro caso es cuando necesita deshabilitar "al vuelo" la operación sobre un símbolo del Asesor Experto multidivisa, para cambiar el periodo o cualquier otro motivo.

Ese otro motivo pueden ser datos externos. El Panel de Control MCM (MultiCurrency Mode) está basado en esta idea.

Por otra parte, puede ser utilizado para trabajar con una única divisa.

Caracterísitcas del "Panel de control MCM" (versión de concurso):

Tiene el mímimo de funciones, necesarias para utilizar Asesores Expertos e Indicadores multidivisa:

  • Agregar/Eliminar símbolos para trading y análisis.
  • Permite monitorizar los eventos "tick nuevo" y "barra nueva" para cualquier símbolo y periodo.
  • Todos las configuraciones pueden modificarse "sobre la marcha" sin necesidad de reiniciar el Asesor Experto o el Indicador. 
  • El panel puede ser utilizado con nuestros Asesores Expertos e Indicadores.
  • También puede ser incluido en su código, se cargará conjuntamente con el mismo.
  • Es transparente. No necesita agregar el código del Panel de Control MCM a sus Asesores Expertos o Indicadores.

Al usar el "Panel de Control MCM" puede agregar las nuevas capacidades que desee. Vea los detalles más adelante.

Esta versión no implementa la capacidad de guardar/recuperar la configuración del Panel de Contol.


Lanzamiento del Panel de Control MCM

Es posible lanzar el "Panel de Control MCM" de varias formas: 

  • Adjunte "iControl Panel MCM" al gráfico.
  • Ejecute el script "scControl panel MCM". El script carga el indicador "iControl panel MCM".
  • Cargue el Panel desde su Asesor Experto o Indicador. Vea "exControl panel MCM" para más detalles.

En el tercer caso el Panel será cargado con nuestro Asesor Experto o Indicador y adjuntado al gráfico.

Vuestro Asesor Experto debe implementar el gestor de eventos OnChartEvent() para procesar los eventos del Panel de Control MCM.

Interfaz

La interfaz de usuario es sencilla, se ha implementado como un menú. El tamaño y los colores del menú pueden configurarse mediante los parámetros de entrada.

Presenta el siguiente aspecto:


 

Diseño

El Panel se utiliza para configurar los eventos para Asesores Expertos e Indicadores multidivisa.

El tamaño y la posición del Panel depende del tamaño del grafico y del texto (definidos en los parámetros de entrada). Para amuentar el espacio de trabajo, el Panel puede ser minimizado.


 

El tamaño del Panel puede modificarse a mediante el parámetro de entrada Font size (por defecto Font size=10):

 

Puede establecer los colores que desee.

Por ejemplo, el esquema Rosa:


El esquema EMO:


 

 

Facilidad de uso

El menú es intuitivo, fácil de utilizar.

El botón del "Panel de Control MCM" contiene carácterísticas adicionales (no incluidas en esta versión):


Mediante el botón "Chart" es posible modificar con facilidad el símobolo y periodo actuales, simplemente selecciónelos:


 

"Events" le permite habilitar/desabilitar eventos "al vuelo" (sin reiniciar el Asesor Experto o Indicador) para algun símoblo y specificar el evento requerido. Dichos eventos pueden ser procesados dentro de la función OnChartEvent() del Asesor Experto o Indicador. El menú de símbolos contiene únicamente los símbolos, seleccionados desde "Observación del Mercado". Puede combinar cualquier evento, todos ellos serán procesados.

Por ejemplo, no es necesario preocuparse por la aparición de un nuevo tick o barra para los símbolos y periodos, el motor del Panel enviará los eventos:


  

Aquí tenemos la "Ayuda":


 

Know How y su Implementación

Mi solución está publicada en Gestor de eventos de tick Multidivisa OnTickMarketWatch, pero este Panel tiene características adicionales:

  • El "Panel de Control MCM" ofrece una interfaz, que no está implementada directamente en el terminal cliente. Permite utilizar el modo multidivisa mediante el gestor de eventos OnChartEvent(). Otra característica es la posibilidad de modificar la configuración "al vuelo".
  • Para generar los enventos para el gestor OnChartEvent() el Panel de Control MCM utiliza sus propios "agentes" (indicadores, lanzados por el Panel de Control MCM sobre los símbolos), que generan los eventos necesarios para la operativa multidivisa.
  • El Panel puede ser incluido en Asesores Expertos o Indicadores.
  • El Panel de Control MCM ofrece posibilidades nuevas a los desarrolladores en MQL5.
  • En mi humilde opinión, el Panel es un ejemplo de una nueva estructura para Asesores Expertos e Indicadores. Mas tarde, entregaré algunos ejemplos.

Información sobre eventos y alertas

El Panel tiene una barra de estado para mostrar los eventos.


Instalación del Panel de Control MCM

Descomprima el archivo mcm_control_panel.zip en la carpeta del terminal cliente. Después de ello aparecerán los siguientes archivos:

  • /mql5/experts/exControl panel MCM.mq5 - ejamplo de un Asesor Experto;
  • /mql5/scripts/scControl panel MCM.mq5  - ejamplo de un Script;
  • /mql5/indicators/iControl panel MCM.mq5 - indicador, el motor principal del "Panel de Control MCM";
  • /mql5/indicators/Spy Control panel MCM.mq5 - indicador, agente del "Panel de Control MCM"
  • /mql5/include/Control panel MCM.mqh - conjunto de clases y funciones utilizadas en el "Panel de Control MCM".

A continuación, compile los Indicadores, el Script y el Asesor Experto.


Ejecute el Panel de Control MCM

La ejecución del Panel de Control MCM adjunta el indicador iControl panel MCM.mq5 a cualquier gráfico.

El Panel puede cargarse desde un Asesor Experto, simplemente agrege el Asesor Experto "exControl panel MCM" al gráfico:


 

Como ejemplo de operativa multidivisa, he escrito el Asesor Experto MultiTrend. El indicador dibuja la tendencia del USD, basada en el análisis de 4 pares de divisas:

Aquí está el código:

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                            Copyright 2010, Lizar | 
//|                            https://www.mql5.com/ru/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "Este Asesor Experto usa el panel de Control MCM"
input color bg_color=Gray;        // Color del menú 
input color font_color=Gainsboro; // Color del texto 
input color select_color=Yellow// Color del texto seleccionado 
input int font_size=10;          // Tamaño de letra 
#include <Control panel MCM.mqh> //<--- Archivo include 
//+------------------------------------------------------------------+ 
//| Función de inicialización del experto                            | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- Inicialización del Panel de Control MCM.     
//--- No es necesario especificar los colores, en dicho caso se utilzarán colores establecidos por defecto.      
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---    
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Función de deinitialización del experto                          | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- Deinicialización del Panel de Control MCM  
  }
//+-----------------------------------------------------------------------+ 
//| Gestor de eventos OnChartEvent.                                      | 
//| Ver la documentación de MQL5 para los detalles.                                  | 
//| Puede utilizarse con el Panel de Control MCM en trading multidivisa    | 
//+------------------------------------------------------------------------+ 
void OnChartEvent(const int id, // event identifier:                                      
                  // if id-CHARTEVENT_CUSTOM==0 - evento de initialización (cuando prev_calculated==0)
                  // if id-CHARTEVENT_CUSTOM!=0 - índice del símbolo en "Observación del Mercado"   
                  const long&   lparam, // period 
                  const double& dparam, // precio    
                  const string& sparam  // símbolo 
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                         ":  ",sparam," ",EventDescription(lparam)," price=",dparam);
     }
  }
//+------------------------------------------------------------------+ 

Parámetros de OnChartEvent() .

El Panel de Control genera eventos personalizados. Dichos eventos pueden ser procesados por un Asesor Experto o Indicador mediante el gestor de eventos OnChartEvent().

Parámetros de entrada:

  • id - id del evento:
          if id-CHARTEVENT_CUSTOM !=0 - es iguasl al índice del símbolo en "Observación del Mercado";
  • lparam  -  bandera del evento. Vea la enumeración ENUM_CHART_EVENT_SYMBOL en Control panel MCM.mqh.
  • dparam -  precio del tick o precio de apertura de la nueva barra en un periodo determinado.
  • sparam -  nombre del símbolo

Lista de eventos, soportados por el Panel de Control MCM

Usando el parámetro lparam, el Panel de Control puede enviar hasta eventos personalizados 64 diferentes para un símbolo. En esta versión están soportados los siguientes eventos : 

  • Evento "Inicialización" (Initialization);
  • Evento "Tick nuevo" (tick);
  • Evento "Barra nueva" en gráfico M1 (M1);
  • Evento "Barra nueva" en gráfico M2 (M2);
  • Evento "Barra nueva" en gráfico M3 (M3);
  • Evento "Barra nueva" en gráfico M4 (M4);
  • Evento "Barra nueva" en gráfico M5 (M5);
  • Evento "Barra nueva" en gráfico M6 (M6);
  • Evento "Barra nueva" en gráfico M10 (M10);
  • Evento "Barra nueva" en gráfico M12 (M12);
  • Evento "Barra nueva" en gráfico M15 (M15);
  • Evento "Barra nueva" en gráfico M20 (M20);
  • Evento "Barra nueva" en gráfic M30 (M30);
  • Evento "Barra nueva" en gráfico H1 (H1);
  • Evento "Barra nueva" en gráfico H2 (H2);
  • Evento "Barra nueva" en gráfico H3 (H3);
  • Evento "Barra nueva" en gráfico H4 (H4);
  • Evento "Barra nueva" en gráfico H6 (H6);
  • Evento "Barra nueva" en gráfico H8 (H8);
  • Evento "Barra nueva" en gráfico H12 (H12);
  • Evento "Barra nueva" en gráfico diario (D1);
  • Evento "Barra nueva" en gráfico semanal (W1);
  • Evento "Barra nueva" en gráfico mensual (MN1); 

La descripcion del evento, devuelta en EventDescription() se muestra entre paréntesis (Initialization, tick, Mxx etc). La función EventDescription está definida en Control panel MCM.mqh (a continuación de la enumeración ENUM_CHART_EVENT_SYMBOL).

El evento "Initialización" generado cuando prev_calculated=0, puede utilizarse para preparar los datos, por ejemplo si se recalculan los valores del indicador.


Estableciendo Eventos

Para establecer los eventos deseados, haga click en el botón "Events", seleccione el símbolo y el tipo de evento. Los eventos seleccionados se muestran en amarillo (o el color indicado en el parámetro de entrada Selected color del indicador). Es posible selccionar más de un evento, todos serán procesados por nuestro Asesor Experto multidivisa. Para aplicar los cambios haga click en el botón "Enable/Disable events".

Este proceso se repite para todos los símbolos necesarios.


 

Aquí vemos el registro de la pestaña "Expertos": 


 

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/215

FAT PANEL FAT PANEL

Panel diseñado para el Concurso "Mejor Panel Gráfico en MQL5". Este panel gráfico permite automatizar el trading manual. Tiene numerosas funciones, incluyendo la construcción visual de estrategias de trading.

Indicador Multimoneda iUSDx (índice USD) Indicador Multimoneda iUSDx (índice USD)

El indicador iUSDx utiliza el "Panel de Control MCM" para el modo multimoneda. Calcula el índice USD.

Historico del TRADE Historico del TRADE

El script permite colocar el histórico de operaciones en la tabla usando los objetos gráficos.

eInTradePanel eInTradePanel

eInTradePanel es un panel para el trading manual, tiene algunas funciones útiles. Utiliza un espacio mínimo en el gráfico.