Erreurs, bugs, questions - page 606

 
uncleVic:
On ne sait pas vraiment pourquoi ? Après tout, si votre programme a supprimé un objet, il le sait. Mais si l'objet est retiré et que le programme n'est même pas au courant, c'est la faute du terminal.

ce n'est pas si simple (c'est dommage qu'il ait disparu du service desk, je vais essayer de réintroduire le problème).

Nous devons gérer la situation où un utilisateur supprime accidentellement un objet du graphique. Mais cet objet ne doit pas être supprimé. Il s'agit par exemple du substrat d'une liste ou d'un menu déroulant.

Ainsi, dans le code OnChartEvent, je dois gérer cet événement et redessiner le contrôle.

Je dois donc supprimer tous les autres objets de ce contrôle. Je pense que je n'ai pas besoin d'expliquer pourquoi je dois supprimer tous les objets supérieurs de ce contrôle.

Il s'avère donc qu'en traitant cet événement, l'algorithme se retrouve dans une boucle profonde. Le script va supprimer les objets et obtenir l'événement que les objets ont été supprimés et cela signifie que cet événement doit être traité à nouveau - supprimer et rendre... En bref, un désordre algorithmique.

Je ne sais pas comment résoudre ce problème dans le cadre du jeu actuel de CHARTEVENT. C'est pourquoi je suggère que le script comprenne à qui appartient la suppression - au terminal (par un utilisateur malin) ou au script lui-même (par le même programmeur).

Vous devrez y faire face vous-même tôt ou tard, lorsque vous commencerez à travailler activement avec les contrôles.

 
sergeev:

ce n'est pas si simple (c'est dommage qu'il ait disparu du service d'assistance, je vais essayer de retrouver le problème).

Je ne sais pas comment résoudre cette situation dans le cadre de la configuration actuelle de CHARTEVENT. C'est pourquoi je suggère que le script comprenne - qui l'a supprimé - par le terminal (par un utilisateur malin) ou par le script lui-même (par le même programmeur).

Vous aurez été confronté à ce problème tôt ou tard, lorsque vous commencerez à travailler activement avec les commandes.

Je l'ai rencontré moi-même. Dans l'une des premières versions de l'Artothèque (en termes de contrôles), ce mécanisme était implémenté, mais pour certaines raisons, il a été supprimé (je prévois de le rétablir plus tard).

Il n'y a rien d'intelligent là-dedans. Chaque contrôleur doit être capable de se restaurer. Le substrat, lorsqu'il est effacé, supprime tout ce qui s'y trouve. La restauration se fait par événements.

 
uncleVic:


Il n'y a rien d'intelligent là-dedans. Chaque contrôleur doit être capable de se réparer lui-même. Le substrat, lorsqu'il est supprimé, supprime tout ce qui s'y trouve. Ensuite, la restauration se fait par événements.

Eh bien, c'est ce que je dis, que lorsqu'un événement de suppression est reçu, le contrôle se restaure.

Mais dès que le contrôle se rétablit (supprime les objets supérieurs), il recommence à supprimer les événements.

Quoi qu'il en soit, pourquoi m'embêter à prouver à nouveau l'évidence :)) Lorsque votre entreprise a eu besoin de l'événement de mouvement de la souris pour le développement de la bibliothèque standard, elle l'a ajouté à la volée et sans questions inutiles. La pratique du deux poids, deux mesures s'avère....
Mais je pense que si cette même proposition était envoyée par l'utilisateur au Service Desk, ils le traîneraient pendant un mois de plus pour savoir pourquoi ils en ont besoin.

Croyez-moi, vous en avez besoin ! J'ai déjà écrit dans le Service Desk que nous n'essayons pas de promouvoir MT5 et MQL5, mais nous le faisons pour notre propre bénéfice.

Nous passons honnêtement toutes les voies pour trouver des solutions rapides et compactes pour nos tâches dans MQL. Si nous rencontrons un obstacle, nous écrivons toujours au Service Desk. Mais nous n'y rencontrons pas toujours de l'entente.

Comme je l'ai écrit plus haut, je suis très heureux que vous réalisiez vous-même la bibliothèque de contrôle. Vous pouvez au moins avoir un petit aperçu de tous nos problèmes qui doivent être résolus sans aucune compréhension de votre part.

PS.
Victor, désolé, c'est si sévère, juste une douleur dans le cou.
Je demande simplement à votre entreprise d'écouter les demandes des programmeurs MQL. Après tout, nous résolvons des tâches bien plus variées dans MQL que vous ne pouvez l'imaginer. Parfois, j'ai juste envie d'entendre la réponse du Service Desk : oui, nous le ferons dans la prochaine version.

Merci de votre compréhension.

 

sergeev:

... quand votre entreprise avait besoin d'un événement de déplacement de la souris ...

Si vous saviez à quel point j'ai dû casser les poings sur des programmeurs "adultes" pour le faire...
 
Au risque de paraître peu original, mais quand même... Mesdames et Messieurs, quand le marché ouvrira-t-il ? Quelqu'un connaît-il au moins un calendrier approximatif ?
 
uncleVic:
Si vous saviez à quel point j'ai dû casser les poings sur des programmeurs "adultes" pour le faire...
Victor, vous et moi sommes dans le même bateau :))soyons ensemble.
 

J'essaie d'ouvrir une position longue basée sur le script pour un symbole où l'exécution en bourse est mise en œuvre ( SYMBOL_TRADE_EXECUTION_EXCHANGE, Exécution en bourse).

#include <Trade\Trade.mqh>                   
input double InpLots          =0.1;  
input int    InpTakeProfit    =500;
input int    InpSL            =300;
CTrade       myTrade;

void OnStart()
  {   
   double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double tp=SymbolInfoDouble(_Symbol,SYMBOL_BID)+InpTakeProfit*_Point;
   double sl=SymbolInfoDouble(_Symbol,SYMBOL_BID)-InpSL*_Point;
   myTrade.SetTypeFilling(ORDER_FILLING_IOC);
   myTrade.PositionOpen(_Symbol,ORDER_TYPE_BUY,InpLots,price,0,0,"Test Buy");
   Sleep(500); // интервал задержки
   myTrade.PositionModify(_Symbol,sl,tp);
  }

Je reçois une erreur :

  • exchange acheter 0.10 EURUSD.e à 0.00000 ;
  • Échec de l'échange : achat de 0,10 EURUSD.e à 0,00000 [arrêts invalides].

C'est-à-dire que le terminal ne voit pas le prix auquel je veux acheter. J'ai essayé différents prix mais j'ai toujours reçu 0.00000.

J'ai essayé un script similaire fonctionnant dans MT4 avec les mêmes conditions d'échange, il a fonctionné là... Pas dans MT5...

Veuillez pointer le nez de l'erreur.

 
denkir:
  • Échec de l'échange : achat de 0,10 EURUSD.e à 0,00000 [arrêts invalides].

Il s'agit d'un message du serveur et non d'un message du terminal. Je n'ai plus rien à dire sur ce sujet.

Soumettez une demande au Service Desk.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
papaklass:

Pourquoi une erreur de dépassement de tableau se produit-elle ?

En général, on y écrit quelque chose avant de le lire...
 
papaklass:

Pourquoi une erreur de dépassement de tableau se produit-elle ?


Et où avez-vous l'appel ArrayResize?
Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
Raison: