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

 
Mihail Marchukajtes:

Alexei, muchas gracias. Sin duda, lo comprobaré todo y le comunicaré el resultado. En cuanto a mirar hacia el futuro, no tiene ninguna importancia y no ocurrirá si el EA escribe como el indicador lee. Si no hay diferencia entre ellos, no importará. Alternativamente, cuando aparece una nueva barra, esperamos al primer cambio de OI y registramos el nuevo valor de la primera barra anterior, incluso podemos registrar no un nuevo valor, sino el antiguo que fue el último de la primera barra. Es decir, de hecho, empezaremos a escribirlo al final de la barra anterior.

Lo importante no es la OI que asignamos a la barra de minutos, sino cómo se leerá el indicador desde el archivo.

Piense también no sólo en el entrenamiento, sino también en el uso del modelo cuando se tomen datos del mercado, ya que allí se encontrarán los datos más fiables. Por ahora los datos se guardarán en la apertura de la vela, es decir, en la barra cero no habrá cambios después de la apertura (si lo he entendido bien :) ). La única diferencia es el valor de la última o penúltima barra.

 

neocognitrón: una especie de red convolucional pero sin profesor

https://habr.com/ru/post/214317/

Quien entienda cómo funciona, que me lo explique por favor

 
Aleksey Vyazmikin:

Además, hay que pensar no sólo en el entrenamiento, sino también en la aplicación del modelo cuando los datos se tomen del mercado, para que los datos sean los más fiables. Por ahora los datos se guardarán en la apertura de la vela, es decir, en la barra cero no habrá cambios después de la apertura (si lo he entendido bien :) ). La única diferencia es la última o penúltima barra de la que el EA debe obtener datos.

Aunque el Asesor Experto comienza a trabajar en la apertura de la barra, sigue obteniendo datos de la primera barra. En mi caso se toma incluso de la segunda barra; pues bien, este es mi error porque no hay que esperar 30 segundos a que se actualicen los valores en la primera barra; la segunda barra ya lleva bastante tiempo calculada. Por eso, escribir el primer valor OI en la barra libre no da tanto miedo. Resulta que escribo el valor actual en el historial. No hay que mirar atrás. Y no importa, no lo tomamos de una copia. Lo más importante es que el indicador lo lea correctamente. Tiene una función adicional en su indicador para leer un archivo que contiene la condición "Fecha verdadera". Para la correcta carga del historial desde el archivo tuve que añadir la siguiente línea

 if(New_Data==true)
            {
               ArrayResize(oi,x+2,1000);
               if(cnt==0)
               {
               Arh_Time=StringToTime(str);///////////// Если честно в обще не понял зачем ты так это всё разделил
                  oi[x].time=Arh_Time;                 //если запись первая, т.е. дата, то конвертируем из стринга в дататайм
               }

               else if(cnt==1)
               {
                  oi[x].oi=Arh_oi;   //если запсиь вторая, т.е. ОИ, то конвертируем в инт и
                  New_Data=false;
                  x++;
               }
            }

Y el indicador comenzó a funcionar con los datos registrados por minuto y por tic, todo en un archivo. Incluso he comprobado cómo se construyen los diferentes marcos temporales y todo ha encajado bien, pero he tenido que cambiar también esta línea en el cuerpo principal

for(int s=f; s<count_size; s++)
            {
               //Print("Test_02");
               if(oi[s].time>time[i])
               {
                  //Print("Test_03");
                  if (s>1)BufOI[i-1]=oi[s-1].oi; /// иначе всё бралось с минутой позже
                  //Print("s=",s);
                  f=s;
                  break;
               }
               if(s+1==count_size)
               {
                  BufOI[i]=SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST);
                  //Print("OI=",SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST));
                  if(BufOI[i]<1)BufOI[i]=BufOI[i-1];
                  if(BufOI[i]<1 && BufOI[i-1]<1)BufOI[i]=100;
                  f=s;
               }
            }

Por lo demás, he puesto el EA en el gráfico y he estado esperando la apertura.

¡¡¡¡Aquí hay un indicador y no gracias :-)!!!! Solo bromeaba con muchas gracias. ¿Qué tal 37 libras? ¿Quieres ganar?

Archivos adjuntos:
OI_Test.mq5  16 kb
 
Aleksey Vyazmikin:

Si el Asesor Experto trabaja por la apertura de la barra, aunque se retrase, ¿es correcto alimentarlo con datos por el cierre de la vela, es decir, mirar hacia el futuro? Por eso se utilizan los datos más frescos antes de esta vela, es decir, un pequeño retraso, en lugar de la anticipación.


¿Dónde está el cálculo de 5 ticks? A veces ocurre que una operación no se concluye en un minuto, entonces se pierde una barra, y por eso he eliminado la comparación para la variación del volumen de OM, para que los datos se escriban inmediatamente en la apertura de una nueva vela. Quizás se me olvidó, tengo que probarlo con datos, ayer no tuve ninguno y es entre semana :(

Habrá un hueco y debería reescribir su valor a partir de la segunda barra. Pero mi pregunta sigue sin respuesta: ¿se cumplirá la condición de nueva barra cuando se abra la bola y pasen unos cuantos ticks, por ejemplo, y sólo entonces cambiará la OI?
 
Lamentablemente, ni el primer ni el segundo compás se registran en el modo de tiempo normal. Al volver a compilar el indicador, se carga el historial pero sólo hasta la tercera barra, no se actualiza ni la segunda ni la primera, aunque de hecho están en el archivo.
 
Mihail Marchukajtes:

Los datos se siguen tomando de la primera barra, aunque el EA empieza a funcionar en la apertura de la barra. En mi caso es incluso a partir de la segunda barra, pero este es mi error porque no necesito esperar 30 segundos para la actualización de los valores en la primera barra, la segunda ya ha sido calculada y durante bastante tiempo. Por eso, escribir el primer valor OI en la barra libre no da tanto miedo. Resulta que escribo el valor actual en el historial. No hay que mirar atrás. Y no importa, no lo tomamos de una copia. Lo más importante es que el indicador lo lea correctamente. Tiene una función adicional en su indicador para leer un archivo que contiene la condición "Fecha verdadera". Para la correcta carga del historial desde el archivo tuve que añadir la siguiente línea

Y el indicador empezó a funcionar con los datos registrados por minuto y por tic, todo en un archivo. Incluso he comprobado cómo se construyen los diferentes marcos temporales y todo ha encajado bien, pero he tenido que cambiar también esta línea en el cuerpo principal

Por lo demás, he puesto el EA en el gráfico y he estado esperando la apertura.

¡¡¡¡Aquí hay un indicador y no gracias :-)!!!! Solo bromeaba con muchas gracias. ¿Qué tal 37 libras? ¿Quieres ganar dinero?

Si no utiliza una barra de cero, por supuesto que puede hacer una mirada hacia adelante. He hecho uno personalizado aquí, la forma en que trabajo con los datos.

Lo único que me confunde es.

if (s>1)BufOI[i-1]=oi[s-1].oi; /// иначе всё бралось с минутой позже

Esta desigualdad puede no ser respetada. Ya que la hora del primer tick puede no coincidir con la hora de apertura de la vela. Guardar en lugar de tiempo del archivo,

Arh_Time=StringToTime(str);

truncar la hora al minuto de la variable NewTime.

Y en cuanto a la recompensa, creo que ya me la he ganado :)


Mihail Marchukajtes:
Sí, habrá un hueco y deberás reescribir el valor de la segunda barra. Pero mi pregunta sigue sin respuesta: ¿se cumplirá la condición de una nueva barra cuando se abra una bola y pase unos cuantos ticks, por ejemplo, y luego se cambie la OI?

La comprobación de una nueva barra se produce después de un cambio de volumen, por lo que debemos llegar a la parte del código donde se produce la grabación.


Mihail Marchukajtes:
Lamentablemente, no escribe el primer o el segundo compás en modo raltime. Cuando vuelvo a compilar el indicador, el historial se carga pero sólo hasta la tercera barra, ni la segunda ni la primera se actualizan, aunque sí están en el archivo.

¿No escribe dónde? ¿El Asesor Experto no escribe? Pruebe la versión antigua del EA en la que escribe varias veces por minuto y vea si el indicador funciona correctamente con ella.

 
Aleksey Vyazmikin:

Si no utilizas la barra de cero, puedes, por supuesto, hacer una mirada hacia adelante. He estado haciendo mi propia cosa aquí, la forma en que trabajo con los datos.

Sólo que estoy confundido.

Esta desigualdad puede no ser respetada. Ya que la hora del primer tick puede no coincidir con la hora de apertura de la vela. Guardar en lugar de tiempo del archivo,

truncar la hora al minuto de la variable NewTime.

Y sobre la recompensa, pensé que ya me la había ganado :)


Comprueba si hay una nueva barra después del cambio de volumen, por lo que debe llegar a la parte del código donde se produce la escritura.


¿Dónde no escribe? ¿El EA no escribe? Pruebe la versión antigua del EA en la que escribía varias veces por minuto, ¿el indicador funcionará correctamente con ella?

Estoy tratando con el EA ahora, sigue cambiando el valor de la primera barra en el archivo por alguna razón. Creo que el nuevo bar siempre es mejor. Si no lo hubiera comprobado ahora mismo tropezaría.

Y así con cada recompilación. ¿Qué es HZ? Ya he probado muchas cosas, a veces se carga y a veces no...

 
Mihail Marchukajtes:

Ahora estoy tratando con el Asesor Experto, sigue cambiando el valor de la primera barra en el archivo por alguna razón. Parece que el nuevo bar es siempre más oscuro. Lo he comprobado ahora y se ve así al recompilar.

Y así con cada recompilación. ¿Qué es HZ? He probado muchas cosas - a veces lo carga, a veces no...

Mi EA no escribe su EA en absoluto - Tengo que probarlo. Lo he probado muchas veces, y a veces no funciona, a veces simplemente no funciona.

 
Aleksey Vyazmikin:

Mi EA no escribe su EA en absoluto - tengo que averiguarlo. O, por favor, envíame una versión de trabajo sólo para que Si escriba.

Tiene que especificar el contrato de futuros actual en todas partes. Por supuesto, no funciona en Splice. Si intento utilizar una alternativa, mostraré la versión actual del indicador, que se compila y ejecuta sólo hasta la segunda barra, mientras que la primera barra siempre cambia.

Archivos adjuntos:
 

Alexey, ¿es posible hacer que el indicador lea las lecturas del archivo para la primera barra cuando aparece una nueva barra y así se logrará la sincronización más completa? De hecho, no permanecerá en el gráfico, y será llamado periódicamente de señal en señal... El asunto es que el EA utiliza MarketBook y el indicador recibe datos de la bolsa. Creo que deberíamos utilizar el seguimiento del libro de mercado y el indicador empezará a funcionar con estas entradas. ¡¡¡¡¡Beneficio!!!!!

Creo que la única fuente de obtención de OM debe ser el EA y la duplicación de solicitudes a la bolsa no es aceptable, de lo contrario sólo nos molestamos en negociar. ¿Qué te parece?

Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...