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

 
Maxim Dmitrievsky:

Ici, les barres sont réindexées par temps mort, car il peut y avoir des barres manquées dans l'historique, de sorte qu'il n'y a pas de trous. Ensuite, les valeurs vides sont éliminées, puis on fait un détriquage par MA.

Il n'y a pas d'omissions dans le trader, puisque les dernières mesures sont prises. Ils ne doivent pas être inversés.

Je ne pense pas que cela affecterait beaucoup les choses. Je ne pense pas que ça ferait une grande différence. Mais je pourrais le refaire et voir.

Eh bien, pas refaire, mais juste l'imprimer et le comparer avec l'original - si la direction est correcte.
 
Comme ce qui a été écrit ici, il est plus facile de prédire une barre inconnue passée que de prédire une barre inconnue future.
 
elibrarius:
Ne le refaites pas, imprimez-le simplement et comparez-le avec l'original - si la direction n'est pas fausse.
...        ...      ...
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]

c'est ok, la dernière valeur correspond au prix de la dernière barre dans le terminal

 

Je vais partager mon expérience - lorsque vous utilisez les valeurs OHLC de la barre actuelle du TF supérieur sur la barre minute, assurez-vous de la stabilité des données obtenues, il peut très bien être critique lors de l'application du modèle, car personne ne garantit que le prix est obtenu sans tenir compte de l'accumulation des OHLC de la barre minute actuelle.

J'ai créé une fonction qui résout ce problème, que je partage avec vous.

//+------------------------------------------------------------------+
//|Получение информации о ценах 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:

Je vais partager mon expérience - lorsque vous utilisez les valeurs OHLC de la barre actuelle du TF supérieur sur la barre minute, assurez-vous de la stabilité des données obtenues, il peut très bien être critique lors de l'application du modèle, car personne ne garantit que le prix est obtenu sans tenir compte de l'accumulation des OHLC de la barre minute actuelle.

J'ai créé une fonction qui résout ce problème.

C'est un bug du terminal ou quoi ?
Je pensais qu'avec le premier tick, par exemple à 0:00 le lundi, toutes les barres jusqu'à la barre hebdomadaire apparaîtraient automatiquement.

S'il s'agit d'un bogue, veuillez envoyer une demande avec la description et le code à servicedek pour qu'elle soit rejouée. Nous le corrigerons dans la prochaine version.

 
elibrarius:

C'est un bug du terminal ou quoi ?
Je pensais qu'au premier tick, par exemple le lundi à 0h00, toutes les barres jusqu'à une semaine apparaîtraient automatiquement.

S'il s'agit d'un bogue, envoyez une demande avec la description et le code à servicedek pour la reproduction. Cela sera corrigé dans la prochaine version.

la barre ne s'ouvrira pas tant que le tick n'aura pas été reçu pour l'instrument. Il se peut qu'il n'y ait pas de tique pendant un très long moment ;-)

 
elibrarius:

C'est un bug du terminal ou quoi ?
Je pensais qu'au premier tick, par exemple à 0:00 le lundi, toutes les barres jusqu'à la barre hebdomadaire apparaîtraient automatiquement.

S'il s'agit d'un bogue, envoyez une demande avec la description et le code à servicedek pour la reproduction. Cela sera corrigé dans la prochaine version.

C'est un bug, pas un correctif.

La situation peut être la suivante : un nouveau tick d'une nouvelle barre minute arrive et nous utilisons un indicateur qui n'a pas calculé à partir du premier tick et qui saute le tick, ou qui entre simplement dans le calcul de tous les prédicteurs, va à ce moment et au milieu du code demande l'OHLC de la barre actuelle. L'OHLC change tout le temps et il peut être critique en cas de MO. Je viens de rencontrer moi-même différents calculs de prédicteurs en fonction du type de modélisation du tick, et en fait lors de l'application du modèle au marché.

 

pour la terminologie, veuillez nous conseiller,

Le terme "prédicteur" est-il simplement l'un des éléments (l'une des valeurs) d'un vecteur soumis à la formation ?
est un ensemble de noms désignant la même chose.

 

Désolé pour le culot !

Vous pouvez également faire passer ces données par des réseaux neuronaux, si vous avez du temps libre bien sûr.


EURUSD_options - ce fichier contient toutes les options possibles qui peuvent être dans la série chronologique.


EURUSD_data - la série temporelle elle-même (la dernière valeur reçue se trouve à la fin du fichier).

Il y a trois colonnes, la première est ce qui devrait être prédit, les deux autres sont des variantes de réponses.

En fait, nous devons apprendre à NS à choisir la bonne variante parmi deux. S'il est possible de prédire la prochaine valeur des colonnes avec des variantes de réponses, c'est bien aussi.

Dossiers :
 
Evgeny Dyuka:

pour la terminologie,

Le terme "prédicteur" est-il simplement l'un des éléments (l'une des valeurs) d'un vecteur soumis à la formation ?
est un ensemble de noms désignant la même chose.

Oui. Les synonymes sont fetch, input, predictor.
Raison: