Descargar MetaTrader 5

Técnica (Optimización) de Prueba y algunos criterios para la selección de los parámetros del Asesor Experto

18 agosto 2015, 09:03
Rider
0
658


Introducción

Al parecer no es ningún gran secreto que la selección de parámetros adecuados no es un poquito menos importante que la selección de operaciones tácticas y la creación de un EA. Prueba de ello puede encontrarse en los debates sobre el tema en numerosos foros relacionado de alguna manera al trading automatizado. Y mientras que la automatización de las transacciones parece ser absolutamente clara y transparente, no viene a través de cualquier algoritmo automatizado algo utilizable para el proceso de optimización de resultados en una cadena lógica completa.

Y tenemos que admitir que el proceso es muy difícil y requere mucho tiempo así que merecen un esfuerzo, al menos, en automatizar todas las operaciones al máximo y reducirlo a un único algoritmo. Este enfoque y el método se exponen a continuación en este artículo.


Concepto

Trabajos. Análisis y proyección de los parámetros del EA recibidos durante la optimización que sabemos que no efectivos con operacions reales. Máximo aprovechamiento de las capacidades de rendimiento del Terminal y la automatización de las operaciones manuales.

Todo el proceso consta de varias etapas. Dicha división no tiene tanto que ver con la complejidad de la implementación de un algoritmo automático continuo, como con la incapacidad de que al inicio, en la etapa de optimización, definir los requisitos necesarios (tolerancias y filtros) en los parámetros del sistema. Y por lo general, no es necesario.

En mi opinión, las decisiones estratégicas que toma una máquinaa no es "la mejor idea". Y la selección de parámetros (los grupos de parámetros) es la estrategia. Cálculo, trading, hacer nuestra vida más fácil - estas son sus funciones pero el trader debe seguir siendo quien decida sobre las normas de funcionamiento del hardware.

Cada etapa las transiciones entre las etapas han sido automatizadas al máximo, tanto como fue posible.


Etapa 1. Optimization. Variante estándar con ajustes de usuario opcional.

Una vez más, esto no es un secreto pero no se puede obviar.
La genética es a todas luces una cosa útil pero dentro de unos límites razonables. La verdad es que este algoritmo le puede jugar una mala pasada - cuando se encontra un conjunto de parámetros que considera rentables, a partir de ahí y hasta el final funcionará "alrededor de él" el proceso de optimización entero. Creo que se entiende a lo que puede conducir. La mayoría de variantes realmente buenas que quedarán fuera con otra manera de trabajar más allá del área de optimización y no se registrarán en la tabla de «Resultados de la optimización».

Hay algunas maneras de salir de esta situación. Una manera drástica es no utilizar el algoritmo genético para la optimización. Esto sin embargo no es siempre conveniente, por una razón u otra. Estas son medidas a medias, pero algo es algo:

- ejecutar la optimización no sólo una vez sino dos veces o incluso más veces. La primera vez, dice, por «Equilibrio» y la próxima vez por "Máximo Drawdown" o por otros parámetros. La ventana de "Parámetros de optimización" en la pestaña de "Pruebas" de las propiedades de Asesor Experto proporcionada para tal selección. Luego, combine las tablas recibidas de los resultados y trabajar con una tabla combinada.

- para maximizar, reducir el número de combinaciones de parámetros.

Aún existe otro matiz a tenerse en cuenta al implementar la optimización. Alguien lo puede encontrar útil.

Uno puede establecer diversos límites en la pestaña "Optimización" de las propiedades del EA y me gustaría decir unas palabras acerca de uno de ellos - "Máximo Drawdown". Cuando se utiliza este parámetro, tenga en cuenta que se trata de una cotización de balance drawdown en %. ¿Qué debe tenerse en cuenta aquí? Si, por ejemplo, se establece un límite de 10% y tenemos un saldo inicial de 10000, luego sobre el proceso de optimización cuando el saldo llegue a por lo menos 15000, los 1000 iniciales se convertirán en 1500 - claramente, estas son cifras diferentes. Y el depósito inicial (¿que puede garantizar que tal reducción no ocurrirá en los inicios del trade?) reacciona de manera diferente a ellos. Si uno fija un depósito inicial de 1000000 y un 0,1% de límite, estos mil permanecerán sobre mil.


Etapa 2. Trabajar con «Resultados de la Optimización». Todos los resultados son copiados en Excel y procesados allí. Habrá muchos conjuntos y deberían reducirse. El "corte" se puede realizar en cualquier columna del informe - depende del trader.


Etapa 3. Pruebas. Seleccionamos una parte del historial para probar y ejecutar una prueba automática del grupo de los conjuntos que "lo hizo a través de" la proyección anterior de la etapa. Señalar: una prueba de grupo. En esta etapa no es necesario considerar por separado cada prueba individual, se trata de obtener los resultados de la prueba de todos los restantes sistemas a la vez. El Terminal realmente implementará la misma optimización pero utilizará los parámetros de un archivo creado previamente.

Similar a la etapa 2, todos los resultados recibidos se copian en la misma tabla Excel que contiene los resultados de la optimización.


Etapa 4. Análisis y proyección.

Obviamente, las pruebas negativas son despiadadamente descartadas (líneas borradas). La pregunta es ¿cómo evaluar las restantes?

Muchos de ustedes deben haber notado que la percepción visual de la tabla de balance permanece igual y a veces resulta una idea aún mejor las características del sistema en lugar de las cifras en el informe. Como regla general, si la curva se ve "bien", las cifras en el informe son también "buenas", per si no obstante carece de una tendencia de crecimiento continua, entonces ninguna figura puede ser lo bastante convincente de que es 'buena'.

El problema es que hay bastantes variantes restantes y es muy difícil comprobarlos por separado con el fin de analizar el informe y echar un vistazo a la tabla de cada uno de ellos... Sin embargo, Si uno se pone terco, entonces...

Para evitar este problema y reducir más el número de conjuntos, hice a un criterio de "relación" aplicable para comparar las áreas. Se comparan tres valores: Beneficio por día, Número de Deals por día y Máximo Drawdown, respectivamente, en la optimización y zonas de prueba. Si son más o menos, dentro de un cierto límite tolerable, consistentes entre sí, el conjunto sigue sigue trabajando, si no son - se excluyen del análisis posterior. Además, bajo ciertas condiciones, concretamente - si pruebas las áreas que no son muy largas, las tres por encima de cietos valores, en cierta medida, pueden producir una idea de una curva de balance "suave".

Las etapas 3 y 4 pueden y deben repetirse varias veces en diferentes partes del historial, en primer lugar, con el fin de verificar la fiabilidad de los resultados seleccionados y en segundo lugar, para reducirlo al máximo en número. Las restantes variantes 3-5 serán suficientes para la elección final informada.

La Terminación de las etapas 3 y 4 incluye la generación de archivos de configuración de los restantes conjuntos, la aplicación de pruebas individuales en cualquier parte de la historia, la comparación entre ellas, selecciones, etc.

Básicamente, esto es una cuestión de calificación, gustos y preferencias de cada trader y está fuera del alcance de este artículo.


Técnica

Aquí no hay nada difícil ni alucinante, todo lo que se necesita es atención y precisión. Vamos a comenzar.

1. Configuración del equipo - Panel de Control/Regional y Opciones de Lenguaje/ Opciones de Región/Ruso - Personalizar/Números/Símbolo Decimal - en lugar de una "coma" debe seleccionar un "punto" - Esto se hace para la reflexión de datos precisos sobre la copia de los resultados de optimización (prueba) del Terminal en una tabla Excel;

- Debe tener Microsoft Office (Excel) instalado en su ordenador - versión 2000 o superior.

