Erreurs, bugs, questions - page 758

 
Oui, maintenant ils ont quatre secondes d'avance.
 
Pourquoi le point médian disparaît-il lorsque la ligne de tendance change de position ?
 

Bonjour !

J'ai besoin de voir graphiquement comment la valeur d'une certaine variable change sur chaque barre pendant un test visuel, c'est-à-dire que je dois construire un graphique séparé dans une sous-fenêtre. Par exemple, je veux voir un graphique des variations des actions sur chaque barre dans une fenêtre séparée sous le graphique.

Que dois-je faire ? Dois-je écrire un indicateur, l'attacher au graphique et lui transmettre les valeurs des variables de l'EA via les variables globales du terminal ? Ou bien il y a une "meilleure" façon de faire ?

Merci d'avance.

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
Alex5757000:

Bonjour !

J'ai besoin de voir graphiquement comment la valeur d'une certaine variable change sur chaque barre pendant un test visuel, c'est-à-dire que je dois construire un graphique séparé dans une sous-fenêtre. Par exemple, je veux voir un graphique des variations des actions sur chaque barre dans une fenêtre séparée sous le graphique.

Que dois-je faire ? Dois-je écrire un indicateur, l'attacher au graphique et lui transmettre les valeurs des variables de l'EA via les variables globales du terminal ? Ou bien il y a une "meilleure" façon de faire ?

Merci d'avance.

Pas du tout, vous pouvez obtenir les valeurs d'équité ou de solde directement dans l'indicateur.

Définissez les paramètres du tampon de l'indicateur en le dessinant comme un graphique à barres.

Et écrire les quatre valeurs dans les tampons appropriés,

Ouverture à l'ouverture de la barre, haut bas et dynamique (la dernière barre).

cela ressemble à ceci : dans la pièce jointe

Bien sûr, vous pouvez également utiliser la valeur absolue (option recommandée), mais je ne pense pas qu'elle montre les petits incréments initiaux, donc je pense que la différence entre les valeurs initiales et actuelles est meilleure.

ZS, mais non, l'échelle est dynamique donc vous pouvez faire la deuxième option, c'est tout à fait lisible.

Dossiers :
 
Urain:

Pas du tout, vous pouvez obtenir les valeurs d'équité ou de solde directement dans l'indicateur.

Définissez les paramètres pour dessiner le tampon de l'indicateur comme un graphique à barres.

et écrire les quatre valeurs dans les tampons correspondants,

ouverture à l'ouverture de la barre, haut bas et fermeture de manière dynamique (dernière barre).

Valeurs d'équité et de solde - oui, mais que faire si je veux voir la valeur d'une variable calculée dans l'EA ?
 
 
Alex5757000:
Les valeurs d'équité et de solde, oui, mais que faire si je veux voir la valeur d'une variable calculée dans un EA ?

Vous pouvez le faire via un événement personnalisé, mais n'oubliez pas de mettre à jour le graphique après l'événement,

car le tic-tac vient avant le traitement de l'événement, par ordre de priorité.

Mais il est possible de le faire avec des globaux, mais il y a le même problème - le tick est déjà venu et la variable est encore en cours de traitement dans l'EA (ses changements sont en cours de préparation), bien sûr, les données seront reçues, mais il y aura un retard sur un tick, il est encore plus correct dans l'événement, il ya un endroit pour mettre à jour le graphique après le fait, quand vous savez déjà avec certitude que la variable a les données réelles.

 

Ce code ne compile pas avec l'erreur "'return' - structure has objects and cannot be copied" à cause de l'arrêt"CTest getCopy(void) {CTest res ; return res;}".

Ce problème peut être résolu de deux manières :

1) remplacer"class" par"struct".

2) décommenter le stopka avec un opérateur d'affectation surchargé.

Il faut donc que le rôle du constructeur de copie soit joué par un opérateur d'affectation surchargé ? Pourquoi alors n'est-elle pas mentionnée dans le livre de référence, sauf pour un exemple de classe matricielle (dont l'analyse détaillée m'a d'ailleurs permis de trouver l'erreur dans mon code) ?

class CTest
  {
public:
    CTest(void): cnt(0) {}
   ~CTest(void) {}
    CTest(const CTest& T) {cnt = T.cnt;} // copy constructor
    //------------------------
    CTest getCopy(void) {CTest res; return res;} 
    //------------------------
    //CTest* operator=(const CTest& T) {cnt = T.cnt; return GetPointer(this);}
private:
         int cnt;
  };
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
  • www.mql5.com
Основы языка / Операторы / Оператор-выражение - Документация по MQL5
 
WWer:

Ce code ne compile pas avec l'erreur "'return' - structure has objects and cannot be copied" à cause de l'arrêt"CTest getCopy(void) {CTest res ; return res;}".

Bien entendu, un objet ne peut pas être renvoyé par les fonctions.(Contrairement aux structures.) C'est documenté.


Ce problème peut être résolu de deux manières :

1) remplacer"class" par"struct".

Voir ci-dessus.

2) décommenter le stopka avec un opérateur d'affectation surchargé.

Bien sûr, l'opérateur surchargé renvoie un pointeur de poignée, ce qui est normal. Maintenant, ce n'est pas l'objet renvoyé par la fonction getCopy() mais le pointeur (le retour de la fonction est une affectation implicite) qui rend le code correct.

// Seulement syntaxiquement correct.

// Le retour d'une variable non initialisée de la fonction getCopy() ne sert, je l'espère, qu'à démontrer le problème de syntaxe et ne prétend pas être raisonnable.

Il faudrait donc que le rôle du constructeur de copie soit joué par un opérateur d'affectation surchargé ?

Hum... Qu'est-ce que les rôles ont à voir là-dedans ? Vous pouvez surcharger l'opérateur d'affectation comme vous le souhaitez et écrire le constructeur de copie correctement. L'erreur dans votre cas est ailleurs.


Pourquoi n'est-il pas mentionné dans le livre de référence, à l'exception d'un exemple de classe matricielle (dont l'analyse détaillée m'a d'ailleurs aidé à trouver l'erreur dans mon code) ?

Parce que le 11 février 2096785 avant J.-C., le dinosaure Vassia a accidentellement marché sur le lézard Clava. Cela a provoqué une longue chaîne de causes et de conséquences, qui a conduit à la situation actuelle. On n'y peut rien.

;)

 
MetaDriver:// Le renvoi d'une variable non initialisée par la fonction getCopy() ne sert, espérons-le, qu'à démontrer le problème de syntaxe, et ne prétend pas être raisonnable.

Pourquoi doit-il être initialisé ? Il s'agit d'une instance d'une classe qui possède un constructeur dans ce but précis.

MetaDriver:
Hum... Qu'est-ce que les rôles ont à voir là-dedans ? Vous pouvez surcharger l'opérateur d'affectation comme vous le souhaitez et écrire le constructeur de copie correctement. Votre erreur se situe à un tout autre endroit.

Et ensuite, comment écrire un constructeur de copie correct dans ce but ?