Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
![Asesores Expertos](https://c.mql5.com/i/code/expert.png)
Visualización de optimización de resultados en tiempo real - Asesor Experto para MetaTrader 5
- Visualizaciones:
- 1515
- Ranking:
- Publicado:
- 2014.01.10 13:49
- 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
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:- FrameGenerator.mqh - CFrameGenerator clase para mostrar los resultados de la optimización;
- SpecialChart.mqh - CSpecialChart clase para dibujar varios gráficos del balance;
- SimpleTable.mqh - CSimpleTable esta clase es una sencilla tabla con dos columnas;
- 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
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:
Fig. 2. Configuración de la prueba Moving Averages_With_Frames.mq5
Opciones de optimización:
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
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. 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](https://c.mql5.com/i/code/expert.png)
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](https://c.mql5.com/i/code/indicator.png)
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()](https://c.mql5.com/i/code/expert.png)
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](https://c.mql5.com/i/code/library.png)
Librería de funciones matemáticas ALGLIB (v. 3.19) transportado a MQL5.