Erreurs, bugs, questions - page 2458

 
Игорь Евдокимов:

Conseil : si vous voulez demander quelque chose, insérez le code COMPLET, pas un morceau de celui-ci.

A quoi bon : n'importe qui prend votre code et l'exécute à sa guise. Et presque personne ne regarde le chunky code - le chunky code est irrespectueux.

Exemple de votre code :

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ResetLastError();
   int ObjTotal=ObjectsTotal(0);
   int Error=GetLastError();
   Print("ObjectsTotal: ",ObjTotal,", GetLastError: ",Error);
//---
  }
//+------------------------------------------------------------------+

Exécutez-le sur un graphique qui n'a pas d'objets graphiques. Résultat :

2019.05.10 13:26:59.169 1 (EURUSD,H1)   ObjectsTotal: 0, GetLastError: 0

C'est-à-dire qu'il n'y a pas d'erreur.


Utilisation du terminal :

2019.05.10 13:25:35.665 MetaTrader 5 x64 build 2025 started (MetaQuotes Software Corp.)
2019.05.10 13:25:35.668 Windows 10 (build 17763) x64, IE 11, UAC, Intel Core i3-3120 M  @ 2.50 GHz, Memory: 3712 / 8077 Mb, Disk: 77 / 415 Gb, GMT+2
2019.05.10 13:25:35.668 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
Dossiers :
1.mq5  2 kb
 
Vladimir Karputov:

Un conseil : si vous voulez demander quelque chose, insérez le code COMPLET, pas un morceau.

Merci pour le conseil, c'est ce que je vais faire.

Cependant, la question reste ouverte.

Clarification : si le morceau de code du post précédent se trouve dans la fonction OnDeinit() de l'indicateur, le résultat est le suivant :

2019.05.10 14:08:20.105 PtS (EURUSD,H1) ObjectsTotal : 0, GetLastError : 4022

Si on exécute le même code après avoir retiré l'indicateur du graphique, comme le script (1.mq5 du post précédent), on obtient

2019.05.10 14:08:33.609 1 (EURUSD,H1) ObjectsTotal : 8575, GetLastError : 0

Veuillez m'aider à en comprendre la raison.

Messieurs les développeurs ! Quelle est cette erreur qui ne figure pas dans la documentation ?

 
Vladislav Andruschenko :

erreur dans le testeur de stratégie pendant l'optimisation.

"tâche rejetée par l' agent de test "

Par exemple, si la devise de votre compte est EUR,

  • EURJPY Aucun problème
  • Erreur à GBPJPY


Si la devise de votre compte est le USD

  • USDCAD Pas de problème
  • USDJPY Pas de problème
  • Erreur à EURAUD


apparaît lorsque d'autres paires de devises sont utilisées dans le code.

Dans mon exemple, il s'agit du calcul du lot dynamique.



c'est-à-dire lorsque l'EA demande le prix d'une autre devise.

@Vladislav Andruschenko

Bonjour, avez-vous obtenu une réponse ou une solution à ce problème ?

 
Vladimir Pastushak:

Lorsque l'horaire/période est modifié, PBB reçoit une valeur de 10, quelle que soit la valeur que vous avez spécifiée dans le champ de saisie.

Au moment de la réinitialisation, c'est comme s'il s'agissait de la première exécution.

Il y a deux façons de résoudre votre problème

1 - Stocker la valeur PBB dans des variables globales et récupérer la période à partir de là.

2 - Quand OnChartEvent se déclenche, réinitialiser l'indicateur MA et obtenir un nouveau handle...

J'ai vérifié toutes les options. Cela ne fonctionne pas.

Défaut dans MQL5.

Il n'initialise pas de nouvelles valeurs. Seulement avec l'entrée du paramètre int PBB_=. Pas d'autres options. Ce n'est pas bon du tout.

 
Uladzimir Izerski:

J'ai vérifié toutes les options. Ça ne marche pas.

Défaut dans le programme MQL5.

Les nouvelles valeurs ne sont pas initialisées. Uniquement avec le paramètre int PBB_=. Pas d'autres options. Ce n'est pas bon du tout.

Tout est parfait dans MQL, vous ne comprenez simplement pas ce que vous faites dans votre code et comment tout fonctionne...

Une fois encore, lorsque vous appelezChartSetSymbolPeriod(0,_Symbol,_Period) ;

Tu remets tout par défaut...

Vous pouvez aussi essayer l'inite pour demander une valeur à votre champ de texte.

Quand vous lancez l'indicateur pour la première fois, tout est créé et quand vous changez les données dans le champ, il appellera la nouvelle unité et fixera la valeur de votre champ de texte...

 
Vladimir Pastushak:

Tout est parfait dans MQL, vous ne comprenez simplement pas ce que vous faites dans le code et comment tout fonctionne...

Une fois encore, lorsque vous appelezChartSetSymbolPeriod(0,_Symbol,_Period) ;

Tu remets tout par défaut...

Vous pouvez aussi essayer l'inite pour demander une valeur à votre champ de texte.

Après la logique, le premier démarrage de l'indicateur, tout est créé, mais lorsque vous changez les données dans le champ, il y aura un nouvel appel dans l'unité et le réglage de la valeur de votre champ de texte...

J'ai essayé avec le champ de texte et par GlobalVariable, mais je n'ai jamais rien essayé. C'est aussi silencieux que dans un réservoir.

Dans une autre variante,OnCalculate fonctionne sans problème.

 
Uladzimir Izerski:

J'ai essayé à la fois à partir d'un champ de texte et via GlobalVariable et tout ce que j'ai pu essayer. C'est aussi silencieux qu'un tank.

L'autre version de OnCalculate fonctionne sans problème.

Cela signifie que vous faites quelque chose de mal.

 
Lorsque j'ai accédé à mon compte, une fenêtre s'ouvre et me dit que je ne dois pas lire les "lignes" non préparées, bien qu'il soit indiqué que l'autorisation permet la connexion au compte... Que dois-je faire ?
 
Vladimir Pastushak:

Alors vous faites quelque chose de mal.

Vous avez déjà posté le code.

Si je suis inepte, quelqu'un doit être un pro. Je ne le vois pas encore.

J'accepte votre effort pour trouver une réponse. Il y a plus que ça. C'est-à-dire au niveau des développeurs.

 
Uladzimir Izerski:

Quoi ?

Personne ne peut répondre à ma question?

Qu'y a-t-il à maîtriser ? Mettez tout ce qui se trouve dans OnInit dans une fonction séparée, faites-en MyOnInit. Depuis OnInit, appelez MyOnInit et depuis OnChartEvent après avoir modifié le champ de saisie.

Ce sont les éléments de base, vous pouvez avoir besoin d'autres choses. J'ai un indicateur gratuit dans le marché qui colore les barres ou les chandeliers à condition que le MACD soit au-dessus ou au-dessous de zéro. Mais si vous transformez le graphique en ligne, le nombre de tampons nécessaires change déjà. La solution est trouvée de cette manière.

Raison: