English Русский 中文 Deutsch 日本語 Português
Indicadores de prueba de asesores expertos no de trading

Indicadores de prueba de asesores expertos no de trading

MetaTrader 4Ejemplos | 13 abril 2016, 12:48
483 0
Sergey Kravchuk
Sergey Kravchuk

Introducción

Todos los indicadores pueden dividirse en dos grupos: indicadores estáticos, cuya visualización, una vez mostrada, siempre es la misma en el historial y no cambia con nuevas cotizaciones entrantes, y los indicadores dinámicos, que visualizan su estado en el momento actual solo y se redibujan completamente cuando llega un nuevo precio. La eficiencia de un indicador estático es directamente visible en el gráfico. Pero ¿cómo podemos comprobar si un indicador dinámico funciona correctamente? Esta es la pregunta a la que está dedicado el artículo.

La inmensa mayoría de indicadores usados en el análisis técnico son estáticos. Tomemos MACD como ejemplo. La llegada de una nueva cotización, en el mejor de los casos, solo genera la visualización del último periodo o, para ser más exactos, su etapa final. No obstante, su gráfico sigue siendo "impenetrable" en el historial. Para comprobar si un indicador estático funciona o no sería suficiente con investigar sus indicaciones en los datos históricos. Si hay varios indicadores disponibles y queremos elegir el más óptimo para nuestro trading, tampoco hay ningún problema: Tan solo adjuntamos todos los indicadores al gráfico y luego seleccionamos uno que genere indicaciones "más correctas".

En el caso de los indicadores dinámicos, la situación se hace más compleja e incluso casi "imposible". Casi todos los indicadores de canal pueden usarse como ejemplo de tales indicadores. Por lo general, estos indicadores dibujan una o más líneas que visualizan el rango de los movimientos de los precios. Estas líneas se construyen para el momento actual, por supuesto. De este modo, la llegada de nuevos precios que se diferencian en gran medida de los recientes puede cambiar la disposición de las líneas en el gráfico por una absolutamente distinta en cuestión de segundos. Es imposible estimar si el indicador funciona correctamente en todas las configuraciones posibles del precio juzgando solo el último punto del precio actual. Puede ver que su indicador funciona correctamente durante varias horas y considerar que funciona bien. No obstante, justo cuando decidimos comenzar el trading, puede producirse una situación en el mercado en la que funcione incorrectamente (a continuación se muestra un ejemplo de canales móviles de Barishpolets construidos incorrectamente por uno de los indicadores) y podemos abrir nuestra transacción en una dirección adversa. El propio indicador "corregirá" sus indicaciones en solo un par de barras. Pero esto ya será demasiado tarde para nosotros, ya que nuestra posición será perdedora.



Probando los indicadores en el probador

La finalidad principal del probador de estrategias es probar los asesores expertos. Como algunos asesores expertos usan indicadores en sus operaciones, el probador debe también ser capaz de probarlos. Usaremos esta característica.

Un asesor experto puede probarse de dos modos: estándar y visual. En el modo estándar, el probador procesa todos los comandos del asesor experto en el procesamiento de su historial y se detiene para dar los resultados finales tan pronto como no hay datos históricos disponibles del par de divisas a prueba. En el modo visual, además de lo anterior, el probador dibuja además cada barra/tick del gráfico emulando el funcionamiento del mercado en el modo de tiempo real. En el probador, podemos acelerar, ralentizar o incluso parar el tiempo, lo que nos será de gran ayuda al probar los indicadores.



Asesor experto de captura de pantalla no de trading

No obstante, antes de comenzar a probar indicadores, tendremos que elaborar un asesor experto bastante inusual. Para nuestro propósito, este asesor experto no debe operar. Sus operaciones no deben impedirnos probar los indicadores y, lo que es más importante, el depósito perdido previamente debido a los errores del trading no debe parar la prueba de nuestro indicador. Por tanto, crearemos un asesor experto que no haga nada.

Su única función será realizar una captura de pantalla del estado actual del trading. Serán muy útiles cuando comencemos a analizar las operaciones del indicador paso a paso. Este es el código del asesor experto:


//+-----------------------------------------------------------------------------+
//|                                                         IndicatorTester.mq4 |
//|                                      Copyright © 2006-2008, Sergey Kravchuk |
//|                                                    http://forextools.com.ua |
//+-----------------------------------------------------------------------------+
 
#property copyright "Copyright © 2006-2008, Sergey Kravchuk. http://forextools.com.ua"
#property link      "http://forextools.com.ua"
 
//+-----------------------------------------------------------------------------+
 
extern datetime ScreenShotStart=0; // date and time of the first screenshotting
extern int ScreenShotMax=100;      // how many screenshots should be made
extern int ScreenShotStep=0;       // screenshotting step: <=0-not applicable, N-on each Nth bar
extern string FilesPrefix="_";     // prefix for screenshot filenames
 
//+-----------------------------------------------------------------------------+
 
datetime   NextScreenShot=0;       // date and time for making the next screenshot
double ScreenShotCnt=0;            // prepare a screenshot counter
double ScreenShotCur=0.001;        // number of the initial screenshot
string FileName;                   // filename to save the next screenshot
 
//+-----------------------------------------------------------------------------+
//| expert start function                                                       |
//+-----------------------------------------------------------------------------+
 
int start()
{
  if(ScreenShotStep>0                       // is it necessary to make screenshots?      
    && ScreenShotStart<=Time[0]             // is it time for screenshotting?
    && NextScreenShot<=Time[0]              // is it time to make the next screenshot?
    && ScreenShotCur*1000<=ScreenShotMax+1) // have all screenshots not been made?
  {
    // compose the filename and save the screenshot under it
    FileName=FilesPrefix+StringSubstr(DoubleToStr(ScreenShotCur,3),2)+".gif";   
    WindowScreenShot(FileName,800,600);
   
    // give a prompt
    Comment("Saved file "+FileName+
    "\nThere are "+DoubleToStr((ScreenShotMax-ScreenShotCur*1000),0) +" pcs. left");
   
    // shift the data and the counter to the next screenshot
    ScreenShotCur+=0.001;
    NextScreenShot=Time[0]+ScreenShotStep*Period()*60;   
  }
 
  if(ScreenShotCur*1000>ScreenShotMax+1) Comment("All screenshots are saved");
 
  return(0);
}
//+-----------------------------------------------------------------------------+

El algoritmo de captura de pantalla es bastante simple: Esperamos hasta que llegue el momento, a partir del cual queremos comenzar a realizar series de capturas de pantalla (ScreenShotStart) y luego pasamos a las capturas de pantalla de ScreenShotMax en cada barra ScreenShotStep. Cada captura de pantalla se guarda en un archivo cuyo nombre comienza con el prefijo preestablecido, FilesPrefix, añadiendo al nombre el número de la captura de pantalla.

Para formar un número con ceros delante (esto es necesario para el orden correcto de las capturas de pantalla para que _1.gif no sea seguida inmediatamente por _10.gif, teniendo en cuenta _2.gif ), usamos un método de numeración algo inusual. Los números comienzan por ScreenShotCur=0.001; y luego siguen con un paso de 0.001 (ScreenShotCur+=0.001;). El propio número se obtiene al modificar un número decimal y convertirlo en una cadena de caracteres a partir de la cual se selecciona como número un substring, comenzando con el tercer carácter. De este modo, cortamos el "0." inicial y obtenemos los ceros de delante antes de los dígitos del número. Este método nos permite acumular hasta mil capturas de pantalla, que es más que suficiente para nuestro análisis. No obstante, si no es suficiente para nosotros, aumentamos la "granulosidad" del número inicial y el del paso hasta 0.0001. Luego podremos acumular hasta 10.000 capturas de pantalla.



Entrar en la prueba

Ahora, una vez que tenemos todo listo y el asesor experto ha sido compilado sin errores, vamos a comenzar con la prueba. Lanzamos el probador usando el menú de View/Tester o la combinación de teclas Ctrl+R. En el campo "Expert Advisor" seleccionamos nuestro asesor experto, IndicatorTester. Luego seleccionamos un símbolo y un periodo para la prueba. Si es necesario, podemos seleccionar el rango de la prueba marcando el campo "Use date" e indicando las fechas "From" y "To". Para activar el modo de prueba visual, marcamos el campo "Visual mode". Ahora podemos pulsar el botón "Expert properties" e indicar todas las entradas necesarias para la captura de pantalla.

Bueno, ya está casi todo. Pulsamos el botón "Start" e, inmediatamente después de esto, el botón "||" situado a la derecha del botón deslizando de ajuste de la velocidad de visualización. El asesor experto detendrá su prueba. Ahora podemos adjuntar al gráfico el indicador a probar y, una vez que hayamos soltado el botón "||", seguimos probando el asesor experto. Como recordaremos, el asesor experto no realiza ninguna transacción. Pero el probador no lo sabe y procesa las cotizaciones minuciosamente, tick tras tick, barra tras barra. Como solo uno o varios indicadores se adjuntan al gráfico, el probador tiene que recalcularlos y redibujarlos, ya que un asesor experto usaría seguramente los datos obtenidos de estos indicadores.

Esto es todo. Ahora, como algunos programadores escriben en sus cuadros emergentes, "nos sentamos y observamos" cómo funciona nuestro indicador. Podemos pausar la prueba (pulsando el botón "||") en cualquier momento o podemos aumentar o disminuir su velocidad. Tan pronto como el probador llegue a la fecha/hora preestablecida por nosotros en ScreenShotStart, comenzará a realizar capturas de pantalla con la frecuencia preestablecida y guardará dichas capturas en el directorio c:\Program Files\MetaTrader 4\tester\files. Si no necesitamos ninguna captura de pantalla y solo queremos ver cómo funciona nuestro indicador, establecemos el parámetro ScreenShotStep del asesor experto igual o inferior a cero antes de pulsar el botón "Start", luego quedará deshabilitada la captura de pantalla.



Ejemplo de uso

Primero realicé esta tarea para mí mismo cuando quería encontrar el indicador de los canales móviles de Barishpolets "más correctos" para mi investigación. En la descripción sobre cómo crear los canales, hay algunos puntos que puede originar una creación incorrecta de un canal. En primer lugar, esto está relacionado con la situación en la que dos extremos, a través de los cuales debe dibujarse una de las líneas del canal, están situados próximos entre sí. En tales casos, algunos indicadores comienzan a "lanzar" el canal desde 45 grados hacia abajo hasta 45 grados hacia arriba y luego hacia atrás, desde arriba hacia abajo, bueno, todo ese jazz. Por desgracia, los desarrolladores de indicadores, confiando implícitamente en la autoridad de Barishpolets, solo ponen en práctica sus reglas de memoria (debe indicarse que las reglas funcionan correctamente, en la inmensa mayoría de los casos). No obstante, olvidan que el mercado puede traernos todo tipo de sorpresas. En tales casos, el "top" del indicador comienza a "desaparecer" y los indicadores se convierten en la razón de las pérdidas en lugar de ser una herramienta útil para obtener beneficios.

Para comparar distintos métodos de creación de canales móviles de Barishpolets, escribí mi propio indicador que crea canales, también, pero "más objetivamente", mediante la línea de movimiento del precio media. Es muy similar a cómo lo hace la herramienta estándar Equidistant Channel, pero los bordes del canal son creados por un algoritmo algo distinto (puede encontrar más información en mi sitio web Método de los dos canales - en ruso). Ahora, veamos cómo se comporta uno de los indicadores de los canales móviles de Barishpolets (SHI_Channel_true) situado en la Base de código en comparación con el canal de precio medio "correcto". Las líneas del indicador a prueba se dibujan en verde, las líneas del canal largo (semanal) desde el indicador de dos canales son naranjas y aquellas del canal corto (33 horas) son azul claro. Estas se hacen rojas en el momento en que se acercan a los bordes del canal.

Bueno, así es, pero vamos a observar de cerca algunas de las capturas de pantalla.

Para el periodo desde el 4 al 7 de diciembre de 2007 (EURUSD M30) podemos ver cuántas veces "da la vuelta" el indicador de los canales móviles de Barishpolets y vuelve a la línea del movimiento del precio medio.

Es posible que aquí se rompa un canal (el canal no se dibuja correctamente y el precio alcanza el borde del canal semanal de hecho). Puede ver cómo se comporta el indicador. El canal da la vuelta en la siguiente barra y prácticamente coincide con el canal semanal:

Esto ocurrió porque se ha formado un nuevo extremo y el indicador lo estaba procesando. No obstante, solo pasan algunas barras, y de nuevo da la vuelta, volviendo a su posición incorrecta.


