Discussion de l'article "Création d'un Indicateur Multidevise à l'Aide d'un Certain Nombre de Tampons d'Indicateurs Intermédiaires"

 

Un nouvel article Création d'un Indicateur Multidevise à l'Aide d'un Certain Nombre de Tampons d'Indicateurs Intermédiaires a été publié :

Il y a eu récemment un intérêt grandissant pour les analyses de bloc du marché FOREX. MQL5 ouvre de nouveaux horizons de recherche des tendances du mouvement des paires de devises. Une caractéristique clé de MQL5, qui le distingue de MQL4, est la possibilité d'utiliser un nombre illimité de tampons d'indicateurs. Cet article décrit un exemple de création d'un indicateur multi-devises.

Ceci achève le calcul des indicateurs. Les figures 4 à 6 présentent quelques images des différents types d'indicateurs.

Figure 4. RSI par les indices

Auteur : Alexey Klenov

 

il serait utile que ces indicateurs trient également celui-ci en fonction de leurs valeurs.

en fonction de leurs valeurs. Si une telle fonction existe, merci de la partager, afin de ne pas inventer une bicyclette.

 
Prival:

il serait utile de faire le tri dans ces indicateurs également

en fonction de leurs valeurs. Si une telle fonction existe, merci de la partager, afin de ne pas inventer une bicyclette.

Il n'y a pas de fonction toute prête, mais je pense qu'il ne sera pas difficile de l'esquisser.

19.05.2010

Voici ce qui a été réalisé

Dossiers :
 

Je vous remercie.

La seule chose que je voudrais signaler est que la méthode de synchronisation ne fonctionne pas toujours. Voici une image. Trou entre guillemets pendant 24 heures, mais tout est synchronisé (((.

C'est très mauvais. Pourquoi est-ce que je n'arrive pas à comprendre, et surtout, que faire pour y remédier ?

 
Prival:

Nous vous remercions.

La seule chose que je voudrais signaler est que la méthode de synchronisation ne fonctionne pas toujours. Voici une image. Trou entre guillemets pendant 24 heures, mais tout est synchronisé (((.

C'est très mauvais. Pourquoi est-ce que je n'arrive pas à comprendre, et surtout, que faire pour y remédier ?


L'indicateur utilise 2 types de synchronisation

1 par le nombre de barres (il doit y avoir plus de barres sur le graphique que l'historique requis par défaut de 500 barres) cette condition est apparemment remplie.

2 par l'heure d'ouverture de la barre zéro sur chaque paire de devises - cette condition est apparemment aussi remplie.

Je pense qu'il est intéressant d'ajouter un troisième type de synchronisation pour vérifier l'heure d'ouverture de chaque barre sur chaque paire par analogie avec le deuxième type de synchronisation.

Comme je serai un peu plus libre, je ferai aussi ce type de synchronisation.

 
olyakish:

....

Je pense qu'il est intéressant d'ajouter un troisième type de synchronisation pour vérifier l'heure d'ouverture de chaque barre sur chaque paire par analogie avec le deuxième type de synchronisation.

Dans votre image et similitude j'ai fait la fonction bool init_tf(...).

//+------------------------------------------------------------------+
//| Initialisation des graphiques des paires de devises concernées |
//| et vérification de la synchronisation des données|
//+------------------------------------------------------------------+
//| in.|
//| mas[] est un tableau de noms de caractères requis |
//| time_0 - heure actuelle de la barre[0]|
//| count_Bars - nombre requis de barres |
//+------------------------------------------------------------------+
bool init_tf(string &mas[], datetime time_0, int count_Bars) { 
   bool     rez=false;              // indicateur de réussite
   int      copied=0,               // nombre de données copiées
            counter=0,              // compteur d'erreurs
            tmp_bars=0;             // pour vérifier le nombre de barres disponibles
   datetime tmp_time[1];            // tableau pour vérifier l'heure de la barre
   
   f_comment("Il y a une synchronisation en cours.);
     
   for(int i=0; i<count_symbol; i++)  {
      //Imprimer("i=",i," ",count_symbol," ",mas[i]) ;
      tmp_bars=Bars(mas[i],PERIOD_CURRENT);
      if(tmp_bars<count_Bars) { // vérifier le nombre de barres
         Print("i=",i,"Pas assez de bars (", mas[i],"-",fTimeFrameName(_Period),") MaxBars=",MaxBars," > Bars=",tmp_bars);
         counter++;
      }
      ResetLastError();
      copied = CopyTime(mas[i],PERIOD_CURRENT,0,1,tmp_time);
      if(copied < 1) { // erreur de copie
         Print("i=",i,"Erreur de copie (", mas[i],"-",fTimeFrameName(_Period),") №",_LastError," (",ErrorDescription(_LastError),")");
         counter++;
      }
      if(tmp_time[0]!=time_0) { // l'heure ne correspond pas
         Print("i=",i,"Pas de synchronisation horaire (", mas[i],"-",fTimeFrameName(_Period),") delta ="",(long)(time_0-tmp_time[0])/60," min");
         counter++;
      }
   }// fin for(int i=0 ; i<k ; i++)
   
   if(counter==0) {  // tout va bien, pas d'erreur
      rez=true;
      f_comment("Tout. D'accord.");
   } 
   else f_comment("Il n'y a pas de synchronisation.+(string)counter);

   ChartRedraw( );
   return(rez);
}

J'ai sélectionné 12 paires qui seront au championnat. J'ai créé un indicateur RVI_ALL uniquement dans le but d'étudier la synchronisation. Je l'ai lancé. Résultat.

30.05.2010 16:55:26 RVI_ALL (EURUSD,M1) i= 10 Pas de synchronisation temporelle ( GBPJPY - M1 ) delta = 1 min

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 5 Pas de synchronisation temporelle ( AUDUSD - M1 ) delta = 1 min

2010.05.30 16:55:26 RVI_ALL (EURUSD,M1) i= 1 Pas de synchronisation temporelle ( GBPUSD - M1 ) delta = 1 min

Nous sommes dimanche, il n'y a pas de barres (dernière barre) sur ces symboles. Le prochain tick, seulement le lundi. Puis je me suis souvenu de cet article graphique sans trous https://www.mql5.com/fr/articles/1407.

Et il y aura des trous. Il y en aura. Nous devons les combattre d'une manière ou d'une autre. En principe, vous pouvez faire la même chose que ce qui est décrit dans l'article. Mais j'ai une question.

L'indicateur est accroché à un seul graphique. Et s'il y a un échange d'historique sur ce symbole, je peux le découvrir, prev_calculated sera remis à zéro.

Mais comment puis-je savoir si les autres symboles ont eu un échange d'historique ou si les données sont arrivées avec un long délai ?

 
Prival:

Et il y aura des trous. Il y aura des trous. Il faut les traiter d'une manière ou d'une autre. En principe, vous pouvez faire la même chose que ce qui est décrit dans l'article. Mais j'ai une question.

L'indicateur est suspendu à un seul graphique. Et s'il y a eu un échange d'historique sur ce symbole, je peux le découvrir, prev_calculated sera remis à zéro.

Mais comment puis-je savoir si les autres symboles ont fait l'objet d'un échange d'historique ou si les données sont arrivées avec un long délai ?


1 Soit ne pas permettre à l'indicateur d'être dessiné s'il y a un trou dans l'historique et interroger périodiquement l'historique au moment de "réparer" le trou. (Un nouveau tick sur le graphique actuel ou un timer).

2. soit dessiner l'indicateur seulement jusqu'au trou, à condition que le trou dans l'historique soit suffisamment éloigné.

et modifier légèrement cette fonction

bool init_tf(string &mas[], datetime time_0, int count_Bars, int shift) 
и далее по тексту 
copied = CopyTime(mas[i],PERIOD_CURRENT,shift,1,tmp_time);


Puis appeler cette fonction dans une boucle (de 0 à shiftbars).

Dans ce cas

shift

ce sera la position de la barre sur l'instrument courant et TF, dont on vérifie la synchronisation avec les autres instruments.

 

Je n'ai aucun moyen de savoir qu'il y a un trou dans l'histoire.

https://www.mql5.com/ru/forum/1111/8747#comment_8747

La seule solution consiste à copier l'heure et à parcourir en boucle l'ensemble du tableau, mais cela peut également s'avérer fastidieux, c'est un cercle vicieux ( (()

Si les développeurs ne modifient pas le concept de https://www.mql5.com/fr/articles/1407 pour créer des tableaux sans trous, il pourrait s'avérer impossible de tout synchroniser.

 
Prival:

Je n'ai aucun moyen de savoir qu'il y a un trou dans l'histoire.

https://www.mql5.com/ru/forum/1111/8747#comment_8747

La seule solution consiste à copier l'heure et à parcourir en boucle l'ensemble du tableau, mais cela peut également s'avérer fastidieux, c'est un cercle vicieux ( (()

Si les développeurs ne modifient pas le concept de https://www.mql5.com/fr/articles/1407 pour créer des tableaux sans trous, il pourrait s'avérer impossible de tout synchroniser.

Utilisez la synchronisation par tampons time[] et il n'y aura pas de confusion.

Un simple appel de citation devrait être accompagné d'une pré-vérification par le temps, et tout sera alors synchronisé.

Bien que je reconnaisse que le chemin n'est pas facile et qu'il peut y avoir beaucoup d'erreurs.

 

Bonjour !

J'ai des doutes sur l'exactitude de la formule de l'indice du dollar, peut-être sont-ils faux

Quelqu'un pourrait-il expliquer cette formule plus en détail et comment elle a été élaborée ?

 


"Le dollar index est une valeur de type double calculée à l'aide d'une formule qui m'a été aimablement fournie par Neutron."

Pourquoi citer des formules et faire référence au nom de quelqu'un d'autre ? A-t-il sept yeux dans la tête ? Il s'avère qu'il faut d'abord lire l'article, puis demander aux auteurs des formules ? S'il est l'auteur, alors donnez le lien où il l'obtient.