Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Quand vous changez lef.
Si les indicateurs ont des déchets dans leurs tampons provenant de l'ancienne période, cela peut également affecter les temporisations.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Nouvelle version de MetaTrader 4 build 1065
Sergey Klimov, 2017.04.14 16:34
Lors du passage d'un compte à l'autre, la variable _Digits de l'indicateur ne change pas.
C'est plus joli.
C'est plus joli.
Ceci s'adresse à ceux qui parlent de la bonne cohérence dans MT4.
Regardez et comprenez que tout n'est pas si beau dans MT4.
La file d'attente est sans ambiguïté.
Eh bien, où est-ce sans ambiguïté ?
Essayez cet exemple primitif. Vous comprendrez le caractère "unique" en changeant de TF.
Dans cet exemple, un objet avec les coordonnées de l'heure et du prix actuels est créé dans OnInit. Dans OnCalculate, cet objet se déplace en même temps que le prix.
Dans OnDeinit, il est simplement (logiquement) supprimé.
Lorsque l'on change de TF, l'objet apparaît puis disparaît.
Pourquoi cela se produit-il ?
Parce que parfois OnDeinit de l'ancienne TF supprime quelque chose qui a déjà été créé dans OnInit de la nouvelle TF. Ce n'est pas un bug ! Que doit penser le programmeur qui a créé cet exemple et qui n'a pas lu cette branche ?
Eh bien, où est elle seule.
La minuterie y était mentionnée.
Quelle est la différence ? Vous pouvez mettre EventSetTimer dans Unite au lieu de la création d'objet, et mettre EventKillTimer dans Deunite au lieu de la suppression d'objet. Et cela ne réduira pas l'incertitude, parce que le minuteur sera tué par la Deunite de l'ancienne TF, et parfois il ne le sera pas. Et ce sera encore pire, car au moins vous pouvez voir l'objet, mais vous ne pouvez pas voir la minuterie - qu'elle fonctionne ou non.
Peut-être qu'ils l'ont déjà inventé, qu'ils n'ont pas tout lu. Si l'indicateur crée un panneau, vous pouvez utiliser la variable globale du terminal, augmenter sa valeur de 1 dans init et l'utiliser comme un additif aux noms des objets graphiques.
Ma tâche était différente - sauvegarder les paramètres du panneau, pour cela j'ai créé des variables globales du terminal dans deinit. La solution est simple - créer des variables globales du terminal dans l'inite et mettre à jour chacune d'entre elles lorsque les paramètres changent dans le panneau graphique. Ne supprimer les variables dans deinit que si la désinitialisation est causée par la suppression de l'indicateur.
Si l'indicateur crée un panneau, vous pouvez utiliser une variable globale du terminal, augmenter sa valeur de 1 et l'utiliser comme un ajout aux noms des objets graphiques.
Que doit penser le programmeur qui a créé cet exemple et qui n'a pas lu ce fil de discussion ?
Je suis tout à fait d'accord. Les non-lecteurs ne connaîtront pas cette fonctionnalité et perdront leur temps à essayer de la comprendre. Et ce serait des centaines de personnes... ...surtout ceux qui sont débutants.
Il suffit de corriger un bug une fois et c'est tout.
Quelle est la différence ? Vous pouvez mettre EventSetTimer dans Unite au lieu de la création d'objet, et mettre EventKillTimer dans Deunite au lieu de la suppression d'objet. Cela ne réduira pas l'incertitude, parce que le chronomètre sera tué par la désunion de l'ancienne TF, et parfois non. Et ce serait encore pire, car au moins vous pouvez voir l'objet, mais vous ne pouvez pas voir si la minuterie fonctionne ou non.
Ce ne sont que des béquilles. Il suffit de passer la bonne commande dans le terminal et c'est tout. Il faut d'abord désinitialiser l'instance précédente, et seulement ensuite initialiser la nouvelle.
Je suis tout à fait d'accord. Les non-lecteurs ne connaîtront pas cette fonctionnalité et perdront leur temps à essayer de la comprendre. Et ce serait des centaines de personnes... particulièrement désolé pour les débutants.
Tout ce que vous avez à faire est de corriger le bug une fois et c'est tout.
C'est de ça que je parle !
Je suis personnellement sur une lancée, car j'ai l'impression d'avoir un avantage sur la plupart des gens, car je sais comment faire face à tout cela, pas seulement en paroles, mais aussi en actes. J'ai déjà apporté des correctifs et ajouté des béquilles à mes programmes.
Je ne comprends pas pourquoi les développeurs refusent obstinément de considérer cette "fonctionnalité" comme un bogue.
Par exemple :
Les indicateurs doivent être utilisés conformément à leur objectif.
En d'autres termes, la séquence d'exécution de l'indicateur OnInit et OnDeinit lorsque la période de symbole dugraphique a changé ne devrait préoccuper personne.
Mais dans mon exemple avec le gif animé ci-dessus, il y a un bug certain pour un programmeur qui n'a pas lu ce sujet ! Qu'est-ce qui n'est pas fait selon l'objectif prévu ?