Eso ocurrió porque una nueva cotización convirtió el punto extremo en un punto interno normal y el indicador procesó de nuevo ese cambio. En la siguiente barra se produce una nueva vuelta:

Dos o tres barras más y una vuelta de nuevo:

En este gráfico, podemos ver otro "extremo" de creación de canales móviles de Barishpolets, dos nuevos extremos establecen uno de los bordes del canal, aunque puede verse una imagen bastante obvia en este gráfico: el precio en el canal corto de 33 horas está de camino hacia los bordes del canal semanal, desde el que retornará probablemente y vendrá de vuelta hacia el canal semanal. De hecho, ocurre de esta forma, vemos nuestra imagen "prevista" en el día siguiente:

De este modo, usando nuestro asesor experto de captura de pantalla no de trading, podemos dar un veredicto razonable sobre el indicador SHI_Channel_true: Es una herramienta muy "esquiva". Tuve mis dudas sobre si confiarle mi depósito sin una adaptación seria (esta fue una de las razones por las que creé los métodos de dos canales).



Conclusión

El campo de aplicación del código analizado no está limitado a la prueba de indicadores. Puede insertar el mismo mecanismo en un asesor experto de trading. En este caso, podrá "sellar" el código depurado y acumular el historial del comportamiento de su asesor experto y los indicadores que trabajan con este asesor experto para analizar los resultados del trading del asesor experto para los indicadores usados en el cálculo de las señales del asesor experto. Esto puede acelerar la depuración de un asesor experto que realizar el trading en una cuenta real.

Una importante característica del método de prueba de los indicadores propuestos es la posibilidad de hacer capturas de pantalla. Muchos visores de imágenes (por ejemplo, el gratuito IrfanView) puede visualizar los archivos en el modo de página. Al pulsar PageDown, vamos a la siguiente captura de pantalla de la misma forma que cuando vamos a la siguiente barra en el probador. Lo que no podemos hacer en el probador, pero sí que podemos hacerlo fácilmente en IrfanView es ir a la barra anterior. Solo pulsamos PageUP, y "retrocederemos en las páginas del historial". Pulsamos una vez más y profundizaremos aún más en el historial. Esto nos permite ver el comportamiento de los indicadores y estudiarlos, descubriendo las razones por las que funcionan de forma incorrecta.

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

Archivos adjuntos |
El análisis estadístico de los movimientos del mercado y su pronóstico El análisis estadístico de los movimientos del mercado y su pronóstico
El presente artículo contempla las amplias posibilidades del método estadístico en el marketing. Por desgracia, los traders principiantes fracasan deliberadamente a la hora de aplicar la formidable ciencia de la estadística. Mientras tanto, es lo único que usan de forma inconscientemente cuando analizan el mercado. Además, la estadística puede dar respuesta a muchas preguntas.
Integración del terminal de cliente de MetaTrader 4 con MS SQL Server Integración del terminal de cliente de MetaTrader 4 con MS SQL Server
El artículo proporciona un ejemplo de integración del terminal de cliente de MetaTrader 4 con MS SQL Server usando una dll. Se adjuntan los códigos fuente en C++ y en MQL4 y un proyecto listo para usar y compilado de Visual C++ 6.0 SP5.
Notas de aficionado: ZigZag Notas de aficionado: ZigZag
Seguramente, un iluso que pensara operar cerca de los extremos visitaría cada aprendiz de trader cuando es viera una polilínea "enigmática" por primera vez. Es tan simple, ciertamente. Este es el máximo. Y este es el mínimo. Una bonita imagen en el historial. ¿Y qué ocurre en la práctica? Se dibuja un rayo. Parecerá que este es el pico. Es el momento de vender. Y ahora vamos hacia abajo. Pero, demonios, no es así. El precio se mueve traicioneramente hacia abajo. ¡Sooo! Es una nimiedad, no un indicador. Y nos deshacemos de él.
El espectáculo debe continuar, o una vez más sobre el ZigZag El espectáculo debe continuar, o una vez más sobre el ZigZag
Sobre un método obvio pero todavía no estándar de composición ZigZag y cuál es el resultado: el indicador ZigZag fractal multimarco que representa los ZigZag en tres conexiones más grandes en un único periodo de tiempo de funcionamiento. A su vez, esos periodos de tiempo mayores pueden no ser estándar tampoco y variar desde M5 a MN1.