- Las macros deben estar habilitadas en la configuración de seguridad del Excel y el móduloAnalise.bas (adjuntado al artículo) debe ser importado. La revisión del módulo y su estructura no se proporciona en este artículo ya que para los usuarios normales no hay necesidad de cambiar o editar cualquier cosa en él, y los usuarios "no ordinarios" podrán, si lo desea, descubrirlo por sí mismos.

2. Preparación del Asesor Experto

Un ejemplo del EA preparado está disponible en el archivo adjunto.

Al principio del código debe insertarse lo siguiente antes de los parámetros externos:

// Parámetros de prueba y optimización
extern int          VarOptimTest    = 0;       // 0 - optimización estándar (funcionamiento normal del EA)
                                                                     // 1 - prueba de funcionamiento de las configuraciones seleccionadas         
                                                                     // 2 - generación de archivos de configuración
extern int          Counter              = 1;       // contador    
extern string       nameEA          = "MA";  // Nombre del EA


Estas variables controlan los modos de prueba y optimización.

init() la función debería verse como sigue:

int init() 
{
   // BLOQUE DE LA FUNCIÓN DE LLAMADADE OPTIMIZACIÓN Y PRUEBA
   if(IsOptimization() && VarOptimTest !=0)
      {
      if (VarOptimTest == 1 && Counter !=0) _ReadParametrs();
      if (VarOptimTest == 2 && Counter !=0)
         {_ReadParametrs(); _WriteSet();}
      }   
...........
...........
return (0);
} 


Las dos funciones que se llamarán desde aquí aseguran la automatización de todo el proceso.

Se agrega la siguiente línea a start() function:

int start() 
{
   if(IsOptimization() && VarOptimTest ==2) return(0);
..........

1. Parámetro de función de lectura para leer un archivo Excel creado tras el análisis de los resultados de optimización (prueba) de la lectura.

La parte variable de la función está en negrita. Es necesario siguir la misma estructura y sintaxis con precisión y cuidado, listar todos los parámetros de entrada del EA excepto los tres primeros que son responsables de la optimización y pruebas tales como los tipos de variables bool- ystring-, en su caso.

void  _ReadParametrs()
{
   string FileName="test.csv";
   int handle=FileOpen(FileName,FILE_READ||FILE_CSV);//,''); 
   if(handle<1) return(0);
   FileSeek(handle,0,SEEK_SET);
   int str = StrToInteger(FileReadString(handle)); 
   int data = StrToInteger(FileReadString(handle)); 
   if (data < Counter) 
      {
      Alert("Número incorrecto de entradas de ejecuciones de prueba. Lo siento");
      return(0);
      }
   for (int y=1; y <=Counter; y++)
      {
      for (int x=1; x <= str; x++)
         {
         string s = FileReadString(handle); 
         string ds = FileReadString(handle); 
         if (y != Counter) continue;
         s=StringTrimLeft(s);s=StringTrimRight(s);
         ds = StringTrimLeft(ds);ds=StringTrimRight(ds);
         double d = StrToDouble(ds);

         if (s == "Lots"){Lots=d;continue;}
         if (s == "MaximumRisk"){MaximumRisk=d;continue;}
         if (s == "DecreaseFactor"){DecreaseFactor=d;continue;}
         if (s == "MovingPeriod"){MovingPeriod=d;continue;}
         if (s == "MovingShift"){MovingShift=d;continue;}
         
         }
      }
   FileClose(handle);
  return(0);
}


2. Set-función de generación y escritura del archivo. Su estructura debe reflejar la estructura de archivo de configuración del EA. La parte variable de la función está en negrita.

void  _WriteSet ()
{
   string FileName=nameEA+"_"+Symbol()+Period()+"_"+Counter+".set";
   int handle=FileOpen(FileName,FILE_WRITE|FILE_CSV);
   if(handle<1) return(0);

   FileWrite(handle,"VarOptimTest="+0);
   FileWrite(handle,"VarOptimTest,F="+0);
   FileWrite(handle,"VarOptimTest,1="+0);
   FileWrite(handle,"VarOptimTest,2="+0);
   FileWrite(handle,"VarOptimTest,3="+0);
   
   FileWrite(handle,"Counter="+0);
   FileWrite(handle,"Counter,F="+0);
   FileWrite(handle,"Counter,1="+1);
   FileWrite(handle,"Counter,2="+1);
   FileWrite(handle,"Counter,3="+100);

   FileWrite(handle,"nameEA="+nameEA+"_"+Symbol()+Period()+"_"+Counter);

   FileWrite(handle,"Lots="+Lots);
   FileWrite(handle,"Lots,F="+0);
   FileWrite(handle,"Lots,1="+0.00000000);
   FileWrite(handle,"Lots,2="+0.00000000);
   FileWrite(handle,"Lots,3="+0.00000000);
   
   .................................
   
   FileWrite(handle,"MovingShift="+MovingShift);
   FileWrite(handle,"MovingShift,F="+1);
   FileWrite(handle,"MovingShift,1="+2);
   FileWrite(handle,"MovingShift,2="+1);
   FileWrite(handle,"MovingShift,3="+4);
   
   FileClose(handle);
return(0);
}

3. Proceso

¡ATENCIÓN! Recomendamos enérgicamente duplicar la hoja de cálculo o el libro entero antes de realizar cualquier operación. La ejecución de macros en Excel es una operación irreversible y en caso de error los resultados de la optimización se pueden perder, lo que significa pérdida de tiempo. No pasa nada guardamos los resulatados provisionalmente de vez en cuando.

3.1. Optimización

Hay suficiente información dedicada a las peculiaridades de la optimización, ahora vamos a ver cómo se puede hacer. La optimización y prueba de los parámetros en las propiedades del EA se deben establecer como se muestra en la captura de pantalla:


Fig.1 Propiedades del Asesor Experto, Pestaña "Parámetros de Entrada". Parámetros de Pruebas y Optimización


3.2. Análisis de resultados optimizados y mostrado de parámetros iniciales.

Para compñetar la optimización, los resultados deben copiarse en el portapapeles:


Fig.2 Copia de los resultados de la optimización

Inicie Excel y pegar los datos copiados en una hoja nueva.

Después de copiar debe ejecutar la macro Optim_1 . Si todo se ha hecho correctamente, la hoja de cálculo será similar a esta:


Fig.3 Ejecutar la Macro del Excel

Cuando se ejecuta la macro, usted necesitará ingresar el número de días en el período de optimización en el cuadro de diálogo. Esto es necesario para el cálculo de los criterios adicionales.


Fig.4 Cuadro para Ingresar el Número de Días

Como se puede ver, no hay nombres de columnas en la tabla resultante. Esto se hace por una razón. En primer lugar, que hace más fácil evitar errores al introducir el número de parámetros (se requiere más adelante), en segundo lugar, no se necesitan especialmente. Todo es familiar aquí excepto dos columnas - azule y verde. De izquierda a derecha: Número de paso, beneficio, Ganancia por Día, Total de Deals, Deals Diarios, Factor de beneficio, Recompensa esperada, Drawdown en $, Drawdown en %.

Cuando la tabla contiene sólo los parámetros seleccionados del trabajo posterior (es decir, se han eliminado las filas no deseadas), pasamos al siguiente paso.

Con el fin de facilitar su clasificación hay todo un grupo de macros en el módulo que permiten ordenar por columnas individuales. Asignar teclas de acceso rápido y...


3.3. Guardar los parámetros en un archivo

Debe ejecutar la macro "Write" y escriba la ruta donde se guardará el archivo con los parámetros (... terminal\tester\files\) en el cuadro de diálogo emergente

Fig.5 cuadro de diálogo para guardar el archivo de parámetros

La ventana "Nombre de archivo" tendrá el nombre predefinido de "test", por favor, no lo cambie a menos que sea absolutamente necesario, pero si lo haces, tienes que hacer lo mismo en las funciones que se han añadido a su Asesor Experto.

Una vez completada esta operación, el archivo "test.csv" aparecerá (o se sobrescribirá se existía antes) en el directorio especificado.

Atención, esto es importante. Después de crear el archivo no cambie las posiciones de fila en la tabla, de lo contrario los resultados de la prueba ya no se enlazarán a los parámetros utilizados en la prueba.


3.4. Prueba

Configuración del Asesor Experto:




Fig.6-8 Configuración del Asesor Experto para la imnplementación de la prueba del grupo

Las explicaciones, supongo, si son absolutamente necesarias, son de menor importancia: No establecer límites, algoritmo genético deshabilitado, variable contador configurada desde 1 a N, donde N es el número de filas restantes de la tabla, optimización permitida por este parámetro solamente.

Otra configuración:


Fig.9 Configuración de la Pestaña "Resultados de Optimización"

Ahora si se han configurado el periodo de prueba y otros parámetros esenciales de la optimización, puede hacer clic en el botón "Inicio" y ejecutar el Probador de Estrategias en el modo de "Optimización".

Una vez acabada la prueba, que puede llevar bastante tiempo especialmente en la primera ejecución cuando la tabla es aún grande, podemos proceder al siguiente paso.


3.5. Trabajo con los Resultados de la Prueba

En primer lugar, la tabla Excel debe estar preparada para la nueva entrada de datos y para ello ejecutamos la macro "Optim_2" por lo que aparecerán las columnas vacias en el lado izquierdo de la tabla. Los resultados recibidos deben ordenarse por el número de paso y en orden ascendente:


Fig. 10 Clasificación de los Resultados de la Prueba

Los resultados deberán copiarse después (como en el paso 2) y pegarlos en una nueva hoja seguida de Excel copiando las primeras 7 columnas y pegando de la misma manera en el área previamente preparada en la hoja de cálculo de nuestra tabla.

Ahora ejecute una secuencia de macros "Optim_3" y l"Optim_4". Si todo se ha hecho correctamente, la tabla tendrá la estructura siguiente:


11 Estructura de la Tabla Después de Guardar y Procesando la Optimización y los Resultados de las Pruebas

Ya hemos discutido que las columnas L-T, y las columnas D K son similares a las columnas М-T pero sus datos se refieren a la zona de pruebas.
Pero antes de proceder a las primeras tres columnas, al parecer se debe explicar por qué se introdujeron criterios tales como "Beneficio por día" y "Ofertas por día".

La optimización y períodos de pruebas pueden variar en longitud. En este caso surge una pregunta razonable: ¿Cómo deberíamos comparar los resultados? Estos dos parámetros están diseñados para resolver este problema al menos en parte y facilitar el proceso de comparar los resultados.

Así, las columnas: А = N/E (ganancias por ratio del día), B = P/G (Deals por ratio del día), С = S/J (Ratio Drawdown).

Como puede verse, los valores de estas columnas están representados actualmente por 1 - variante ideal existente sólo cuando el área de prueba en el historial coincide con el área de optimización. Esto no es un descuido sino una acción deliberada para demostrar una de las formas de comprobar si el EA ha sido preparado correctamente. Semejantemente, uno puede comprobar la corrección de la creación de los archivos de sistema.

Por lo tanto, todo está listo para el análisis. Toda la información está disponible. Todo está en manos del trader, él es el que conoce todas las características secretas de su EA y puede establecer límites tolerables necesarios a la gama de resultados para los parámetros de la pantalla.

Otgra cosa. La tabla se ha reducido aún más pero ésta es aún insuficiente. Nada nos impide ejecutar otra prueba
Eliminar columnas A-k y retroceder al paso 3.

Después de la implementación de pruebas 3-4 tenemos la tabla que consta delas filas de 3-5-8. Esto es suficiente para que tirando.


3.6. Generación de los archivos de configuración.

Alguien podría decir que no son necesarios y la configuración de parámetros 5-8 pueden ser procesados manualmente. No importa - haganlo si lo desea. Pero para mi yo prefiero hacer este trabajo de rutina con una máquina. Todo lo que necesitamos es ejecutar l macro "Write" y una última vez ejecutar el probador de estrategias en el modo de "Optimización" con los siguientes valor

es de EA:


Fig.12 Configuración del Asesor Experto para la generación de los archivos de configuración

Las configuraciones son casi idénticas a las utilizadas en el modo de prueba, la única diferencia es el valor de una variable y el valor final del contador.

Al finalizar el proceso de optimización el Asesor Experto generará los archivos de conmfiguración en el directorio tester\files. La última figura en el nombre es el número de la fila de nuestra tabla.


Fig.13 Generar los archivos de Configuración

Pueden ser manejados como Archivos de Configuración estándard del Asesor Experto.

De hecho, ahora se ha agotado el tema del artículo.


Conclusión

La información anterior no pretende ser un descubrimiento en la zona denominada convencionalmente "Teoría de la Optimización"... Se trata de una orientación puramente práctica, ni más ni menos... Probablemente esto está claro pero me sigue pareciendo necesario mencionarlo
Todo lo que aquí se describe es sólo una herramienta diseñada para facilitar al máximo el trabajo del trader. Nadie jamás daría una garantía del 100% de que la curva de balance que está en el borde derecho del gráfico se viera tan "buena" como en la parte visible de la tabla.

Y una cosa más. No dejes que la abundancia de palabras y fotos le ahuyenten. De hecho, todo es muy sencillo y después de que se ha llevado a cabo dicha optimización un par de veces, aprendes a hacerlo automáticamente.

Tengo la sensación de que alguien puede tener una idea sobre cómo hacer más eficaz la optimización y las ventanas prueba... ¿Qué pasa si :)

