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

 
Maxim Dmitrievsky:

Aquí las barras se reindexan por tiempo muerto, porque puede haber barras perdidas en el historial, para que no haya agujeros. Luego se vuelcan los valores vacíos, y luego se hace un detrend por MA.

No hay omisiones en el comerciante, ya que se toman n últimos compases. No deben ser invertidos.

No creo que afecte mucho. Pero puedo volver a hacerlo y ver.

Bueno, no rehacerlo, sino simplemente imprimirlo y compararlo con el original - si la dirección es correcta
 
De forma similar a lo que se ha escrito aquí, que predecir una barra desconocida pasada es más fácil que predecir una futura
 
elibrarius:
Pues no lo vuelvas a hacer, simplemente imprímelo y compáralo con el original - si la dirección no está mal
...        ...      ...
3267  0.001091  1.18140
3268  0.000421  1.18077
3269  0.001455  1.18191
3270  0.001636  1.18225
3271  0.001829  1.18258

[3258 rows x 2 columns]
>>>
...        ...      ...
3225  0.001091  1.18140
3226  0.000421  1.18077
3227  0.001455  1.18191
3228  0.001636  1.18225
3229  0.001829  1.18258

[3230 rows x 2 columns]

está bien, el último valor corresponde al precio de la última barra en el terminal

 

Voy a compartir mi experiencia - cuando se utilizan los valores OH LC de la barra actual del TF superior en la barra de minutos, asegurar la estabilidad de los datos obtenidos, puede muy bien ser crítico al aplicar el modelo, porque nadie garantiza que el precio se obtiene sin tener en cuenta la acumulación de OHLC de la barra actual de minutos.

Hice una función que resuelve este problema, estoy compartiendo

//+------------------------------------------------------------------+
//|Получение информации о ценах OHLC текущего бара                   |
//+------------------------------------------------------------------+
void Get_OHLC(string symbol,ENUM_TIMEFRAMES TF, double &arr_OHLC[])
{
   ArrayResize(arr_OHLC,4);
   arr_OHLC[0]=iOpen(symbol,TF,0);
   arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   if(TF!=PERIOD_M1)
   {
      double arr_High[];
      double arr_Low[];
      int copied=0;
      datetime s=iTime(symbol,TF,0);
      datetime f=iTime(symbol,PERIOD_M1,1);
      if(s<f)
      {
         copied=CopyHigh(symbol,PERIOD_M1,s,f,arr_High);
         if (copied>0)
         {
            arr_OHLC[1]=arr_High[ArrayMaximum(arr_High,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_High");
         }
         copied=CopyLow(symbol,PERIOD_M1,s,f,arr_Low);
         if (copied>0)
         {
            arr_OHLC[2]=arr_Low[ArrayMinimum(arr_Low,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_Low");
         }
      }
      else
      {
         if(s==f)//Если ТФ открылся на прошлом минутном баре
         {
            arr_OHLC[1]=iHigh(symbol,PERIOD_M1,1);
            arr_OHLC[2]=iLow(symbol,PERIOD_M1,1);
         }
         if(s>f)//Если ТФ открылся на текущем минутном баре
         {
            arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
            arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
         }
      }
   }
   else
   {
      arr_OHLC[0]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   }
}
 
Aleksey Vyazmikin:

Voy a compartir mi experiencia - cuando se utilizan los valores OH LC de la barra actual del TF superior en la barra de minutos, asegurar la estabilidad de los datos obtenidos, puede muy bien ser crítico al aplicar el modelo, porque nadie garantiza que el precio se obtiene sin tener en cuenta la acumulación de OHLC de la barra actual de minutos.

He creado una función que resuelve este problema.

¿Es un error del terminal o qué?
Pensaba que con el primer tick, por ejemplo a las 0:00 del lunes, aparecerían automáticamente todas las barras hasta la semanal.

Si se trata de un error, por favor, envíe la solicitud con la descripción y el código a servicedek para que lo repita. Lo arreglaremos en la próxima versión.

 
elibrarius:

¿Es un error de la terminal o qué?
Pensaba que en el primer tick, por ejemplo a las 0:00 del lunes, aparecerían automáticamente todas las barras hasta una semana.

Si se trata de un error, envíe una solicitud con la descripción y el código a servicedek para su reproducción. Esto se arreglará en la próxima versión.

la barra no se abrirá hasta que se reciba el tick del instrumento. Puede que no haya garrapatas durante mucho tiempo ;-)

 
elibrarius:

¿Es un error de la terminal o qué?
Pensaba que en el primer tick, por ejemplo a las 0:00 del lunes, aparecerían automáticamente todas las barras hasta la semanal.

Si se trata de un error, envíe una solicitud con la descripción y el código a servicedek para su reproducción. Esto se arreglará en la próxima versión.

Esto es un error, no una solución.

La situación puede ser la siguiente: llega un nuevo tick de una nueva barra de minutos y utilizamos un indicador que no ha calculado desde el primer tick y se salta el tick, o simplemente entra en el cálculo de todos los predictores, va a este tiempo y en medio del código pide el OHLC de la barra actual. El OHLC cambia todo el tiempo y puede ser crítico en caso de MO. Yo mismo me he encontrado con un cálculo diferente de los predictores en función del tipo de modelización de ticks, y de hecho cuando se aplica el modelo al mercado.

 

por la terminología, por favor, aconséjelo,

¿Es "predictor" sólo uno de los elementos (uno de los valores) de un vector que se somete a entrenamiento?
sólo un montón de nombres sobre la misma cosa.

 

¡Perdón por el descaro!

También puedes pasar estos datos por redes neuronales, si tienes tiempo libre, claro.


EURUSD_options - este archivo contiene todas las opciones posibles que pueden estar en la serie temporal.


EURUSD_data - la propia serie temporal (el último valor recibido está al final del archivo).

Hay tres columnas, la primera es lo que debería predecirse, las otras dos son variantes de respuestas.

De hecho, tenemos que enseñar a NS a elegir la variante correcta de entre dos. Si es posible predecir el siguiente valor de las columnas con variantes de respuestas, también está bien.

Archivos adjuntos:
 
Evgeny Dyuka:

para la terminología,

¿Es "predictor" sólo uno de los elementos (uno de los valores) de un vector que se somete a entrenamiento?
sólo un montón de nombres sobre la misma cosa.

Sí. Los sinónimos son fetch, input, predictor.