English Русский 中文 Deutsch 日本語 Português
preview
Estrategia comercial con el indicador de mejora de reconocimiento de velas Doji

Estrategia comercial con el indicador de mejora de reconocimiento de velas Doji

MetaTrader 5Probador | 28 julio 2023, 17:30
577 0
ds2
ds2

Introducción

En el artículo"Mejorando el reconocimiento de patrones de velas usando Doji como ejemplo", describimos el concepto de metabarras. En pocas palabras, una metabarra es la combinación convencional de varias barras consecutivas en una gran barra. Resulta similar a una barra de un marco temporal superior, pero no del todo, porque el tamaño de la metabarra no es fijo ("flota" en un rango determinado) y no existe vinculación a una hora determinada de comienzo y finalización de la barra. Por lo tanto, el uso de metabarras nos permite detectar varios patrones de análisis de velas con mayor frecuencia.

En ese artículo se describía la creación del indicador Doji Candlestick con metabarras y se demostraba su funcionamiento.

Ahora intentaremos crear una estrategia comercial que utilice dicho indicador. En principio, como las metabarras permiten detectar patrones de velas con mayor frecuencia, la estrategia podrá realizar más transacciones que con las barras clásicas, y esta es una gran oportunidad para generar más ingresos.


Concepto de estrategia comercial: ¿bastará con el uso de velas?

Tomaremos el indicador Doji con metabarras del artículo anterior. Lamentablemente, no podremos simplemente abrir y cerrar operaciones basándonos en las lecturas de este indicador. El problema aquí no está en el indicador ni en las metabarras: la razón es que el patrón de velas Doji no se ha pensado para usarse como señal comercial independiente.

Después de todo, el patrón Doji supone una señal sobre un posible cambio de tendencia, y esto significa que antes de la vela Doji también deberá haber una tendencia en la dirección correspondiente. Si no hay tendencia, no tendrá sentido hacer una operación según la vela Doji.


Integrando tendencias y metabarras

La realización de esta tarea no es tan difícil como pueda parecer a primera vista. A decir verdad, no es algo en absoluto complicado. La vela Doji es una metabarra, pero la tendencia no tiene por qué darse en metabarras, también puede construirse con barras normales. En el caso de las velas, las proporciones de las desviaciones máximas y mínimas del precio dentro de una barra resultan importantes, y (como descubrimos en el artículo anterior) dependen en gran medida de la anchura de la metabarra (es decir, del número de barras regulares incluidas en ella) y de sus desplazamientos en el tiempo. Pero la línea de tendencia no muestra ninguna relación extrema, simplemente, en sentido figurado, pasa por los valores medios de los precios en un grupo de barras, y para calcular los promedios, no importa realmente en qué partes y de qué tamaño esté dividido previamente este grupo.

En general, construiremos la tendencia con barras regulares.

Lo único que necesitaremos saber es el momento en que finaliza la tendencia, es decir, el número de barra a partir del cual comienza la vela Doji detectada por el indicador. Después de todo, la anchura de esta vela puede variar en un amplio rango (establecido en los ajustes del indicador). Lo mejor sería que las barras que compongan la metabarra de la vela no se consideren parte de una tendencia. La vela Doji es su punto de inversión potencial, y eso significa que ya no es una tendencia antigua, pero tampoco es una tendencia nueva, o es en parte ambas cosas, según como se mire. En general, también puede considerarse un movimiento lateral (flat), ya que su precio de cierre se aproxima al de apertura.

En general, para no introducir posibles errores en las características estadísticas de la tendencia, no incluiremos la metabarra con la vela Doji en el grupo de barras sobre el que se construye la tendencia.

La forma más fácil de saber cuándo empieza una vela Doji es calcular la tendencia en el mismo indicador que construye la vela. Es decir, vamos a perfeccionar el indicador del último artículo para incluir un filtro con el que se mostrarán solo estas velas Doji antes de las cuales se da una tendencia que se corresponde con ellas. Con dicha configuración, este indicador también se hará directamente adecuado para el comercio: podremos comerciar según nuestras señales sin ningún análisis adicional.

Ahora el indicador tiene parámetros de entrada cuyos nombres comienzan con el prefijo "Candle_", estos son los distintos parámetros de la vela. Ahora también tendremos que añadir al código del indicador varios parámetros de entrada de tendencia. Como mínimo, deberán estar presentes los dos parámetros siguientes.

  • Anchura mínima de la tendencia (medida en número de barras):
input int     Trend_WidthMin        = 10;
  • Anchura máxima de la tendencia (medida en número de barras):
input int     Trend_WidthMax        = 50;     

Al detectarse una vela Doji, el indicador analizará el grupo de barras delante de ella sobre la cantidad cuyo rango se ha establecido según estos dos parámetros, y evaluará si existe una tendencia adecuada en estas barras.

En el transcurso del artículo, averiguaremos qué otros parámetros de entrada de tendencia debemos establecer. Mientras tanto, permítanme llamar su atención sobre un matiz pequeño pero técnicamente importante.

Como ahora el indicador necesita analizar un mayor número de barras precedentes para dibujar cualquier señal en el gráfico (porque la anchura de la tendencia se ha añadido a la anchura de la metabarra sobre la que se construye la vela), necesitaremos hacer una pequeña corrección conforme a esto en el código del indicador. En la función OnInit había una línea que calculaba cuántas barras al inicio de la historia de precios deben omitirse, es decir, el indicador no puede calcularse ni dibujarse con estas barras (debido a la insuficiencia de datos históricos):

SkipBars = Candle_WidthMax; 
Dicha línea debería convertirse ahora en esto:
SkipBars = Candle_WidthMax + Trend_WidthMax;

Método adecuado para el cálculo de tendencias

Es posible determinar la presencia de una tendencia usando varios algoritmos. Algunos son más fáciles, y otros más complicados. Para utilizar las velas Doji, creo que resulta importante averiguar no solo si hay una tendencia, sino alguna caracterización de la misma. Esto es más sencillo de mostrar visualmente:

Ejemplos de tendencias antes de la vela Doji.

La figura anterior muestra dos ejemplos de tendencias. En el ejemplo de la izquierda, vemos una vela Doji con una altura comparable e incluso ligeramente superior a cualquier movimiento de precio dentro de la tendencia precedente. En base a ello, podemos hacer la suposición de que dentro de esta vela Doji realmente había algún evento significativo, una colisión de potentes fuerzas opuestas. Una de las fuerzas empujó el precio al alza con una potencia sin precedentes (durante todo el periodo de desarrollo de la tendencia), mientras que la otra no dejó que el precio se mantuviera al alza, devolviéndolo al nivel inicial de apertura de la vela. Es decir, en esta vela podemos ver el momento preciso en que entró en juego el poder de la resistencia al crecimiento de la tendencia. Cabe suponer que la tendencia ya se ha agotado y está a punto de revertirse,

pero en la misma figura del ejemplo de la derecha, podemos ver que la altura de la vela Doji no resulta nada especial en comparación con los movimientos que tuvieron lugar dentro de la tendencia. Esto significa que resulta poco probable que la fuerza que invirtió el precio dentro de esta vela sea suficiente para invertir toda la tendencia. Abrir una operación según una vela Doji semejante puede ser un riesgo poco razonable, por lo que sería bueno dar a nuestra estrategia comercial la capacidad de distinguir de alguna forma entre estas dos situaciones representadas en la figura.

Esto puede lograrse utilizando un método de regresión lineal para determinar la tendencia. No solo obtendremos una señal de tendencia, sino también la fórmula de la línea que pasa por el centro del canal de tendencia:

y = A + B * x

Composición de la fórmula:

x — coordenadas de los puntos del gráfico en el eje horizontal, es decir, en nuestro caso son los números de las barras.

y — coordenadas en el eje vertical, es decir, del precio. Esta fórmula de regresión lineal los calcula para dibujar un punto en el gráfico de precios para cada barra y trazar una línea recta a través de dichos puntos. Esta línea será la línea de tendencia.

B — coeficiente que caracteriza la inclinación de la línea de tendencia. Cuanto mayor sea este coeficiente, más clara y potente será la tendencia. Si el coeficiente es positivo, la línea aumentará de izquierda a derecha, lo cual se corresponde con una tendencia alcista. Un valor negativo del coeficiente se corresponderá con una tendencia bajista.

A — simplemente un coeficiente auxiliar para posicionar la línea de tendencia a la altura deseada del gráfico. No conlleva ninguna carga significativa en términos comerciales.

El algoritmo para calcular la regresión lineal es ampliamente conocido, forma parte de los fundamentos de estadística matemática y se usa en muchos campos aplicados, además del trading. Como resultado del algoritmo, se calcularán los coeficientes A y B antes mencionados.

De forma sucinta, en el código del indicador se verá así (el código completo del indicador está en los anexos). Dentro del ciclo, se acumulan varias cantidades intermedias para todas las barras dentro de la tendencia medida:

      double BarPrice = (open[CurBar] + close[CurBar] + high[CurBar] + low[CurBar])/4;
        
      X = TrendBarNum;
      Y = BarPrice;
      N = TrendBarNum;
      S1 += X;
      S2 += Y;
      S3 += X * Y;
      S4 += X * X;

Tras recoger todas las sumas de las barras de tendencia, se obtienen los coeficientes de la fórmula de regresión:

         B = (N * S3 - S1 * S2) / (N * S4 - S1 * S1);
         A = (S2 - B * S1) / N;

Una vez calculada la fórmula de regresión lineal, analizando el coeficiente B, podremos averiguar si existe una tendencia en este grupo de barras, es decir, si es coherente con la dirección de la vela:

         if ((CandleDir < 0)&&(B < 0)) continue;
         if ((CandleDir > 0)&&(B > 0)) continue;

También resultaría útil evaluar si la tendencia es suficientemente fuerte, es decir, qué inclinación tiene. Una inclinación de tendencia demasiado pequeña puede ser simplemente ruido, un error de flat. Además, los movimientos de precio pequeños pueden generar ingresos demasiado escasos para cubrir las comisiones comerciales. Por ello, añadiremos un parámetro al código del indicador que establecerá la inclinación mínima permitida de la tendencia. Este se medirá en número de puntos por minuto:

input double  Trend_PowerMin        = 0.01;

En el código, este parámetro se convierte a la misma unidad de medida que el coeficiente B de la fórmula de regresión, y luego se comparan:

         if (MathAbs(B) < (Trend_PowerMin*_Point*PeriodSeconds()/60)) continue;

Y ahora lo más importante: por qué hemos utilizado la regresión lineal, en lugar de determinar la presencia de una tendencia de cualquier otra forma.

Como la línea de regresión pasa por el centro del canal de tendencia, ahora podremos calcular la anchura de este mismo canal. La anchura del canal de tendencia supone la mayor dispersión de los precios de las barras respecto a la línea de regresión. Más concretamente, la suma de la mayor desviación alcista y la mayor desviación bajista:

Para calcular la anchura del canal, deberemos recorrer todas las barras de la tendencia, calcular para cada barra el valor de regresión (la "y" de la fórmula de regresión lineal obtenida anteriormente), calcular la diferencia entre este valor y los precios de la barra, y acumular los mayores valores de estas diferencias:

         for (X=1; X<=TrendBarNum; X++)
         {
            int TmpCurBar=CandleStartBar+X;
            Y = A + B*X;
            DH=high[TmpCurBar]-Y;
            DL=low [TmpCurBar]-Y;
            if ((DH > maxDH)||(X==1)) maxDH=DH;
            if ((DL < minDL)||(X==1)) minDL=DL;
         }

Esta misma anchura del canal se puede comparar con la altura de la vela Doji, para concluir si los movimientos en esta vela son lo suficientemente fuertes como para invertir esta tendencia. Para ello, añadiremos al indicador otro parámetro entrada de tendencia que establecerá la proporción máxima permitida entre la anchura del canal y la altura de la vela Doji encontrada:

  input double  Trend_ChanelPowerMax  = 1;

En el código del indicador se calcula del siguiente modo:

         if ((maxDH-minDL) > Trend_ChanelPowerMax*CandleHeight) break; 

El código completo del indicador se encuentra en los anexos al artículo.


Algoritmo final del indicador para la estrategia

Ahora que tenemos el código que detecta la presencia de una tendencia, vamos a incluirlo como filtro, para que en el gráfico del indicador solo se muestren las velas Doji delante de las cuales hay una tendencia que se ajusta a todos los parámetros: dirección, longitud, anchura.

Todo el código relacionado con el cálculo y la evaluación de la aptitud de las características de las tendencias lo formalizaremos en una función aparte en el código de nuestro indicador:

bool DetectTrend(
                 int CandleStartBar,
                 int CandleDir,
                 double CandleHeight,
                 const double& open[],
                 const double& high[],
                 const double& low[],
                 const double& close[]
                )

Esta retornará un valor booleano que indicará si existe o no una tendencia adecuada. Llamaremos a esta función cada vez que se encuentre una vela Doji:

               if (DojiExists)
               {
                  if (DetectTrend(CurBar, CandleDir, CandleHeight, open, high, low, close))
                     break; // hay vela y tendencia, no es necesario expandir la metabarra adicionalmente
                  else
                     DojiExists=false;
               }

El código completo del indicador se encuentra en los anexos al artículo. Comprobaremos su funcionamiento un poco más tarde, junto con el asesor.


Algoritmo del asesor comercial

Así, tenemos un indicador mejorado que buscará velas Doji con metabarras, y el mismo indicador determinará si hay una tendencia antes de la vela. El indicador ahora dibujará una línea en el gráfico solo cuando haya una vela Doji y una tendencia que apunte en la misma dirección que la punta de la vela. En otros casos, el indicador no dibujará nada.

Por lo tanto, las lecturas de un indicador de este tipo ya supondrán una señal completa para un asesor comercial. Si aparece una línea en el indicador, se abrirá una operación. La cuestión sigue siendo cuándo cerrar después la transacción.

Como la señal del indicador en nuestro caso supone una predicción de un posible cambio de tendencia, indicando además su dirección, la operación existente debería cerrarse cuando el indicador muestre una señal opuesta a aquella con la que se ha abierto la operación. Esta será la mejor señal para cerrar una operación, porque en un caso ideal su aparición significará que habiendo entrado en el mercado justo al principio de la tendencia (según la señal anterior), el asesor comercial saldrá justo al final de la tendencia, es decir, extraerá el máximo beneficio posible de esta situación del mercado.

Por cierto, una señal de este tipo no solo servirá para cerrar una transacción: asimismo, se abrirá de inmediato un nueva transacción en el sentido contrario a la anterior, puesto que también utilizamos las señales del indicador para la entrada.

Sin embargo, el precio en el mercado no siempre se moverá siguiendo trayectorias ideales para el tráder. El principio y el final de las tendencias no siempre están claramente marcados. Además, puede pasar mucho tiempo entre el final de una tendencia y el inicio de la siguiente. Este será un periodo de movimientos de precios planos o cortos al alza y a la baja. Nuestro indicador no reaccionará en modo alguno ante tales situaciones, es decir, en este caso no recibiremos una señal suya durante mucho tiempo para cerrar la transacción. Aunque la tendencia inicial ya se habrá agotado y para la estrategia no tendrá sentido permanecer en el mercado.