Le deseo buena suerte y ganancias.

P.S. Nunca pensé que utilizaría tantas palabras en describir algunas docenas de manipulaciones de "ratón". :)

Traducción del ruso hecha por MetaQuotes Software Corp.
Artículo original: https://www.mql5.com/ru/articles/1347

Archivos adjuntos |
Analise.zip (2.2 KB)
Pronóstico One-Step-Ahead de la econometría EURUSD Pronóstico One-Step-Ahead de la econometría EURUSD

El artículo se centra en la previsión de step-ahead para EURUSD utilizando software EViews y una evaluación adicional de la predicción de resultados en los programas de EViews. La previsión consiste en modelos de regresión y se evalúa por medio de un Asesor Experto para MetaTrader 4.

Uso práctico del servidor privado virtual (VPS) para el autotrading Uso práctico del servidor privado virtual (VPS) para el autotrading

Autotrading usando VPS. Este artículo va dirigido excepcionalmente a los autotraders y seguidores del autotrading.

La Regla de Oro de los Traders La Regla de Oro de los Traders

Con el fin de obtener ganancias basadas en altas expectativas, debemos entender tres principios básicos del buen trading: 1) conocer el riesgo al entrar en el mercado; 2) cortar sus pérdidas temprano y deje ejecutar su beneficio; 3) conocer la expectativa de su sistema – probar y ajustar regularmente. Este artículo proporciona un código programa que arrastra posiciones abiertas y se actualiza con el segundo principio de oro, ya que permite ganancias en el más alto nivel posible.

Sobre los Métodos de Análisis Técnico y Pronósticos de Mercado Sobre los Métodos de Análisis Técnico y Pronósticos de Mercado

El artículo muestra las capacidades y el potencial de un método matemático bien conocido juntado con el pensamiento visual y una perspectiva del mercado "fuera de caja". Por un lado, sirve para atraer la atención de un público más amplio ya que puede hacer que las mentes creativas reconsideren el paradigma del traqading como tal. Y por otro lado, puede dar lugar a desarrollos alternativos i implementaciones de código de programa con respecto a una amplia gama de herramientas para el análisis y predicción.