L'EOP pour les écoliers. - page 9

 
Dmitry Fedoseev:

Si l'indicateur est calculé de la gauche vers la droite, alors si quelque chose se produit, par exemple, une fractale se forme, vous devez stocker l'indice de la barre avec cet événement (pour l'utiliser pour autre chose). Si l'indexation se fait de droite à gauche, il faut calculer n=Barres-i et retenir n, puis faire l'inverse : i=Barres-n. Mais si vous indexez de gauche à droite, vous devez simplement sauvegarder l'index et l'utiliser, il ne changera pas. Comme cela est toujours nécessaire dans les indicateurs plus ou moins complexes, l'indexation de gauche à droite est d'une grande aide pour les développeurs d'indicateurs.

Une fois que j'ai commencé à écrire un indicateur dans mql4, j'en ai écrit 1/3, un autre 1/3 était basé sur les résultats du premier et la troisième partie était basée sur les valeurs du deuxième tiers. J'ai rencontré un gros problème lors du calcul de la barre avec la valeur nécessaire. Mais il se trouve que le client a disparu et que je n'ai pas fini de l'écrire. Et quand on indexe à droite le numéro de barre est inchangé, il suffit d'écrire le numéro de barre dans le tableau auxiliaire et seul ce tableau doit être exécuté pour construire la deuxième et la troisième partie...

 
Dmitry Fedoseev:

Si l'indicateur est calculé de la gauche vers la droite, alors si un événement s'est produit, par exemple la formation d'une fractale, il est nécessaire de mémoriser l'indice de la barre avec cet événement (pour l'utiliser pour autre chose). Si l'indexation se fait de droite à gauche, il faut calculer n=Barres-i et retenir n, puis faire l'inverse : i=Barres-n. Mais si vous indexez de gauche à droite, vous devez simplement sauvegarder l'index et l'utiliser, il ne changera pas. Comme cela est toujours nécessaire dans les indicateurs plus ou moins compliqués, l'indexation de gauche à droite est d'une grande aide pour les développeurs d'indicateurs.

Pourquoi pas. Et ensuite le terminal télécharge l'historique et quoi ?
 
Ihor Herasko:

Voici un exemple.

Merci, mais

  1. Malheureusement, c'est à quatre pattes.
  2. Je voudrais un exemple clair de connexion d'un tel indicateur sans iCustom ;)))
 
Vladimir Simakov:
Oh, mon garçon. Et ensuite le terminal télécharge l'historique et quoi ?

Ce n'est pas grave. Vous devez juste oublier l'approche à quatre voies.

   int counted_bars=IndicatorCounted();
   int i,r,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = Bars-counted_bars;
         if (ArrayRange(working,0) != Bars) ArrayResize(working,Bars);

   //
   //
   //
   //
   //
        
   for(i=limit, r=Bars-i-1; i >= 0; i--,r++)

Et faites comme ça.

if(rates_total-prev_calculated > 1)
 {
  // Если это первый запуск или подгрузилась история пересчитаем весь индикатор.
 }
if(rates_total-prev_calculated >= 0)
 {
  // Пересчитаем только последнее изменение.
 }
 
#include <Indicators/Indicators.mqh>

CiADX adx;

int OnInit()
  {

   if(!adx.Create(Symbol(),Period(),14)){
      return(INIT_FAILED);
   }

   OnTick(); // это только для этого примера, чтобы на выходных сработало

   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
   double buf[];
   
   if(adx.GetData(0,1,0,buf)==-1){
      return;
   }

   Comment(buf[0]);
   
  }
 
Vladimir Simakov:
Oh, oui. Et ensuite le terminal a téléchargé l'historique et quoi ?

D'où venez-vous et pourquoi êtes-vous ici ? Avez-vous écrit un seul indicateur pour MT4 ou MT5 ? Vous devriez au moins connaître les bases de l'écriture d'indicateurs pour MetaTrader.

 
Dmitry Fedoseev:

Parce qu'ils n'ont jamais écrit d'indicateurs complexes mais rapides, sinon l'indexation de gauche à droite aurait été une solution très importante.

Si vous avez besoin d'un indicateur rapide pour un EA, il est préférable de placer la partie calcul directement dans l'EA.

 
Alexey Volchanskiy:

Si vous avez besoin d'un indicateur rapide pour l'EA, il est plus rentable d'insérer la partie calcul directement dans l'EA.

Pas moyen... Parlez-en à vos copines, pour le bien de la brutalité.

 
Dmitry Fedoseev:

D'où venez-vous et pourquoi êtes-vous ici ? Avez-vous écrit un seul indicateur pour MT4 ou MT5 ? Vous devez au moins connaître les bases de l'écriture d'indicateurs pour MetaTrader.

Dimitri est en colère, il n'a pas encore bu))))

 
Jel'ai un peu corrigé. GetData() doit être vérifié pour l'inégalité -1.
Raison: