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

 
Vladimir Karputov:

OnChartEvent n'est de toute façon déclenché que pour le symbole actuel - dans ce cas, il est inutile de reconnaître le symbole : il est toujours placé.

La deuxième méthode consiste à contourner la liste de tous les graphiques - ObjectFind.

En attendant, pouvez-vous me dire de quel type d'erreur il s'agit ?

2021.02.02 18:06:55.780 GDICache        pen creation error [87]
2021.02.02 18:06:56.251 GDICache        pen creation error [87]
2021.02.02 18:06:56.556 GDICache        pen creation error [87]
2021.02.02 18:06:56.677 GDICache        pen creation error [87]
2021.02.02 18:06:56.969 GDICache        pen creation error [87]

J'ai découvert la raison. Apparu pendant le débogage lors de la spécification des propriétés de la ligne. Le style de ligne a été laissé en valeur. C'est juste étrange que je n'ai trouvé aucune mention de cette erreur nulle part.

 
Aleksandr Prishenko:

Ça marchait merveilleusement bien avant. J'aurais dû l'essayer sur un hébergement gratuit. Quoi qu'il en soit, j'ai donné 15 livres à Methaquotes. ))))

Merci pour la réponse !

J'ai migré (j'ai regretté le 15) mais les contrôles sont assez étranges.

Le migrateur ne comprend pas le chemin d'installation de l'indicateur depuis l'EA, il faut nettoyer les graphiques :

2021.02.02 19:57:39.442 Hébergement virtuel 6215402 : vérification du chargement "C:\Users\Crucian\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Experts\BBS_9.ex5::Indicateurs\Band Width1.ex5"

2021.02.02 19:57:39.442 Virtual Hosting 6215402 : échec du chargement du programme


Migrator demande même de recompiler les indicateurs techniques ;)) :

2021.02.02 19:44:12.708 Hébergement virtuel 6215402 : une version obsolète du module importé "ZigZag.ex5" doit être recompilée avant d'être transférée sur le serveur d'hébergement.



 
Bonjour, j'ai vu beaucoup d'articles sur la façon de construire un EA à partir d'un indicateur ou comment obtenir des données d'un indicateur dans un EA. Et comment faire l'inverse, comment visualiser un EA, disons qu'il a calculé un tableau de données comment le transférer à un indicateur personnalisé?
 
VANDER:
Bonjour, j'ai vu beaucoup d'articles sur la façon de construire un EA à partir d'un indicateur ou comment obtenir des données d'un indicateur dans un EA. Et comment faire l'inverse, comment visualiser un EA, disons qu'il a calculé un tableau de données comment le transférer à un indicateur personnalisé?

A travers un .mqh pluggable dans lequel tout est compté et l'EA prend à partir de là, et l'indicateur...

 

Bonjour, Comment faire pour que la plateforme MT5 magnétise la ligne dans l'indicateur Moyennes Mobiles ? Pour que la ligne de tendance se détache clairement et soit aimantée à la ligne de l'indicateur. Dans les paramètres de la plateforme, dans les graphiques il y a un élément "magnétisation", là la ligne de tendance est mise sur le prix d'ouverture. Existe-t-il un tel moyen pour une moyenne mobile et une ligne de tendance simple ?


 
leonerd:

Lancez le débogueur, mettez un point d'arrêt sur la variable type. Je dessine un triangle (Insertion - Objets - Formes - Triangle) sur le graphique. Appuyez sur Supprimer, le triangle est supprimé. J'attrape un événement, type dans le code ci-dessus est toujours 0. type_str, respectivement, est OBJ_VLINE (première valeur dans l'énumération).

Le même code renvoie OBJ_TRIANGLE comme type d'objet correct lorsque les propriétés d'un objet graphique sont modifiées ou déplacées.

Sortie. Lors de la suppression d'un objet graphique, le type de l'objet n'est pas obtenu dans OnChartEvent.

Il n'est toujours pas clair comment obtenir le type d'un objet supprimé. Le nom de l'objet dans OnChartEvent() est correct mais le type est toujours 0. La description ci-dessus est-elle un bug ou doit-on procéder autrement ?

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_DELETE)
     {
      string object_name=sparam;
      ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(ChartID(),object_name,OBJPROP_TYPE); // object_type всегда VLINE
     }
  }
 
leonerd:

Il n'est toujours pas clair comment trouver le type de l'objet supprimé. Le nom de l'objet dans OnChartEvent() est correct, mais le type est toujours 0. La description ci-dessus est-elle un bug ou doit-on procéder différemment ?

ObjectType(sparam)
 
Vitaly Muzichenko:

Qu'est-ce que la fonction ObjectType() ?

Il semble qu'il s'agisse d'une branche de MQL5.

De toute évidence, il a été conçu de cette façon. Les autres paramètres de l'objet supprimé ne peuvent pas être récupérés. Il ne reçoit que le nom. Les coordonnées, etc. sont toutes à zéro. Existe-t-il un moyen de les récupérer en cas de suppression d'un objet graphique ?

 
leonerd:

Qu'est-ce que la fonction ObjectType() ?

Il semble qu'il s'agisse d'une branche de MQL5.

De toute évidence, il a été conçu de cette façon. Les autres paramètres de l'objet supprimé ne peuvent pas être récupérés. Il ne reçoit que le nom. Les coordonnées, etc. sont toutes à zéro. Y a-t-il un moyen de les récupérer en supprimant un objet graphique ?

Oui, je ne m'y attendais pas dans mql5, mais il y a un analogue :

ObjectGetInteger(0,name,OBJPROP_TYPE)

Vous voulez obtenir les paramètres de l'objet par l'événement de suppression, c'est-à-dire après qu'il ait déjà disparu.

 
leonerd:

Qu'est-ce que la fonction ObjectType() ?

Il semble qu'il s'agisse d'une branche de MQL5.

De toute évidence, il a été conçu de cette façon. Les autres paramètres de l'objet supprimé ne peuvent pas être récupérés. Il ne reçoit que le nom. Les coordonnées, etc. sont toutes à zéro. Existe-t-il un moyen de les obtenir à partir de l'événement de suppression d'un objet graphique ?

Probablement, une telle possibilité n'existe pas et n'est pas prévue. Après tout, l'objet existe déjà...

Je vois une telle solution : à la création de l'objet, dans une structure de tableau pour écrire le nom et tous les paramètres requis, et sur la suppression, après la lecture des paramètres requis supprimer de la structure de tableau enregistrement à ce sujet.