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

Visualización de optimización de resultados en tiempo real - Asesor Experto para MetaTrader 5

Visualizaciones:
1437
Ranking:
(48)
Publicado:
2014.01.10 13:49
Actualizado:
2016.11.22 07:33
\MQL5\Include\
specialchart.mqh (7.71 KB) ver
simpletable.mqh (10.78 KB) ver
framegenerator.mqh (15.08 KB) ver
\MQL5\Scripts\
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

MetaTrader 5 Strategy Tester permite obtener los parámetros estadísticos de un sistema de comercio después de cada pase de pruebas.

Los parámetros estadísticos pueden obtenerse utilizando la función TesterStatistics(), funciones denominadas interiormente OnTester() y OnDeinit().

Con la introducción de funciones para trabajar con los resultados de optimización (FrameFirst(), FrameFilter(), FrameNext(), FrameInputs() y FrameAdd()), los traders ahora son capaces de realizar una optimización visual. Los datos necesarios pueden ahora ser procesados y mostrados a la derecha durante una optimización del Asesor Experto o en la resolución de problemas matemáticos.

Tendremos en cuenta los detalles del ejemplo de la visualización de resultados de pruebas de un Asesor Experto durante la optimización descritos en el artículo "Visualiza una estrategia en el MetaTrader 5 Tester".


1. Visualización de la dinámica del balance durante la optimización

1.1. Descargando Archivos

Moving Averages_With_Frames.mq5 El Asesor Experto se debe copiar en terminal_data_folder\MQL5\Experts.

Los siguientes archivos se utilizan para la operación del Asesor Experto:
  1. FrameGenerator.mqh - CFrameGenerator clase para mostrar los resultados de la optimización;
  2. SpecialChart.mqh - CSpecialChart clase para dibujar varios gráficos del balance;
  3. SimpleTable.mqh - CSimpleTable esta clase es una sencilla tabla con dos columnas;
  4. ColorProgressBar.mqh - CСolorProgressBar esta clase es una barra de progreso utilizando dos colores.

Deben copiarse en terminal_data_folder\MQL5\Include.

Los programas de code base se pueden descargar de forma automática vía MetaTrader 5 terminal (Pestaña CodeBase de la ventana de la "Caja de la herramientas"). Para ello, seleccione "Descargar". Todos los códigos se descargarán y se colocarán en sus carpetas.

Fig. 1. Descarga de programas CodeBase a través del terminal MetaTrader 5

Fig. 1. Descarga de programas CodeBase a través del terminal MetaTrader 5


1.2. Probando el Asesor el Experto

Moving Averages_With_Frames.mq5 El Asesor Experto debería ponerse en marcha en el Strategy Tester.

Configuración de la prueba:

Configuración de la prueba Moving Averages_With_Frames.mq5

Fig. 2. Configuración de la prueba Moving Averages_With_Frames.mq5

Opciones de optimización:

Parámetros de optimización Moving Averages_With_Frames.mq5

Fig. 3. Configuración de la prueba Moving Averages_With_Frames.mq5


Durante la optimización el Asesor Experto muestra la dinámica del balance y el paso de optimización de datos estadísticos:

Fig. 4. Optimización Moving Averages_With_Frames.mq5

Fig. 4. Optimización Moving Averages_With_Frames.mq5

Proceso de optimización:


1.3. Principio de funcionamiento del Asesor Experto

El Asesor Experto Moving Averages_With_Frames.mq5 se crea sobre la base de Moving Averages.mq5 incluido en el paquete estándar del terminal MetaTrader 5 (MQL5\Experts\Examples\Moving Average).

El siguiente código se ha añadido para la visualización de los resultados:
//--- conectando el código para trabajar con los resultados de la optimización
#include <FrameGenerator.mqh>
//--- generador de marcos
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Functión Tester                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- inserte su criterio de calculo de optimization aquí
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- invocando después de cada prueba y presentando el criterio de optimización como un parámetro
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| Función TesterInit                                               |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- preparación de la tabla para mostrar varias líneas de balance
   fg.OnTesterInit(3); // parámetro que establece el número de líneas de balance en la tabla
  }