La forma más sencilla de añadir condiciones de cierre adicionales a cualquier estrategia comercial es establecer niveles de take profit y stop loss a todas las transacciones abiertas. Su valor puede establecerse en los ajustes del asesor experto.

También tendremos que añadir todos los parámetros para el indicador en los ajustes del asesor: rangos de tamaño de vela, rangos de tamaño de tendencia, etc. El propio asesor experto iniciará el indicador (invisible) transmitiéndole los ajustes.

El código completo del asesor comercial figura en los anexos del artículo. No tiene sentido analizar el código en el artículo, ya que el asesor experto en este caso resulta el más simple, típico, como el comercio de muchos otros indicadores. Todo el análisis del mercado es realizado por el indicador, mientras que el asesor experto solo abre y cierra transacciones según las señales preparadas.


Verificación del asesor comercial resultante

Antes de hacer pruebas exhaustivas con la historia, comprobaremos si todo funciona correctamente en rasgos generales. Vamos a ejecutar el asesor experto en el Simulador de Estrategias de MetaTrader 5 con un pequeño pedazo de la historia y a analizar las transacciones mostradas en el gráfico.

Podemos observar que el comportamiento del asesor experto se corresponde con el algoritmo previsto. Aquí tenemos un caso en el que una transacción se ha abierto gracias a una señal correcta del indicador:

El indicador señala una vela Doji que apunta hacia arriba con la metabarra de las dos barras anteriores,
además de la tendencia alcista antes de la vela. Asimismo, el asesor ha abierto una transacción.


Más tarde, dicha transacción se ha cerrado según una señal inversa con la apertura de una nueva operación en la otra dirección:

El indicador ha detectado una vela Doji apuntando hacia abajo con la metabarra de las tres barras anteriores,
captando además la tendencia bajista antes de la vela. El asesor ha cerrado la transacción y ha abierto la opuesta.


Aquí tenemos un caso en el que no se ha dado una señal opuesta del indicador durante mucho tiempo, y la operación se ha cerrado por take profit:

No hay señales en el indicador. La operación abierta por el asesor experto se ha cerrado al alcanzarse el nivel de take profit.


Preparación para la prueba de una estrategia comercial con la historia

El asesor experto resultante tiene una configuración muy flexible. Podremos configurarlo para el comercio con velas Doji basado en metabarras, o bien podemos ajustarlo para comerciar con barras clásicas (individuales). Los parámetros de tendencia antes de la vela también pueden establecerse en valores cero (lo que, de hecho, significará que no se tiene en cuenta la presencia de una tendencia). Todo ello afectará drásticamente al comportamiento del asesor. Incluso podemos considerar convencionalmente estas opciones de configuración como diferentes estrategias comerciales. La optimización mostrará cuáles de estas opciones resultan más eficaces.

En diversa literatura sobre trading se recomienda utilizar los patrones Doji en marcos temporales no inferiores a la hora, de lo contrario el ruido del precio dará muchas señales falsas.

Vamos a elegir el marco temporal H4 y el símbolo EURUSD para la prueba. Para obtener buenas estadísticas con una influencia mínima de la aleatoriedad y el efecto de ajuste, tomaremos un trozo mayor de la historia: 10 años. El Simulador de Estrategias en MetaTrader 5 nos permite dividir el periodo seleccionado en dos mitades: la primera mitad se utilizará para entrenar al asesor experto, mientras que la segunda mitad se utilizará para la prueba automática después del entrenamiento (forward test).



Realizaremos dos sesiones de prueba (y entrenamiento) para descubrir qué funciona mejor: las metabarras o las velas clásicas. Las compararemos según el factor de recuperación, es decir, la relación entre el beneficio obtenido y la reducción. Cuanto mayor sea este parámetro, más rentable resultará la estrategia.

El asesor tiene muchos parámetros que optimizar, así que para acelerar la optimización la realizaremos usando el algoritmo genético en lugar de una iteración completa.


Ajustes para las velas Doji de una sola barra (clásicas)

Marco temporal H4. La anchura de la vela será estrictamente de 1 barra. Los demás ajustes tendrán un amplio margen de optimización:

Parámetro del asesor Inicio
Paso
Parada
Candle_WidthMin 1
Candle_WidthMax 1
Candle_HeightPowerMin 0.2 0.2 2
Candle_BodyPowerMax 0.1 0.1 0.4
Candle_ShadowPowerMax 0.1 0.1 0.4
Trend_WidthMin 1 3 10
Trend_WidthMax 1 4 40
Trend_PowerMin 0 0.2 2
Trend_ChanelPowerMax 0.5 0.2 2
Lots 0.1
TakeProfit 300 300 3000
StopLoss 300 300 3000

Hemos obtenido más de 63 millones de combinaciones de parámetros, pero la optimización genética reducirá el exceso en miles de veces y cabrá en unos minutos de tiempo.


Ajustes para velas Doji con metabarras

Las metabarras pueden tener anchuras variables en un rango ilimitado, lo cual significa que el asesor podría operar con un gran número de velas de diferentes anchuras al mismo tiempo. Sin embargo, para que el experimento resulte más puro, no fijaremos un rango mucho más amplio que en la prueba con las velas de una sola barra. Los marcos temporales estándar disponibles más próximos a H4 son H3 y H6. Con las metabarras, solo capturaremos la distancia entre estos valores. El marco temporal más cercano que lo permite es M30. Al ejecutar el asesor en él, podremos operar con todas las metabarras que tengan una anchura equivalente a cualquiera de las siguientes: H3.5, H4, H4.5, H5, H5.5. Solo uno de estos marcos temporales (H4) está disponible para operar con velas clásicas Doji. Por lo demás, no podríamos comerciar en general si no fuera por las metabarras. Las velas de las metabarras son como un conejo que un mago se saca de una chistera vacía. Solo que en el truco con el conejo es lo suficientemente listo como para volver a ocultar un objeto preexistente, pero las metabarras captan los movimientos de precios adicionales reales (hemos visto esto en un artículo anterior). Ya estamos a punto de descubrir si estos movimientos pueden convertirse en ingresos extra reales.

Todos los demás ajustes del asesor experto los tomaremos exactamente de la misma forma que en la prueba de la variante de una barra. Solo tenemos que escalarlos, dado que el marco temporal M30 es 8 veces más pequeño que H4, todos los parámetros de entrada del asesor experto medidos en barras deberán multiplicarse por 8.

Los parámetros que se distinguen de la prueba con una barra aparecen en negrita.

Marco temporal M30 (pero debido a las metabarras se simula como si fuera H4 y sus alrededores).

Parámetro del asesor Inicio
Paso
Parada
Candle_WidthMin 7
Candle_WidthMax 11
Candle_HeightPowerMin 0.2 0.2 2
Candle_BodyPowerMax 0.1 0.1 0.4
Candle_ShadowPowerMax 0.1 0.1 0.4
Trend_WidthMin 8 24 80
Trend_WidthMax 8 32 320
Trend_PowerMin 0 0.2 2
Trend_ChanelPowerMax 0.5 0.2 2
Lots 0.1
TakeProfit 300 300 3000
StopLoss 300 300 3000


Resultados de las pruebas de la estrategia comercial con la historia

En el proceso de optimización del asesor experto con 5 años de historia, el simulador de estrategias ha iterado unas 5 mil variantes de configuración y ha construido un gráfico que muestra el resultado obtenido por el asesor experto en cada una de las variantes. Podemos poner estos gráficos del asesor de una barra y del asesor con metabarras uno junto al otro, alineándolos según la escala vertical (factor de recuperación):


Todos los resultados de la optimización de los asesores expertos con una barra (izquierda) y con metabarras (derecha)


Podemos ver en estos gráficos que con las metabarras el asesor generalmente logra mejores resultados.

