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

 

Versión final de las funciones del Asesor Experto mql5 con el programa python.

Hay 2 funciones en el asesor, uno actualiza el tiempo en el archivo y el segundo lee la señal de comercio real en el archivo, que se forma en el programa de python.

void OnTick()
  {
   if(!isNewBar())
      return;
   file_refresh_time();
   sig =StringToDouble(file_read_signal());
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string  file_refresh_time()
  {
   string time  = TimeToString(TimeCurrent());
   bool read =false;
   string file_buff[];
   ArrayResize(file_buff,1);
   file_buff[0] = time;
   ArrayResize(file_buff,2);
   file_buff[1] = "not_actual";
   ArrayResize(file_buff,3);
   file_buff[2] = DoubleToString(sig);

   while(1)
     {
      int h=FileOpen("test.txt",FILE_WRITE|FILE_ANSI|FILE_TXT|FILE_COMMON);
      if(h==INVALID_HANDLE)
        {
         continue;
        }
      if(h!=INVALID_HANDLE)
        {
         for(int i=0; i<ArraySize(file_buff); i++)
            FileWrite(h,file_buff[i]);

         FileClose(h);

         break;
        }

     }
   return("0");
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string  file_read_signal()
  {
   string sg="0.5";
   bool read =false;
   while(1)
     {
      if(read==false)
        {
         string time  = TimeToString(TimeCurrent());
         int h=FileOpen("test.txt",FILE_READ|FILE_ANSI|FILE_TXT|FILE_COMMON);
         if(h==INVALID_HANDLE)
           {
            continue;
           }
         if(h!=INVALID_HANDLE)
           {
            int cnt=0;
            while(!FileIsEnding(h))
              {
               string str=FileReadString(h);
               StringTrimLeft(str);
               StringTrimRight(str);
               if(cnt == 1 && str == "actual")
                 {
                  read =true;
                 }

               if(read ==true && cnt == 2)
                 {
                  sg =str;
                 }
               cnt++;
              }
            FileClose(h);
            if(read ==true)
              {
               FileClose(h);
               break;
              }
           }

        }

     }
   return(sg);
  }

En el programa python en el estado "not_actual" se realiza la lectura de la hora actual, el cálculo de la señal real y su registro en el archivo.

terminal_dir = "C:/Users/AdmNB0225/AppData/Roaming/MetaQuotes/Terminal/Common/Files/"
a=0
old_rez = 0
rez = []
while True:

    try:
        with open(terminal_dir+'test.txt', 'r') as file:
            rez = [row.strip() for row in file]
    except IOError:
        pass

    if rez != old_rez and len(rez)!=0:
        print(rez)
        if rez[1] == "not_actual":
            rez[1] = "actual"
            date = rez[0]
            date = datetime.strptime(date, '%Y.%m.%d %H:%M')
            rez[2] = get_signal(date)


            try:
                with open(terminal_dir + 'test.txt', 'w') as file:
                    file.writelines(str(i)+'\n' for i in rez)
            except IOError:
                pass

    old_rez = rez
    # time.sleep(2)

Este pegamento no es muy rápido, pero funciona de forma independiente. Funciona en el Probador de Estrategias, en modo demo, no lo he probado en modo real. Si hay alguna pregunta o idea de cómo se puede mejorar, escribe, de lo contrario el tema se estanca...

 
welimorn:

Versión final de las funciones del Asesor Experto mql5 con el programa python.

Hay 2 funciones en el asesor, uno actualiza el tiempo en el archivo y el segundo lee la señal de comercio real en el archivo, que se forma en el programa de python.

En el programa python en el estado "not_actual" se realiza la lectura de la hora actual, el cálculo de la señal real y su registro en el archivo.

Este pegamento no es muy rápido, pero funciona de forma independiente. Funciona en el Probador de Estrategias, en modo demo, no lo he probado en modo real. Si hay, preguntas o ideas como es posible mejorar, escribir, y ese tema como estancado ...

La velocidad del portátil se me atascó cuando pasé a modelos más complicados de tipo recurrente. No parece que pueda investigar nada más sensato.

tiene uno nuevo con un buen adaptador de video ) necesita conseguirlo para el año nuevo

 
Maxim Dmitrievsky:

Me quedé atrapado en la velocidad de mi portátil cuando pasé a modelos más complejos de tipo recurrente. No parece que pueda investigar nada más sensato.

tengo uno nuevo con un buen adaptador de video ) necesito regalarme algo para el año nuevo

¿Por qué el portátil? Las tareas son pesadas.

 
Valeriy Yastremskiy:

¿Por qué el portátil? Las tareas son pesadas.

Porque no se puede poner un escritorio en el estómago por la noche, en el sofá.

no es tan pesado, pero un ultrabook con 2 núcleos móviles no es gran cosa.

Ni siquiera necesitan una tarjeta gráfica, sólo una buena CPU

 
Maxim Dmitrievsky:

porque no se puede poner un escritorio en el estómago por la noche, en el sofá.

no es tan pesado, pero un ultrabook con 2 núcleos móviles no es gran cosa.

de hecho, ni siquiera necesitas una tarjeta de vídeo, sólo una buena CPU

en la tableta, traducir la imagen desde un ordenador normal, radio del ratón desde un ordenador + teclado

 
Maxim Dmitrievsky:

porque no se puede poner un escritorio en el estómago por la noche, en el sofá.

no es tan pesado, pero un ultrabook con 2 núcleos móviles no es gran cosa.

de hecho ni siquiera necesitas una tarjeta de video, solo una buena CPU

Vientre bien y tarea pesada)))) Una granja tampoco estaría mal para esas tareas))) Un cinco i9 con 32gb de RAM y un ssdc ligero)))))

 

De qué sirven estas capacidades si se entrena el infierno con el infierno con el infierno con el infierno con el infierno con el objetivo...

el resultado es obvio, aunque sean 100 i9s.

Aleksey Vyazmikin:

El mismo gradiente se utiliza en los impulsos. Es sólo información para ampliar conocimientos y métodos adecuados para el MO.

Puede que lo hayas olvidado, pero yo no lo he visto en absoluto.

 
mytarmailS:

Ok, ¿entonces qué? ¿Hiciste algo? ¿O simplemente tiraste el video y te olvidaste?

No, no puedo resolver tal problema - es un algoritmo complicado y tengo que escribir mi propio refuerzo.

 
Aleksey Vyazmikin:

No, no lo he hecho, no puedo resolver tal problema - es un algoritmo complicado, y necesito escribir mi propio refuerzo.

está escrito desde hace mucho tiempo, se puede hacer en 5 líneas....

Deshazte de él sin mql, lo único que puede hacer es abrir/cerrar operaciones

 
Maxim Dmitrievsky:

Me quedé atrapado en la velocidad de mi portátil cuando pasé a modelos más complejos de tipo recurrente. No parece que pueda investigar nada más sensato.

Escogió uno nuevo con un buen videojuego ) tengo que conseguirme uno para la víspera de Año Nuevo

Tengo el mismo problema. Tengo que almacenar todas las interpretaciones gráficas de kotier en imágenes de 50x50 píxeles)) hacer una imagen más pequeña no tiene sentido, la precisión disminuye demasiado. Una imagen más grande aumentará el ancho de la capa de convolución y la profundidad de la red en general, lo que aumentará drásticamente el tiempo de entrenamiento. Yo también estoy ahorrando para una nueva máquina... Al mismo tiempo, intento frenar el aprendizaje en la GPU.