Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 538

 
Mihail Marchukajtes:

Ese es el tipo de programador que soy. Nadie puede explicarlo bien hasta que le cojas el tranquillo... ¡¡¡¡¡De todos modos, la gente!!!!! Escuchen. Aquí viene el importante y largo post ......


es una evolución... hacer o morir :) soy como ese programador

 
Mihail Marchukajtes:

¡¡¡¡¡De todos modos la gente!!!!! Escuchen. Próximamente Importante post largo......

¡Maestro, arde!

 

Todos ustedes saben muy bien que tengo un sentimiento ferviente por el Interés Abierto (OI) ya que es el eslabón clave para determinar la naturaleza del volumen negociado. Combinado con el delta...mmmmm.... Sólo un sabroso bocado.... ¡¡¡¡La OI no es ciertamente una panacea, pero mejorar la calidad del rendimiento del modelo, incluso en un 10%, ya conlleva un alto peso!!!! ¡¡¡¡Y oh, milagro!!!! Finalmente lo conseguí en las tripas del día, pero desafortunadamente sólo MT5 tiene esas características, lo que fue el factor decisivo para cambiar de MT4 a 5. Muchas gracias a Rafil, que ha ahorrado mucho tiempo y ha dado un buen comienzo a la migración. El EA ya se está escribiendo y hay una semana de estadísticas. Por supuesto que no es suficiente, pero podemos empezar a probarlo en M5, especialmente en Si, porque la influencia del spread es insignificante en este marco temporal comparado con la volatilidad del instrumento en general. Bueno... los datos están ahí, lo único es lo que pensé que sería. Para entrenar el modelo y ver de qué es capaz la combinación Delta+Volumen+OI. Tengo un buen conocimiento de Мкуль5, pero después de encontrarlo creo que he llegado a la meta y me he enfrentado a un muro de incomprensión en un idioma tan maravilloso y poderoso. El concepto general de la CT es el siguiente.

En este artículo intentaré explorar las principales diferencias entre los valores teóricos y numéricos del modelo.

Para preparar el conjunto de entrenamiento utilizo el siguiente script de aplicación. Este script descarga las señales de la estrategia básica en un archivo csv. Luego construimos el modelo y lo metemos en otro indicador. Tengo dos de ellos. BuySi y SellSi, son los mismos indicadores que contienen IA. En el caso de las entradas, estos indicadores se refieren al conjunto de indicadores Delta+AD+OI. Indicador de indicador, especialmente en un paquete... Cuál podría ser el problema... Pero no... Hay .... y creo que soy el único que sabe tanto sobre este hermoso y maravilloso lenguaje de programación.... así que... donde estaba yo... oh si.... El problema es este:

El script descarga un dato a un archivo, pero durante la prueba en el momento de la señal, la impresión muestra otros valores. Es decir, la misma señal en un archivo escribe una cosa, pero de hecho en el momento de la prueba en la entrada es completamente diferente. Y aquí está la paradoja. La inicialización de la manija y el acceso al búfer en sí fueron copiados del script. Pero BuySi carga datos adecuados en el momento de la prueba porque lo comprobé a mano. Y lo más interesante es que OM carga el mismo archivo y la entrada de AI, pero AD es estándar, terminal uno. En el archivo algunos valores, de hecho otros. Creo que tiene que ver con este mismo parámetro cuando intentamos llamar al indicador para un instrumento diferente al que se está probando. Creo que el problema está en la sincronización de las cotizaciones y los valores de los indicadores. Creo que esta solución puede requerir una preparación previa. Por eso pido ayuda a la gente. ¿Por qué el script obtiene los mismos valores de iAD pero cuando se comprueba estos valores son diferentes y en consecuencia las señales empiezan a variar? Cuando los iconos están en el gráfico, es decir, se calculan durante la inicialización, la imagen tiene el siguiente aspecto.

Muy bueno, en mi opinión. La influencia del OM se siente enseguida, pero cuando lo ejecuto en el probador, el panorama cambia... y no para mejor.

Además, el comprobador realiza dos pasadas con señales diferentes. Los Inductores deberían bombear los buffers a tiempo. El cálculo de la IA se hace con un retraso y el error 4806 ya no aparece, pero las señales de baile y la diferencia en los datos, código absolutamente idéntico con el indicador STANDARD iAD Estoy bastante agotado que era demasiado perezoso para escribir este largo post, esperando ayuda. Creo que el problema está en el iCustom, cuando se llama al indicador en un instrumento diferente al actual. Igual empezó a lloviznar OI, pero luego lo obligué a cargar desde archivos específicos y todo pasó, pero ¿qué hacer con iAD?

Así es como llamo en el script, que crea un archivo con datos.

AD_H =iAD("BR-12.17",   0, VOLUME_REAL);  Sleep(1500);

entonces accedo al buffer así...

  double AD(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(AD_H,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

Y luego calculo la entrada así.

      double AD=(AD(i+1)-AD(i+PNT+1))*Cont;

Todo esto está en un script, pero funciona en un indicador con IA, donde el mango se escribe de la siguiente manera

AD_H =iAD("BR-12.17",   0, VOLUME_REAL);  

El acceso al búfer es así...

  double AD(int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(AD_H,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      return(0.0);
     }
   return NormalizeDouble(MA[0],Digits());
  }

El cálculo de entrada es así....

      double AD=(AD(i+1)-AD(i+PNT+1))*Cont;

Es comprensible, porque todo fue copiado. Pero por qué hay tanta diferencia en el resultado final. Sin embargo, creo que es porque el indicador fue llamado con otro símbolo. No es necesario preparar nada, como la sincronización u otras comprobaciones antes de llamar al indicador con otro símbolo. ¿Qué te parece? ????

 
Vizard_:

¡Maestro, dispara!


OOO Está claro que... ha llegado un público serio. Creo que el debate será candente :-)

 

Y ahora he compilado un indicador y sale a la impresora exactamente los datos que envía al archivo. Pero durante la prueba la misma señal en la entrada tiene otros valores. ¿Por qué?

 

Veo que no habrá película???? Triste :-(

 

Es sólo una suposición, pero...

El EA es dependiente del volumen, lo que significa que el valor de la barra cero cambia constantemente. Si rellena el archivo con los valores del EA generados de antemano, y luego lee ese archivo y lo utiliza para las pruebas, entonces es muy posible que esté mirando hacia adelante, utilizando el valor de la barra cero ya generada en un momento en que aún no se conoce en el propio EA.

 
Dr. Trader:

Es sólo una suposición, pero...

La AD depende del volumen, por lo que el valor de la barra cero cambia constantemente. Si usted llena el archivo con los valores de AD generados por adelantado, y luego lee este archivo y lo utiliza para las pruebas, entonces puede estar mirando hacia adelante, utilizando el valor de la barra cero ya generada en un momento en que aún no se conoce en el propio EA.


No. No se escriben archivos usando AD, todo se toma directamente del símbolo. Creo que puede ser debido a la falta de comprobación de la sincronización. Además, el error 4806 siempre estaba ahí. Introduje un retraso en el indicador principal y el error desapareció, pero el problema persistió. :-(

 

Aquí está la impresión de la terminal después de la compilación.

2017.11.27 20:59:17.625 Comprar_Si (Si-12.17,M5)2017.11.23 11:05:00 1,0 -116,0 64,0 2292,0 -206,0 413 4

y aquí del agente.

2017.11.27 20:59:38.318 2017.11.23 11:10:40 2017.11.23 11:05:00 1.0 -116.0 140.0 -1889.0 -993.0 1 4

La hora 11:05:-116 es la OI que se toma del archivo, también es la misma. Entonces hay tres valores AD de diferentes símbolos. Entonces bar bien y parámetro pont.

Por qué los datos sobre la EA son diferentes. Comprobación de sincronización insertada....?

 

No entiendo nada sin el código.

Necesitamos hacer un simple Asesor Experto con un conjunto mínimo de funciones para simplemente leer los valores del indicador y escribirlos en el registro (o mejor - en archivo csv, para una mejor comparación posterior). En este caso los resultados serán diferentes, y el código debe ser enviado al Service Desk junto con el código del Asesor Experto.
También puede adjuntar el código al terminal -https://www.mql5.com/ru/forum/1111/page2096 - y luego una persona con conocimientos lo comprobará y confirmará o explicará lo que está mal.