Pero esto es solo una conclusión provisional, muy aproximada. Ahora exportaremos los resultados de la optimización a un programa externo (por ejemplo, Excel) para realizar un análisis más detallado. Si calculamos cuántas operaciones ha realizado el asesor experto con diferentes variantes de configuración, la dispersión será la siguiente:

Tipo de vela Número de transacciones
(en una pasada del asesor por la historia de entrenamiento)
Mínimo Media Máximo
Barra única
0
54
1472
Metabarras
0
82
3796

Para esta muestra, solo podemos juzgar con fiabilidad que las metabarras permiten realmente más transacciones,

pero es demasiado pronto para juzgar la rentabilidad. Después de todo, tenemos un gran número de configuraciones en la muestra en las que el asesor ha hecho muy pocas operaciones, solo unas pocas o incluso una... Así pues, sea cual sea la eficacia que logre el asesor, no podemos fiarnos de ese resultado, pues podría haber sido una mera casualidad.

Para sacar conclusiones estadísticamente fiables, deberemos dejar en la muestra solo las variantes de ajustes en las que el asesor experto haya hecho muchas operaciones. Vamos a aplicar a la muestra el siguiente filtro mínimo razonable:

  • número de operaciones >= 120 (durante 5 años son 2 operaciones al mes)

Después de eso, de unas 5000 opciones de configuración, solo han quedado unas 600 para el asesor con una barra y unas 900 para el asesor con metabarras (ya que realiza más operaciones de media). Vamos a utilizarlas para construir un único gráfico para comparar las etapas de entrenamiento del asesor experto con una barra y del asesor experto con metabarras:

Resultados de optimización mínimamente fiables


El gráfico muestra que, a lo largo de todo el periodo de estudio, el asesor con una sola barra ha obtenido un resultado ligeramente mejor de media (como podemos ver en las líneas de regresión). No obstante, el asesor con metabarras tiene una mayor dispersión de resultados, tanto hacia mayores pérdidas como hacia mayores beneficios. La explicación a esto puede encontrarse en que se han realizado más operaciones con metabarras, y esto ha funcionado como una especie de amplificador: los asesores expertos no rentables han multiplicado las pérdidas (porque han realizado más operaciones no rentables), mientras que los rentables han multiplicado los beneficios.

Por lo tanto, precisamente el asesor con metabarras ha logrado los resultados más rentables. El gráfico muestra que solo él ha sido capaz de alcanzar un factor de recuperación superior a 6, y en más de una ocasión.

Veamos ahora cómo se comportan los asesores con las mejores opciones de configuración durante los próximos 5 años de historia en las pruebas forward. El último gráfico muestra que, por término medio (línea de regresión), los resultados del entrenamiento han alcanzado un valor igual a 2. Así que tomaremos todo lo que esté por encima de esa media como valores positivos. Después aplicaremos un filtro adicional a la muestra que aparece en el gráfico anterior:

  • factor de recuperación >= 2 (en una historia de 5 años con una reducción del 50%, esto se correspondería con una rentabilidad anualizada del 20%).

El tamaño de la muestra se ha reducido a unos 200 valores, tanto para el asesor con una barra como para el asesor con metabarras. Para todos los ajustes de esta muestra, hallaremos los resultados obtenidos en la prueba forward y los representaremos en un gráfico:


Prueba forward de los mejores ajustes obtenidos durante la optimización


El gráfico de pruebas forward muestra que el asesor experto con metabarras ha sido capaz de mantener su liderazgo: domina entre los mejores resultados. Es más, ahora también tiene una media ligeramente mejor que la puntuación del asesor con una barra.

Entonces, ¿cuántas operaciones han realizado todos los asesores de este gráfico? Calculemos:

Tipo de vela Número de transacciones
(para una pasada del asesor por la historia hacia delante)
Mínimo Media Máximo
Barra única
121
231
543
Metabarras
122
352
1173

Podemos ver que los asesores expertos han sido tan activos en la prueba forward como lo fueron en la etapa de entrenamiento: el número mínimo de operaciones ha coincidido aproximadamente con el valor del filtro que aplicamos anteriormente. Los asesores con metabarras han sido los que más operaciones han efectuado.

Como recordatorio, ese era el propósito de la investigación de este artículo: determinar si las metabarras nos permiten realizar más operaciones (no solo encontrar más velas) y si eso aumenta nuestros ingresos. Podemos responder afirmativamente a ambas preguntas.

Como estudio complementario, podemos evaluar la eficacia de la estrategia comercial con velas Doji en su conjunto. Bueno, el gráfico de la prueba forward ya ha respondido a eso: los resultados de todas las estrategias en él son mucho peores de lo que eran en la fase de entrenamiento. Por lo tanto, una negociación realmente eficaz requerirá la creación de un sistema comercial más avanzado y/o una selección más cuidadosa de los ajustes, marcos temporales, parejas de divisas y rangos históricos óptimos. Como bonus, publicaremos algunas de las variantes más singulares de la configuración del asesor experto que han mostrado buenos resultados en el anterior gráfico de prueba forward:

Timeframe H4 M30
Parámetros de entrada
Candle_WidthMin 1 7
Candle_WidthMax 1 11
Candle_HeightPowerMin 0.4 2 1.8 1.6
Candle_BodyPowerMax 0.2 0.1 0.2 0.2
Candle_ShadowPowerMax 0.1 0.4 0.4 0.3
Trend_WidthMin 1 80 80 80
Trend_WidthMax 13 296 296 168
Trend_PowerMin 1.6 0 0 0
Trend_ChanelPowerMax 1.5 1.9 1.7 1.9
Lots 0.1
TakeProfit 900 300 300 300
StopLoss 300 3000 1200 3000


Conclusión

De forma experimental, hemos podido demostrar que el uso de velas basadas en metabarras en lugar de las velas clásicas (de una barra) permite a la estrategia comercial realizar un número significativamente mayor de transacciones.

Las metabarras deben usarse con precaución, ya que una estrategia perdedora será aún menos rentable si se realizan más operaciones. Sin embargo, una estrategia rentable puede llegar a ser todavía más rentable.

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

Archivos adjuntos |
MQL5.zip (5.39 KB)
Ejemplo de un conjunto de modelos ONNX en MQL5 Ejemplo de un conjunto de modelos ONNX en MQL5
ONNX (Open Neural Network eXchange) es un estándar abierto para representar redes neuronales. En este artículo, le mostraremos la posibilidad de usar dos modelos ONNX simultáneamente en un asesor experto.
Redes neuronales: así de sencillo (Parte 37): Atención dispersa (Sparse Attention) Redes neuronales: así de sencillo (Parte 37): Atención dispersa (Sparse Attention)
En el artículo anterior, analizamos los modelos relacionales que utilizan mecanismos de atención en su arquitectura. Una de las características de dichos modelos es su mayor uso de recursos informáticos. Este artículo propondrá uno de los posibles mecanismos para reducir el número de operaciones computacionales dentro del bloque Self-Attention o de auto-atención, lo cual aumentará el rendimiento del modelo en su conjunto.
Multibot en MetaTrader: iniciamos múltiples robots desde un gráfico Multibot en MetaTrader: iniciamos múltiples robots desde un gráfico
En este artículo, veremos una plantilla simple para crear un robot MetaTrader universal que se pueda usar en varios gráficos, pero adjunto a uno solo, sin necesidad de configurar cada ejemplar del robot en cada gráfico individual.
Implementando el factor Janus en MQL5 Implementando el factor Janus en MQL5
Gary Anderson desarrolló un método de análisis de mercado basado en una teoría que denominó el factor Janus. La teoría describe un conjunto de indicadores que se pueden usar para identificar tendencias y evaluar el riesgo de mercado. En este artículo, implementaremos dichas herramientas en MQL5.