Question sur l'objetget et l'objetgetvaluebyshift - page 2

 
honest_knave:

Bonjour, veuillez utiliser le bouton SRC lorsque vous postez du code.

Tout le code en jaune est en dehors de la boucle 'for'.

Ainsi, la valeur de 'name' est toujours le nom de l'objet final.


Essayez peut-être ceci (en supposant que prix1 et prix2 sont déjà déclarés ailleurs) :

Merci beaucoup pour votre aide. Comment imprimer pour voir le prix1... dans le journal pour s'assurer que cela fonctionne.
 
Rajakumar1:
Merci beaucoup pour votre aide. Comment imprimer pour voir le prix1... dans le journal pour s'assurer que cela fonctionne.
De la même façon que vous imprimez le nom...
int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
         Print("price1: ", price1);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
         Print("price2: ", price2);
        }
     }
 
honest_knave:
De la même façon que vous imprimez le nom...
Merci. J'ai la commande d'impression dans l'EA. Elle n'est pas imprimée dans le journal. Où est-ce qu'il imprime la sortie ?
 
Rajakumar1:
Merci. J'ai la commande d'impression dans l'EA. Elle n'est pas imprimée dans le journal. Où imprime-t-elle la sortie ?

Experts (onglet à gauche du Journal)
 
honest_knave:

Experts (onglet à gauche du Journal)
J'ai un indicateur qui dessine des lignes de tendance. L'EA est basé sur les lignes de tendance tracées par l'indicateur. Y a-t-il un moyen de vérifier pourquoi il n'imprime pas les valeurs ? Je joins les fichiers. Désolé de vous déranger. Merci pour votre aide.
 
Rajakumar1:
J'ai un indicateur qui dessine des lignes de tendance. L'EA est basé sur les lignes de tendance tracées par l'indicateur. Y a-t-il un moyen de vérifier pourquoi il n'imprime pas les valeurs ? Je joins les fichiers. Désolé de vous déranger. Merci pour votre aide.


Vous devrez parcourir votre code en ajoutant des instructions d'impression à différents endroits.

De cette façon, vous pourrez localiser votre problème.

Vous devez rechercher les fonctions qui ne sont pas appelées, ou les valeurs inattendues des variables.

Cela prendra un certain temps, mais c'est quelque chose que vous pouvez faire vous-même.

Par exemple, j'ai un EA avec une variable qui augmente de 1 à chaque tick.

Je ne sais pas pourquoi parfois la variable est remise à 0.


#property strict

int myVariable;

int OnInit()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
   EventSetTimer(5);
   return(INIT_SUCCEEDED);
  }

void OnTimer()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }

void OnTick()
  {
   myVariable++;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }


Et la sortie :




Je peux voir que la variable myVariable augmente de 1 à chaque tick, mais OnTimer() la remet à zéro.

Je sais maintenant où se situe le problème.

----

Vous pouvez aussi essayer d'utiliser la fonction de débogage intégrée à MetaEditor, bien que certains utilisateurs aient signalé des problèmes avec cette fonction... YMMV

 
honest_knave:


Vous devrez parcourir votre code en ajoutant des instructions Print à différents endroits.

De cette façon, vous pourrez localiser votre problème.

Vous devez rechercher les fonctions qui ne sont pas appelées, ou les valeurs inattendues des variables.

Cela prendra un certain temps, mais c'est quelque chose que vous pouvez faire vous-même.

Par exemple, j'ai un EA avec une variable qui augmente de 1 à chaque tick.

Je ne sais pas pourquoi parfois la variable est remise à 0.



Et la sortie :

Merci. Dois-je supprimer les fichiers ?



Je peux voir que la variable myVariable augmente de 1 à chaque tick, mais que OnTimer() la remet à zéro.

Je sais maintenant où se situe le problème.

----

Vous pouvez aussi essayer d'utiliser la fonction de débogage intégrée à MetaEditor, bien que certains utilisateurs aient signalé des problèmes avec cette fonction... YMMV

 
Rajakumar1:
Merci. Dois-je supprimer les fichiers ?
 
Rajakumar1:
Merci. Dois-je supprimer les fichiers ?


C'est votre décision - il y a près de 800 lignes de code entre ces 2 indicateurs... quelqu'un aura peut-être le temps de les parcourir pour vous.

Mais vous obtiendrez peut-être une solution plus rapide en commençant par circonscrire le problème vous-même.

Bonne chance


 
honest_knave:


C'est votre décision - il y a près de 800 lignes de code entre ces 2 indicateurs... quelqu'un aura peut-être le temps de les parcourir pour vous.

Mais vous obtiendrez peut-être une solution plus rapide en commençant par circonscrire le problème vous-même.

Bonne chance


Merci beaucoup pour votre aide. Où regarder en premier ? L'éditeur Meta n'affiche que des avertissements. Aucune erreur.

Raison: