Questions des débutants MQL5 MT5 MetaTrader 5 - page 330

 
ramis866:
Quelqu'un peut-il me dire comment utiliser les EA ?
Voir l'aide : mise en place et fonctionnement des EA.
 
Les gars ! Lorsque l'horizon temporel est modifié, l'EA est redémarré. En conséquence, il renvoie tous ses graphiques dessinés à la vue par défaut. Comment puis-je l'empêcher de redémarrer lorsque je modifie le délai ?
 
net:
Les gars ! Lorsque nous changeons de période, l'EA est redémarré. En conséquence, il redonne à tous ses graphiques dessinés leur apparence par défaut. Comment puis-je désactiver le redémarrage lorsque je modifie le délai ?

Serait-il préférable de corriger une nuance dans l'Expert Advisor, afin que le graphique qu'il dessine s'affiche correctement après le changement de la TF ?

 
net:
Les gars ! Lorsque vous changez d'horizon temporel, le conseiller expert est redémarré. En conséquence, il renvoie tous ses graphiques dessinés à la vue par défaut. Comment puis-je désactiver le redémarrage lorsque je modifie le délai ?

Vous ne pouvez pas l'interdire. Et est-il nécessaire de sauvegarder le graphique ? Après tout, pour chaque cadre temporel du graphique, toutes les constructions peuvent varier considérablement.Prenez l'indicateur MACD sur différents cadres temporels du graphique comme exemple.Et si le tracé du graphique est nécessaire, vous devez modifier la logique du conseiller expert.

Le conseiller expert et l'indicateur doivent être redémarrés après le changement de période du graphique - c'est la logique de la fonction OnInit() - gestionnaire de l'événement Init :

Init

Immédiatement après que le terminal client ait chargé un programme (Expert Advisor ou indicateur personnalisé) et commencé l'initialisation des variables globales, un événement Init sera envoyé, qui sera traité par la fonction OnInit(), si elle en a une. Cet événement est également généré après un changement de titre et/ou de période graphique, après une recompilation du programme dans MetaEditor, après un changement des paramètres d'entrée d'un Expert Advisor ou d'une fenêtre de réglage d'un indicateur personnalisé. Le conseiller expert est également initialisé après le changement de compte. L'événement Init n'est pas généré pour les scripts.

 
barabashkakvn:

Vous ne pouvez pas l'interdire. Et est-il nécessaire de sauvegarder le graphique ? Après tout, pour chaque cadre temporel du graphique, toutes les constructions peuvent varier considérablement.Prenez l'indicateur MACD sur différents cadres temporels du graphique comme exemple.Et si le tracé du graphique est nécessaire, vous devez modifier la logique du conseiller expert.

Le conseiller expert et l'indicateur doivent être redémarrés après le changement de période du graphique - c'est la logique de la fonction OnInit () - gestionnaire de l'événement Init :

Je ne suis pas tout à fait d'accord. Bien sûr, il est nécessaire de redémarrer, mais c'est nécessaire pour économiser les ressources, en particulier pour les indicateurs/conseillers multitemporels avec un grand nombre d'objets graphiques - vous pouvez contourner certaines parties de l'initialisation, en particulier, le recalcul des objets déjà construits. C'est-à-dire que si par logique (ce que je pense personnellement est correct) après la désinitialisation les constructions graphiques sont supprimées, alors la raison du changement de TF devrait être traitée (sans supprimer les constructions). Si vous le souhaitez, il est préférable d'ajuster la visibilité des objets par TF sans reconstruire les objets eux-mêmes.
 
Tapochun:
Je ne suis pas tout à fait d'accord. Bien sûr, il est nécessaire de redémarrer, mais dans un souci d'économie de ressources, juste pour les indicateurs/conseillers multitemporels avec un grand nombre d'objets graphiques - vous pouvez contourner certaines parties de l'initialisation, en particulier, le recalcul de ce qui est déjà construit. C'est-à-dire que si par logique (ce que je pense personnellement est correct) après la désinitialisation les constructions graphiques sont supprimées, alors la raison du changement de TF devrait être traitée (sans supprimer les constructions). Si vous le souhaitez, il est préférable d'ajuster la visibilité des objets par TF sans reconstruire les objets eux-mêmes.
Tout est entre les mains du programmeur.
 

Pouvez-vous me dire comment trouver la valeur minimale d'une variable de type double dans les tampons iCustom, il y en a 8.

Je pense que le problème est résolu par le tableau, mais je ne sais pas comment l'écrire.

Aidez-nous !

 

Bonjour à tous, freeloaders et professionnels, je n'ai pas le temps de relire toutes les mémoires du forum, tranquillement par le principe du parkour nous apprenons MQ..............

Vobsobschestvya problème actuel : J'ai téléchargé le panneau de l'exemple, l'a adapté dans mon EA, maintenant la tâche est d'activer et désactiver ce panneau dans les paramètres

donc dans le code

J'écris en variables :

input bool vkl =false;//supprimer le panneau

J'explique plus loin

si //

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();
      
     
  }

DeleteInfoPanel();

si (vkl=false) ;

----------------

puis une erreur ou autre chose, il ne me comprend pas))

Si vous savez comment le faire correctement par exemple, ou me montrer où trouver un fichier avec un exemple

Dossiers :
 
alhoya:

Pouvez-vous me dire comment trouver la valeur minimale d'une variable de type double dans les tampons iCustom, il y en a 8.

Je pense que le problème est résolu par le tableau, mais je ne sais pas comment l'écrire.

Aidez-nous !

Après avoir obtenu un handle de l'indicateur personnalisé à l'aide de iCustom, vous copiez la valeur du tampon analysé de l'indicateur personnalisé vers votre tampon à l'aide de CopyBuffer dans OnCalculate(). Il reste à trouver la valeur minimale dans votre tampon en utilisant ArrayMinimum.
 
aleks557:

...

Pour pouvoir supprimer quelque chose, il faut d'abord le créer.

void DeleteInfoPanel()
  {
   DeleteObjectByName("InfoPanelBackground");   // Удалить фон панели
   DeleteObjectByName("InfoPanelHeader");       // Удалить заголовок панели
//--- Удалить свойства позиции и их значения

Et encore une chose : lorsque vous modifiez les propriétés de l'EA (dans les paramètres d'entrée, vous avez défini la condition true - vous voulez supprimer l'EA), cette condition ne vous permettra pas de supprimer le panneau :

void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();

  }

Cette condition ne fonctionnera que si vous supprimez le conseiller expert du graphique.

Raison: