L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 2236

 

Version finale des fonctions de mql5 Expert Advisor avec programme python.

Il y a 2 fonctions dans le conseiller, l'une met à jour le temps dans le fichier et la seconde lit le signal de trading réel dans le fichier, qui est formé dans le programme 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);
  }

Dans le programme python, dans l'état "not_actual", la lecture de l'heure actuelle est effectuée, le calcul du signal réel et son enregistrement dans le fichier.

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)

Cette colle n'est pas très rapide, mais elle fonctionne de manière autonome. Il fonctionne dans le Strategy Tester, en mode démo, je ne l'ai pas essayé en mode réel. S'il y a des questions ou des idées pour l'améliorer, écrivez, sinon le thème est bloqué...

 
welimorn:

Version finale des fonctions de mql5 Expert Advisor avec programme python.

Il y a 2 fonctions dans le conseiller, l'une met à jour le temps dans le fichier et la seconde lit le signal de trading actuel dans le fichier, qui est formé dans le programme python.

Dans le programme python, dans l'état "not_actual", la lecture de l'heure actuelle est effectuée, le calcul du signal réel et son enregistrement dans le fichier.

Cette colle n'est pas très rapide, mais elle fonctionne de manière autonome. Il fonctionne dans le Strategy Tester, en mode démo, je ne l'ai pas essayé en mode réel. S'il y a, des questions ou des idées comme il est possible d'améliorer, écrire, et que le thème comme bloqué ...

J'ai été gêné par la vitesse de l'ordinateur portable lorsque je suis passé à des modèles plus compliqués de type récurrence. Je n'arrive pas à trouver autre chose de sensé.

j'en ai un nouveau avec un bon adaptateur vidéo ) je dois l'avoir pour le nouvel an

 
Maxim Dmitrievsky:

J'ai été rattrapé par la vitesse de mon ordinateur portable lorsque je suis passé à des modèles plus complexes de type récurrence. Je n'arrive pas à trouver autre chose de sensé.

j'en ai un nouveau avec un bon adaptateur vidéo) je dois m'acheter un cadeau pour la nouvelle année

Pourquoi l'ordinateur portable ? Les tâches sont lourdes.

 
Valeriy Yastremskiy:

Pourquoi l'ordinateur portable ? Les tâches sont lourdes.

Parce que vous ne pouvez pas mettre un bureau sur votre estomac le soir, sur le canapé.

il n'est pas si lourd, mais un ultrabook avec 2 cœurs mobiles n'est pas génial.

Ils n'ont même pas besoin d'une carte graphique, juste d'un bon processeur.

 
Maxim Dmitrievsky:

parce que tu ne peux pas mettre un bureau sur ton estomac le soir, sur le canapé.

il n'est pas si lourd, mais un ultrabook avec 2 cœurs mobiles n'est pas génial.

En fait, vous n'avez même pas besoin d'une carte vidéo, juste d'un bon processeur.

sur la tablette, traduire l'image depuis un ordinateur normal, radio souris depuis un ordinateur + clavier

 
Maxim Dmitrievsky:

parce que tu ne peux pas mettre un bureau sur ton estomac le soir, sur le canapé.

il n'est pas si lourd, mais un ultrabook avec 2 cœurs mobiles n'est pas génial.

En fait, vous n'avez même pas besoin d'une carte vidéo, juste d'un bon processeur.

Bon ventre et tâche lourde)))) Une ferme ne ferait pas de mal non plus pour ces tâches)))) Un cinq i9 avec 32gb de RAM et un ssdc léger)))))

 

A quoi servent ces capacités si l'on s'entraîne à l'enfer avec l'enfer avec l'enfer avec l'enfer avec l'enfer avec l'enfer avec la cible...

le résultat est évident, même si c'est 100 i9s.

Aleksey Vyazmikin:

Le même gradient est utilisé dans les boosts. Il s'agit simplement d'informations permettant d'élargir les connaissances et les méthodes adaptées au MO.

Vous l'avez peut-être oublié, mais je n'ai jamais rien vu de tel auparavant.

 
mytarmailS:

Ok, alors quoi ? Tu as fait quelque chose ? Ou tu as juste jeté la vidéo et oublié ?

Non, je ne l'ai pas fait, je ne peux pas résoudre un tel problème - c'est un algorithme compliqué et je dois écrire mon propre boosting.

 
Aleksey Vyazmikin:

Non, je ne l'ai pas fait, je ne peux pas résoudre un tel problème - c'est un algorithme compliqué, et je dois écrire mon propre boosting.

c'est écrit depuis longtemps, vous pouvez le faire en 5 lignes....

Débarrassez-vous-en sans mql, tout ce qu'il peut faire, c'est ouvrir/fermer des transactions.

 
Maxim Dmitrievsky:

J'ai été happé par la vitesse de l'ordinateur portable lorsque je suis passé à des modèles plus complexes de type récurrence. Je n'arrive pas à trouver autre chose de sensé.

J'en ai choisi un nouveau avec un bon jeu vidéo. Je dois m'en acheter un pour le réveillon du Nouvel An.

J'ai le même problème. Une image plus grande augmenterait la largeur de la couche convolutive, et la profondeur du réseau en général, ce qui augmenterait considérablement le temps de formation. J'économise pour une nouvelle machine, aussi... En même temps, j'essaie de limiter l'apprentissage sur le GPU.