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

 

Pouvez-vous me dire pourquoi j'obtiens des erreurs

2019.02.17 06:13:28.974 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 06:13:28.983 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден

dans ce code

      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

Si la première erreur est encore compréhensible - un objet n'est pas trouvé, mais la mise en œuvre de la recherche d'un objet manquant sans erreur n'est pas claire, la deuxième erreur n'est pas claire, alors que l'objet est clairement créé - le graphique est formé et la raison de l'erreur n'est pas claire.

Comment se débarrasser des erreurs ?

 
Aleksey Vyazmikin:

Pouvez-vous me dire pourquoi j'obtiens des erreurs

dans ce code

Si la première erreur est encore compréhensible - un objet n'est pas trouvé, mais la mise en œuvre de la recherche d'un objet manquant sans erreur n'est pas claire, la deuxième erreur n'est pas claire, alors que l'objet est clairement créé - le graphique est formé et la raison de l'erreur n'est pas claire.

Comment se débarrasser de cette erreur ?

ResetLastError() doit être fait avant d'appeler la fonction. Qu'est-ce que c'est ici :

graphic.Create()

n'est pas clair. S'il s'agit de CCanvas, alors la méthode Create() crée une ressource graphique sans référence à l'objet graphique. Et il renvoie soit vrai, soit faux:

Créer

Crée une ressource graphique sans liaison avec un objet graphique.

virtual bool  Create(
   const string       name,                                 // имя
   const int          width,                                // ширина
   const int          height,                               // высота
   ENUM_COLOR_FORMAT  clrfmt=COLOR_FORMAT_XRGB_NOALPHA      // формат
   );

Paramètres

nom

[in] Base pour le nom de la ressource graphique. Le nom de la ressource est formé lors de la création en ajoutant une chaîne pseudo-aléatoire.

largeur

Largeur [in] Largeur (taille X) en pixels.

hauteur

[Hauteur (taille de l'axe des Y) en pixels.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[Méthode de traitement des couleurs. Voir la description de la fonction ResourceCreate() pour plus de détails sur les méthodes de traitement des couleurs.

La valeur de retour est

true - en cas de succès, sinon false


En général, il est difficile de comprendre ce que vous avez montré.

Mais vous pouvez essayer de cette façon :

//+------------------------------------------------------------------+
ResetLastError();
if(ObjectFind(chart,name)<0)
  {
   Print("1 Тут ошибка потому, что объекта нет ещё",GetLastError()," ",cLng::CodeDescription(GetLastError()));
   ResetLastError();
   if(!graphic.Create(chart,name,0,0,0,pix_X,pix_Y))
      Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
  }
//+------------------------------------------------------------------+

Si vous avez CGraphic à cet endroit, vous devez entrer dans le code Create() pour comprendre ce qu'il renvoie, car il n'y a rien à ce sujet dans l'aide :

Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
  • www.mql5.com
Стандартная библиотека / Научные графики / CGraphic / Create - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

ResetLastError() doit être effectué avant l'appel de la fonction. Ce qu'il y a ici :

n'est pas clair. S'il s'agit de CCanvas, la méthode Create() crée une ressource graphique sans référence à un objet graphique. Et il renvoie soit vrai, soit faux:

Créer

Crée une ressource graphique sans liaison avec un objet graphique.

Paramètres

nom

[in] Base pour le nom de la ressource graphique. Le nom de la ressource est formé lors de la création en ajoutant une chaîne pseudo-aléatoire.

largeur

Largeur [in] Largeur (taille X) en pixels.

hauteur

[Hauteur (taille de l'axe des Y) en pixels.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[Méthode de traitement des couleurs. Voir la description de la fonction ResourceCreate() pour plus de détails sur les méthodes de traitement des couleurs.

La valeur de retour est

true - en cas de succès, sinon false


En général, il est difficile de comprendre ce que vous avez montré.

Mais vous pouvez essayer de cette façon :

Si vous avez CGraphic à cet endroit, vous devez entrer dans le code Create() pour comprendre ce qu'il retourne, car il n'y a pas un mot à ce sujet dans l'aide :

J'ai déjà vérifié ci-dessus avec la réinitialisation des erreurs et localisé l'endroit où l'erreur se produit.

En outre, elle se produit deux fois à partir de fonctions différentes - après la première fonction, l'erreur est supprimée, mais elle se reproduit ensuite.

Et ma variante de la création

Créer

Crée une ressourcegraphique liée à l'objet graphique.

bool Create (
const longchart,// ID du graphique
const stringname,//nom
const intsubwin,// nombre de sous-fenêtres
const intx1,//coordonnée x1
const inty1,//coordonnée y1
const intx2,//coordonnée x2
const inty2//coordonnée y1
)

Paramètres

graphique

L'identifiant [in] du graphique.

nom

[en] Nom.

subwin

[Numéro de sous-fenêtre.

x1

[Coordonnée X1.

y1

[Coordonnée Y1.

x2

[in] Coordonnée X2.

y2

[dans] Coordonnée Y2.

 
Aleksey Vyazmikin:

J'ai déjà vérifié ci-dessus avec une réinitialisation de l'erreur et localisé l'endroit où l'erreur se produit.

Vous ne réinitialisez pas l' erreur avant d'accéder à la fonction de recherche d'objet.

 
Artyom Trishkin:

Vous ne réinitialisez pas l'erreur avant d'accéder à la fonction de recherche d'objet.

Oui, dans la citation du code, je ne réinitialise pas, car j'ai déjà vérifié le code ci-dessus - il n'y a pas d'erreur, donc j'ai effacé les lignes de contrôle similaires comme indiqué ci-dessous.

 
Bonjour, ma fonction d'alerte lit une chaîne de caractères à partir d'un fichier et la sort en caractères chinois ou japonais, comment puis-je la corriger ?
 
Artyom Trishkin:

Vous ne réinitialisez pas l'erreur avant d'appeler la fonction de recherche d'objet.

Une fois de plus j'ai décidé de répéter l'expérience, voici le code

      //--- отключим показ ценового графика
      ChartSetInteger(0,CHART_SHOW,false);
      long chart=ChartID();

      CGraphic graphic;
         Print("0 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

Voici le résultat.

2019.02.17 08:55:19.845 Test_4G_CB (Si Splice,H1)       0 Тут ошибка 0 Операция выполнена успешно
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден
Une idée de la cause de l'erreur ?
 
Denis Nikolaev:
Bonjour, ma fonction d'alerte lit une chaîne de caractères à partir d'un fichier et la sort en caractères chinois ou japonais, comment puis-je la corriger ?

Configurez les polices de caractères dans Windows. Définissez le russe comme "Langue pour les programmes qui ne supportent pas Unicode".

"Normes régionales" - "Avancé".

 
Vladimir Karputov:

Configurez les polices de caractères dans Windows. Définissez le russe comme "Langue pour les programmes qui ne supportent pas Unicode".

" Normes régionales - avancées ".

Cela n'a pas fonctionné.

J'obtiens une traduction automatique en japonais ou en chinois d'une ligne lue dans un fichier, pourquoi cela se produit-il ?

 
Aleksey Vyazmikin:

Une fois de plus j'ai décidé de répéter l'expérience, voici le code

Voici le résultat

Une idée de la cause de l'erreur ?

Eh bien, puisque vous avez réinitialisé la dernière erreur, cherchez dans les contrées sauvages de CGraphic où ce code d'erreur se produit.

Raison: