Discusión sobre el artículo "Aproximación por fuerza bruta a la búsqueda de patrones (Parte VI): Optimización cíclica"

 

Artículo publicado Aproximación por fuerza bruta a la búsqueda de patrones (Parte VI): Optimización cíclica:

En este artículo mostraremos la primera parte de las mejoras que nos permitieron no solo cerrar toda la cadena de automatización para comerciar en MetaTrader 4 y 5, sino también hacer algo mucho más interesante. A partir de ahora, esta solución nos permitirá automatizar completamente tanto el proceso de creación de asesores como el proceso de optimización, así como minimizar el gasto de recursos a la hora de encontrar configuraciones comerciales efectivas.

El elemento más importante de toda la idea es el sistema de interacción entre el terminal y el programa. De hecho, supone un optimizador por ciclos con criterios de optimización avanzados, el más importante de los cuales hemos abarcado en la sección anterior. Para que todo el sistema funcione, primero necesitaremos una fuente de cotizaciones, que será uno de los terminales MetaTrader 5. Como ya hemos mostrado en el artículo anterior, las cotizaciones se escriben en un archivo en un formato que nos resulte cómodo. Esto se logra mediante un asesor, que a primera vista funciona de forma bastante extraña:

concepto de registro de cotizaciones por parte de un asesor

A nuestro juicio, supone una experiencia bastante interesante y útil usar nuestro esquema único para el funcionamiento de los asesores. Aquí tenemos solo una demostración de los problemas que necesitábamos resolver, pero todo esto también puede usarse para los asesores comerciales:

 

ejemplo de uso de un asesor para registrar cotizaciones

Autor: Evgeniy Ilin

 

формулы 2

factor de linealidad

Entendamos lo que hay dentro de esta fórmula:

  • N - el número de posiciones de negociación totalmente abiertas y cerradas a lo largo de todo el backtest o sección de negociación.
  • B(i) - el valor de la línea de saldo después de la correspondiente posición cerrada "i".
  • L(i) - la línea trazada desde cero hasta el punto de equilibrio más reciente (equilibrio final).

Parece ser casi Sharpe:

//--- calcula los logaritmos de los incrementos de la matriz de equidad
   for(int i = 1; i < m_bars_counter; i++)
     {
      //--- añadir sólo si la equidad ha cambiado
      if(m_equities[i] != prev_equity)
        {
         log_return = MathLog(m_equities[i] / prev_equity); // logaritmo del incremento
         aver += log_return;            // logaritmo medio de los incrementos
         AddReturn(log_return);         // rellenar el array de logaritmos a partir de incrementos
         counter++;                     // contador de rendimiento
        }
      prev_equity = m_equities[i];
     }
//--- si no hay suficientes valores para calcular el ratio de Sharpe, devuelve 0
   if(counter <= 1)
      return(0);
//--- valor medio del logaritmo del incremento
   aver /= counter;
//--- calcular la desviación estándar
   for(int i = 0; i < counter; i++)
      std += (m_returns[i] - aver) * (m_returns[i] - aver);
   std /= counter;
   std = MathSqrt(std);
//--- Ratio de Sharpe en el marco temporal actual
   double sharpe = aver / std;
Математика в трейдинге: Коэффициенты Шарпа и Сортино
Математика в трейдинге: Коэффициенты Шарпа и Сортино
  • www.mql5.com
Доходность является самым очевидным показателем, который используют инвесторы и начинающие трейдеры для анализа эффективности торговли. Профессиональные трейдеры пользуются более надежными инструментами для анализа стратегии, среди них — коэффициенты Шарпа и Сортино.
 
fxsaber #:

Creo que es casi un Sharpe:

Hay algo parecido, pero sólo a primera vista. Todo el mundo echa de menos el modelo de crecimiento del balance. Si la pendiente del crecimiento del balance es constantemente decreciente (la segunda derivada de la curva del balance es negativa), entonces ese modelo no es preferible, porque pronto puede pasar a ser negativo. De lo que se trata es de seleccionar las curvas que gráficamente parezcan más prometedoras.

 
Evgeniy Ilin #:

Hay similitudes, pero sólo a primera vista. Todo el mundo echa de menos el modelo de crecimiento del saldo. Si la pendiente del crecimiento del saldo disminuye constantemente (la segunda derivada de la curva del saldo es negativa), no es preferible ese modelo, ya que pronto puede entrar en terreno negativo. De lo que se trata es de seleccionar las curvas que gráficamente parezcan más prometedoras.

El algoritmo de Sharpe para curvas descendentes dará un valor negativo. Lo he dado sólo por analogía, no tiene sentido discutir sobre Sharpe....


Ejemplos de mi experiencia.

  • criterio "curva bonita" - no pasa OOS.
  • criterio "curva fea" - pasa OOS, mientras que la curva en sí resultó ser hermosa.
  • Comisión cero - no pasa OOS.
  • Comisión fijada - pasa OOS.

Es decir, resulta que cuando la optimización es por belleza, el componente de ajuste es alto. Cuando se encuentra algo que vale la pena, se ve hermoso.

Por eso yo no busco la belleza. Me fío más del número de acuerdos y del algoritmo del núcleo TS. El objetivo es conseguir belleza sin criterios de belleza. Por regla general, esta variante pasa OOS.


ZY La variante con comisión es más interesante (pero, por regla general, viceversa: menos comisión - más probabilidad de encontrar un patrón). En realidad, reduce el número de transacciones (importancia estadística), pero aumenta la probabilidad de una búsqueda exitosa.

 
fxsaber #:

El algoritmo de Sharpe para curvas descendentes producirá un valor negativo. Lo he dado sólo por analogía, no tiene sentido discutir Sharpe.....


Ejemplos de mi experiencia.

  • El criterio "curva hermosa" - no pasa OOS.
  • El criterio "curva fea" - pasa OOS, pero la curva en sí resultó ser hermosa.
  • Comisión cero - no pasa OOS.
  • Comisión fijada - pasa OOS.

Es decir, resulta que cuando la optimización es por belleza, el componente de ajuste es alto. Cuando se encuentra algo que merece la pena, resulta bonito.

Por eso yo no busco la belleza. Me fío más del número de acuerdos y del algoritmo del núcleo TS. El objetivo es conseguir belleza sin criterios de belleza. Por regla general, esta variante pasa OOS.


ZY La variante con comisión es más interesante (pero, por regla general, viceversa: menos comisión - más probabilidad de encontrar un patrón). En realidad, reduce el número de transacciones (importancia estadística), pero aumenta la probabilidad de una búsqueda exitosa.

Está claro que sigue habiendo limitaciones. Por ejemplo, yo actúo así:

  • Fijo la expectativa mínima requerida en pips (sólo teniendo en cuenta el spread, añado también la comisión y el swap, aproximadamente).
  • Fijo el número mínimo exigido de operaciones, que necesito teniendo en cuenta la duración del tramo considerado
  • Ajusto el factor de ajuste de la curva
No tiene sentido buscar algo dentro del spread ). Habrá muy pocas operaciones, es un hecho, no se puede hacer nada con ello. Hay ajuste en todas partes, la cuestión es cómo minimizarlo sin prestar atención al propio algoritmo. Hay maneras. Sólo sin estimación de la curva sólo podemos contar con el hecho de que el algoritmo es inicialmente graal, que creo que en los dedos para contar. Tengo métodos, cómo hacerlo sin ella, pero tengo miedo de escribir tal cosa aquí ))).
 
Evgeniy Ilin #:

Está claro que sigue habiendo límites. Así es como funciono:

  • Fijo la expectativa de colchón mínima requerida en puntos (sólo teniendo en cuenta el spread, añado también la comisión y el swap, aproximadamente).

Yo no hago eso. Las regularidades del mercado no dependen de las condiciones de negociación del broker. Me inclino por esto.

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

Aprendizaje automático en el trading: teoría, patrones, práctica y algo-trading

fxsaber, 2023.08.19 11:10 AM

Broker de datos históricos para elegir por el mayor beneficio potencial. Por ejemplo, el potencial de EURUSD_Broker1 es mayor que el de EURUSD_Broker2. Entonces tome EURUSD_Broker1.

Tanto las divisas principales como los cruces se pueden revender. Pero no todos ellos. Sólo tienes que entrenar en cada uno de ellos y ver los resultados. Eso es lo que yo hago, a grandes rasgos.

Es decir, es lógico buscar donde la concentración de "oro en la roca" es mayor.


  • Fijo el número mínimo de operaciones que necesito dada la longitud de la zona en cuestión
Sí, esto es una especie de ayuda para la genética para no ir a las ramas sin salida.
  • Ajuste el factor de ajuste de la curva.
Eso es exactamente lo que no hago a propósito. Por ejemplo, se puede entrenar el TS para producir PF>2.5. Con un número adecuado de operaciones, casi automáticamente producirá una curva hermosa. No he empezado a practicar mucho. Pero para la investigación siempre es interesante ver, por supuesto.
No tiene sentido buscar algo dentro del spread ). Habrá muy pocas operaciones, es un hecho, no se puede hacer nada con ello. Hay ajuste en todas partes, la cuestión es cómo minimizarlo sin prestar atención al propio algoritmo. Hay maneras. Sólo sin estimación de la curva sólo podemos contar con el hecho de que el algoritmo es inicialmente graal, que creo que en los dedos para contar. Tengo métodos, cómo hacerlo sin ella, pero tengo miedo de escribir tal cosa aquí ))).

No entiendo la conexión de la TS a la propagación.

 
@fxsaber

  • Например, можно обучить ТС, чтобы выдавал PF>2.5. При должном количестве сделок это почти автоматом выдаст красивую кривую
Puede ser bonito, pero la forma es diferente, el posible delantero depende de la forma. Al menos aumentará la probabilidad de encontrar un setup que funcione. El factor de ganancia de 2,5 es muy gordo, yo diría que 1,5 es bastante )) esos números al encajar suelen pasar. Es como una forma de dar más peso a los ajustes restantes descartando más ajustes (me refiero a mis criterios). En general he llegado a un paradigma interesante en robótica, donde el trabajo principal lo hacen los complementos sobre los algoritmos, y poco depende del algoritmo. Aquí, cualquier criterio que aumente la importancia de un determinado ajuste es valioso. Al fin y al cabo, en conjunto cada uno trabaja a su nivel.

Estoy de acuerdo con el resto.

.
  • No entiendo la conexión del TS con el spread
Si scalping entonces sí, aquí usamos bid y todo, como regla ask flota del spread. Pero los ticks son diferentes para mucha gente, y depende mucho de ello ). El punto es que la propagación era tan pequeño como sea posible que el tamaño medio de un comercio en puntos, como si descuidamos la propagación de modo que no afecta a la señal al cambiar el corredor, por ejemplo, bueno, este es mi fantasías).
 
Evgeniy Ilin #:
Puede ser bonita, pero la forma es diferente, y el posible avance depende de la forma.

Ejemplo de curva encontrada por el criterio MaxBalance (no por belleza).

 
fxsaber #:

Un ejemplo de curva encontrada por el criterio MaxBalance (no por belleza).

Sería interesante ver muchas curvas seleccionadas de este modo (criterio MaxBalance "no por belleza").

 
Anatoli Kazharski #:

Sería interesante ver muchas curvas seleccionadas de este modo (criterio MaxBalance "no por bonitas").

Este fue el sexto resultado en el archivo opt correspondiente. Los cinco primeros parecen peores.

Hago un número reducido de pases GA para que los conjuntos de parámetros de entrada no estén próximos entre sí.

 

Tengo la impresión de que hay algunos enfoques para la construcción de un TS, cuando MaxBalance criterio con un límite en el número de operaciones desde abajo siempre da una hermosa curva en la muestra. En este caso tal TS puede ser considerado como algo racional, incluso si hay una pérdida completa en OOS. Pero parece dudoso buscar la belleza por Sharpe, R^2 o criterios en este artículo. Tal vez estoy equivocado.