//+------------------------------------------------------------------+
//| Función TesterPass                                               |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- controlador de los resultados de las pruebas obtenidas y la visualización de los gráficos
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| Función TesterDeinit                                             |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- final de la optimización
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  Manejo de los eventos del grafico                               |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- lanzamiento de fotogramas que se muestran después del final de la optimización al hacer clic en el encabezado
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 es una pausa en ms entre los disparos
  }
//+------------------------------------------------------------------+

Este código se puede utilizar de manera similar en cualquier Asesor Experto.

la clase CFrameGenerator es utilizada para trabajar con los resultados de la optimización. La clase contiene los métodos para el manejo de los eventos del Strategy Tester (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) y el método para los eventos del gráfico (OnChartEvent()). Los objetos gráficos utilizados son preparados en OnTesterInit() método de la clase CFrameGenerator.

OnTester() el método de la clase CFrameGenerator se invoca en un agente de prueba después de cada paso de la prueba. Este método proporciona cálculo de la dinámica de la curva del balance basado en los resultados comerciales. Gráfico de la curva del balance es una array unidimensional, cuya longitud depende del número de transacciones realizadas.

Entonces, la función TesterStatistics() se utiliza para solicitar datos estadísticos (beneficio neto, el factor de ganancia, el factor de recuperación, número de operaciones, número de transacciones, máximo de fondos del porcentaje del drawdown , el valor de los criterios de la optimización personalizada) y un marco (en nuestro caso, array de los datos de los pasos de prueba) que se generan, y que se envían al terminal (desde el agente de pruebas) utilizando la función FrameAdd().

Marcos que se reciben y se manejan en el método OnTesterPass()de la clase CFrameGenerator. Marcos de operación de lectura llevado a cabo por la función FrameNext(). La solicitud de los parámetros de entrada del Asesor Experto, para lo cual se ha generado el marco, es realizado utilizando la función FrameInputs().

Una vez obtenidos los datos, se muestra y se actualiza utilizando los métodos de las clases CSimpleTable, CColorProgressBar y CSpecialChart.

Cabe señalar que las funciones de manejo de la ejecución OnTester() se llevan a cabo en el agente de prueba después de que el paso actual de optimización ha terminado. Esto permite el uso de MQL5 Cloud Network capacidades de red distribuidas para realizar cálculos matemáticos complejos. Para ello, coloque la parte de cálculo del controlador de eventos en OnTester.

El ejemplo del uso de la optimización para acelerar los cálculos matemáticos (transformación de onda continua de la función Weierstrass) se muestra en el tema "Gestión de los procesos de optimización en tiempo real y la transferencia de datos masivos de los agentes de MetaTrader 5".


2. Ejemplos de trabajo con las clases CSimpleTable, CColorProgressBar y CSpecialChart

Los scripts adjuntos Test_SimpleTable.mq5 y Test_CSpecialChart.mq5 incluyen ejemplos de trabajo con las clases CSimpleTable, CColorProgressBar y CSpecialChart. Deben copiarse en terminal_data_folder\MQL5\Scripts.

Fig. 5. Resultado de la operación del script Test_SimpleTable.mq5

Fig. 5. Resultado de la operación del script Test_SimpleTable.mq5

Fig. 6. Resultado de la operación del script Test_CSpecialChart.mq5

Fig. 6. Resultado de la operación del script Test_CSpecialChart.mq5


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

EA_OBJPROP_CHART_ID EA_OBJPROP_CHART_ID

Este Asesor Experto es una demostración de cómo trabajar con objetos OBJ_CHART como gráficos convencionales. Puede configurar los ajustes de color personalizados, adjuntar indicadores etc.

DRAW_COLOR_CANDLES DRAW_COLOR_CANDLES

El estilo DRAW_COLOR_CANDLES (al igual que DRAW_CANDLES) dibuja velas sobre la base de valores de cuatro buffers del indicador, que contienen Apertura, Alto, Bajo y los precios de Cierre. En las adiciones puede especificar el color para cada vela de un conjunto dado.

Ejemplo de uso del IndicatorParameters() Ejemplo de uso del IndicatorParameters()

Este Asesor Experto ilustra el uso de la función IndicatorParameters() para obtener la información sobre el número de parámetros de entrada, su tipo y los valores.

ALGLIB - Biblioteca de análisis numérico ALGLIB - Biblioteca de análisis numérico

Librería de funciones matemáticas ALGLIB (v. 3.19) transportado a MQL5.