Erreurs, bugs, questions - page 1868

 
kaus_bonus:

construire 1589

OnDeinit n'est pas appelé.
 
Qu'est-ce que tu veux dire ?
fxsaber:
OnDeinit n'est pas appelé.

Que voulez-vous dire ? Pas du tout appelé, ou dans ce code ?

 
kaus_bonus:

construire 1589

Comment faire en sorte que OnTimer dans un indicateur cesse de fonctionner lorsque le compte/courtier change, s'il n'a pas un tel ticker, ou s'il n'est pas ajouté à l'aperçu du marché, sans utiliser IndicatorDelete ?

Errata dans la documentation - il n'y a pas de fonction IndicatorDelete, il y a ChartIndicatorDelete !

https://www.mql5.com/ru/docs/standardlibrary/cchart/cchartindicatordelete

La situation est la suivante : j'exécute l'indicateur ci-joint sur les contrats à terme. Je passe à un autre courtier, mais le compteur continue de tourner, bien que le graphique devienne noir et ne se mette pas à jour.

il n'écrit pas la raison de la désinitialisation

REASON_ACCOUNT

6

Un autre compte est activé ou la reconnexion à un serveur commercial a été provoquée par une modification des paramètres du compte.



Chargement et déchargement des indicateurs

Les indicateurs sont téléchargés dans les cas suivants

  • Attacher un indicateur à un graphique
  • démarrage du terminal (si un indicateur a été attaché à un graphique avant que le terminal ne soit fermé précédemment)
  • chargement d'un modèle (si un indicateur est attaché à un graphique)
  • Changement de profil (si l'indicateur est attaché à l'un des graphiques de profil) ;
  • changement du symbole et/ou de la période du graphique, auquel l'indicateur est attaché ;
  • après la recompilation réussie d'un indicateur, si cet indicateur a été attaché à un graphique.
  • modification desparamètres d'entrée de l'indicateur.

Les indicateurs sont déchargés dans les cas suivants

  • lorsque l'indicateur est détaché du graphique ;
  • fermeture du terminal (si un indicateur a été attaché à un graphique)
  • chargement d'un modèle si un indicateur est attaché à un graphique ;
  • fermer le graphique auquel l'indicateur a été attaché
  • changement de profil, si l'indicateur est attaché à l'un des graphiques du profil à modifier ;
  • changement du symbole et/ou de la période du graphique, auquel l'indicateur est attaché ;
  • modification des paramètres d'entrée de l'indicateur.


La raison pour laquelle "changement de compte" n'existe pas, cela signifie que l'indicateur n'est pas déchargé lors du changement de compte et par conséquent OnDeinit() pour l'indicateur, lorsque vous changez de compte commercial ne le sera pas non plus.

 
kaus_bonus:

Que voulez-vous dire ? Pas du tout appelé, ou dans ce code ?

Dans votre situation.
 
Vladimir Karputov:

Indicateurs de chargement et de déchargement


Les indicateurs sont déchargés dans les cas suivants

  • lorsque l'indicateur est détaché du graphique ;
  • fermeture du terminal (si un indicateur est attaché à un graphique)
  • chargement d'un modèle, si un indicateur est attaché au graphique
  • fermer le graphique auquel l'indicateur a été attaché
  • changement de profil, si l'indicateur est attaché à l'un des graphiques du profil à modifier ;
  • changement du symbole et/ou de la période du graphique, auquel l'indicateur est attaché ;
  • modification des paramètres d'entrée de l'indicateur.


La raison pour laquelle "account switch" n'existe pas, cela signifie que l'indicateur n'est pas déchargé lors du changement de compte et par conséquent il n'y aura pas de OnDeinit() pour l'indicateur lorsque vous changez de compte de trading.

En fait, la raison que j'ai mentionnée ne fonctionne que pour les conseillers experts.

Коды причины деинициализации эксперта ....

La question demeure alors : comment faire en sorte que le minuteur cesse de fonctionner sans supprimer radicalement l'indicateur du graphique ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Причины деинициализации - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
kaus_bonus:

En fait, la raison que j'ai mentionnée ne fonctionne que pour les experts.

La question demeure alors : comment faire en sorte que le minuteur cesse de fonctionner sans supprimer radicalement l'indicateur du graphique ?


Dans OnInit() mémoriser le score. Dans le minuteur, vérifiez le numéro de compte. Si le score a changé, quittez le chronomètre.
 
kaus_bonus:

La question reste alors posée : comment faire pour que le minuteur cesse de fonctionner sans supprimer radicalement l'indicateur du graphique ?

Utilisez ACCOUNT_LOGIN et ACCOUNT_SERVER.
 

vous ne pensez pas que c'est une solution tordue ? !

supposons que nous fassionsACCOUNT_LOGIN!=ACCOUNT_LOGIN_NEW, que nous arrêtions le minuteur, puis que nous retournions sur ce compte, que se passe-t-il ? le minuteur ne redémarre pas ?

il est plus facile d'ajouter la raison "changement de compte" aux indicateurs de la même manière, ou est-ce que je me trompe d'une manière ou d'une autre et cela entraînera des difficultés ?

 
kaus_bonus:

vous devez admettre que c'est une solution tordue !

C'est un coup de cheval !

Supposons que nous fassionsACCOUNT_LOGIN!=ACCOUNT_LOGIN_NEW, que nous arrêtions la minuterie, puis que nous revenions à ce compte, que se passe-t-il ?

Lorsqu'un changement de compte est détecté, vous vous souvenez déjà des nouvelles caractéristiques.

Vous pouvez le concevoir comme une petite bibliothèque sur le principe qu'ici(macros). Alors les trucs "tordus" ne seront plus une nuisance.

 
fxsaber:

C'est un coup de cheval !

Lorsqu'un changement de compte est détecté, mémorisez les nouvelles caractéristiques.

Vous pouvez en faire une petite bibliothèque sur le modèle de ce qui se trouve ici(macros). Alors les trucs "tordus" ne seront plus une nuisance.


Merci pour les réponses) je ne sais pas comment faire) c'est plus facile d'utiliser une faucille sur ...

puis ré-exécuter l'indicateur)