Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 444

 
mila.com:

le conseiller a été fait pour vérifier la possibilité elle-même, il s'ouvre correctement, mais dans l'indicateur il ne voit pas du tout les valeurs des deux buffers proches de l'indicateur "Arrow v.3".

Vous avez donc un indicateur en dehors du tableau dans la boucle. Regardez quelle limite, et quelles valeurs il y a dans les boucles imbriquées. À quoi l'index il se réfère lorsque la limite == taux_total-2 ?

 
mila.com:

Comment le voyez-vous ?

Voir votre code

 
Artyom Trishkin:

Voyez quelle est la limite, et quelles sont les valeurs dans les cycles imbriqués.

imprime le numéro de barre de la première et de la deuxième flèche, en alternance.

  for(int i=limit; i>=0; i--) 
     {
     for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE
            )
           {
            num_buy=il;
            Print(il);
           // break;
           }
        }
//
      if(num_buy==60)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
    }
 
Artyom Trishkin:

Vérifiez votre code

Cela fait trois jours que je le regarde, je ne sais pas ce qui ne va pas).

Aidez-moi
 
mila.com:

imprime le numéro de barre de la première et de la deuxième flèche, en alternance.

Quel genre de cycle bizarre est-ce de toute façon ?

Pourquoi aller du début à la fin de l'histoire et revenir trois cents mesures en arrière dans une boucle imbriquée à chaque itération de la première boucle ?

Vous êtes probablement sauvé par iCustom(), qui ne donne pas de valeurs en dehors des données de l'historique.

Eh bien, regardez par vous-même. Supposons que vous ayez un historique de seulement 1000 barres : rates_total dans ce cas vous avez 1000. Limite, 1000-2=998. Ainsi, la première barre d'historique est exclue de la boucle. Ne t'inquiète pas pour ça.

Vous mettez d'abord un indice sur la barre avec le numéro 998 (taux_total-2 = 1000-2 = 998),

et ensuite, que faites-vous ? Puis vous intégrez la boucle à partir de la valeur i, égale à 998+1=999 - c'est la première mesure de l'histoire - il n'y a plus rien à gauche - c'est vide. Et vous faites la boucle de 999 à 999+300. Il n'y a pas de données ici - c'est en dehors du tableau.

Ainsi, la limite dans cette situation devrait être telle que la boucle intégrée au tout début atteigne la barre 999. Il s'agit de rates_total-2-300. Puis, puisque vous commencez la boucle imbriquée à partir de i+1, c'est à ce moment-là qu'il n'y aura pas de dépassement du tableau : i=1000-2-300 = 698. Dans la boucle imbriquée, li=i+1 = 698+1=699, et jusqu'à li=i+300 = 698+300=998. Là encore, la toute première barre est exclue du calcul. Mais il n'y a pas de dépassement du tableau.

Apparemment, vous ne savez pas vraiment ce que vous faites.

Ceci est indiqué par une boucle très étrange en général.

Vous n'avez pas besoin de boucles imbriquées ici. Si vous cherchez un certain nombre de valeurs dans le tampon de l'indicateur personnalisé, faites le cycle de zéro à une certaine valeur. Mais pas plus que le taux_total.

 
Artyom Trishkin:

Quel genre de cycle bizarre est-ce de toute façon ?

Pourquoi aller du début à la fin de l'histoire et revenir trois cents mesures en arrière dans une boucle imbriquée à chaque itération de la première boucle ?

Vous êtes probablement sauvé par iCustom(), qui ne donne pas de valeurs en dehors des données de l'historique.

Eh bien, regardez par vous-même. Supposons que vous ayez un historique de seulement 1000 barres : rates_total dans ce cas vous avez 1000. Limite, 1000-2=998. Ainsi, la première barre d'historique est exclue de la boucle. Laisse faire.

Vous mettez d'abord un indice sur la barre avec le numéro 998 (taux_total-2 = 1000-2 = 998),

et ensuite, que faites-vous ? Puis vous intégrez la boucle à partir de la valeur i, égale à 998+1=999 - c'est la première mesure de l'histoire - il n'y a plus rien à gauche - c'est vide. Et vous faites la boucle de 999 à 999+300. Il n'y a pas de données ici - c'est en dehors du tableau.

Ainsi, la limite dans cette situation devrait être telle que la boucle intégrée au tout début atteigne la barre 999. Il s'agit de rates_total-2-300. Puis, puisque vous commencez la boucle imbriquée à partir de i+1, c'est à ce moment-là que vous ne dépasserez pas le tableau : i=1000-2-300 = 698. Dans la boucle imbriquée, li=i+1 = 698+1=699, et jusqu'à li=i+300 = 698+300=998. Là encore, la toute première barre est exclue du calcul. Mais il n'y a pas de dépassement du tableau.

Apparemment, vous ne savez pas vraiment ce que vous faites.

Ceci est indiqué par une boucle très étrange en général.


Merci, c'est très clair.

 
Artyom Trishkin:

Ceci est indiqué par une boucle très étrange en général.

Vous n'avez pas besoin de boucles imbriquées ici. Si vous recherchez un certain nombre de valeurs de tampon d'indicateur personnalisé, faites une boucle de zéro à une certaine valeur. Mais pas plus que le taux_total.

Pourquoi à partir de zéro ?

J'ai besoin de mettre un point si sur la troisième ou "N" barre il y a une flèche de l'indicateur appelé. Sur l'ensemble de l'histoire

Quel est le cycle correct ?

 
mila.com:

Pourquoi à partir de zéro ?

J'ai besoin de savoir s'il y a une flèche sur la troisième ou "N" barre de l'indicateur à appeler. Sur l'ensemble de l'histoire.

Quel est le cycle correct ?

Où cela doit-il être fait ? Dans un indicateur ? Dans une EA ?

 
Artyom Trishkin:

Où cela doit-il être fait ? Dans un indicateur ? Dans une EA ?

Dans un indicateur

 
mila.com:

Dans l'indicateur

Donc, lisez iCustom() à droite de l'index de la première boucle.

Une autre question est que vous avez besoin des données de la barre actuelle vers la gauche. C'est pourquoi je dis - lisez de zéro à la valeur trouvée, mais pas plus que rates_total-1.

Et en lecture seule lorsque la limite>1

Sinon, il n'y a pas de nouvelles données et l'indice de la barre dont vous avez besoin ne changera pas.

Raison: