Apprendre et écrire ensemble en MQL5 - page 26

 

Du manuel :

Все возникающие события клиентский терминал складывает в общую очередь.

...La file d'attente des événements a une taille limitée.

La file d'attente des événements a déjà été évoquée à plusieurs reprises, mais je n'ai pas pu trouver la taille exacte. Quelle est la profondeur de la file d'attente des événements ? 64 ? 256 ? ...événements ?
 

Alors, est-ce que quelqu'un va m'aider ou pas ? A la page 25, deux conseillers...

Grondé - grondé. Maintenant, aidez-moi à comprendre. Vous m'avez accusé de ne pas vous donner suffisamment de données pour analyser le problème. Je n'en ai plus besoin. Vous pouvez vérifier ce que vous voulez.

Je suppose que tout le monde teste mes robots... Je vais attendre. Il faut probablement engager un programmeur pour de l'argent pour aider à trouver un bug.

Au fait, est-ce que quelqu'un d'autre se souvient du nom du sujet du fil de discussion.... ?

 
Yedelkin:

Du manuel :

Il y a eu quelques discussions sur la file d'attente des événements, mais je n'ai pas pu trouver la taille exacte. Quelle est la profondeur de la file d'attente des événements ? 64 ? 256 ? ...événements ?
Je voulais également demander ce qui se passe si la file d'attente des événements commence à s'empiler et à être encombrée. Les nouveaux événements seront-ils ignorés ou ceux qui sont déjà dans la file d'attente seront-ils abandonnés ? Et quand cela se produira-t-il (à quel événement de la file d'attente) ?
 
Urain:
Je voulais aussi demander ce qui se passera si la file d'attente des événements commence à s'accumuler et à s'étrangler ? les nouveaux événements seront-ils ignorés ou ceux qui sont déjà dans la file d'attente seront-ils réinitialisés ? et bien sûr, quand cela se produira-t-il (à quel événement de la file d'attente) ?

déjà répondu

https://www.mql5.com/ru/forum/1621/43941#comment_43941

Таймер
Таймер
  • www.mql5.com
Предпосылки очень просты -- таймер обычно используется для синхронизации (ждем расчета данных) или обсервинга (зацикленный таймером эксперт, имхо, будет гораздо более адекватным).
 

Je pense qu'une clarification est encore nécessaire, il y a une réponse mais elle est floue, mes questions ne sont même pas évoquées.

Ni l'indication exacte de la longueur de la file d'attente, ni les événements qui seront sautés (que voulez-vous dire par "une partie des événements sera sautée" ? quelle partie ? les nouveaux événements ou ceux qui sont déjà dans la file d'attente ? la logique est impuissante ici, car les nouveaux événements peuvent être plus importants que ceux qui sont dans la file d'attente, ou vice versa.

Il est donc préférable de clarifier ce point.

 
Khomtchenko:

Alors, est-ce que quelqu'un va m'aider ou pas ? A la page 25, deux conseillers...

Gronder, c'est gronder. Maintenant, aidez-moi à comprendre. Vous m'avez accusé de ne pas vous donner suffisamment de données pour analyser le problème. Je n'en ai plus besoin. Vous pouvez vérifier ce que vous voulez.

Je suppose que tout le monde teste mes robots... Je vais attendre. Il faut probablement engager un programmeur pour de l'argent pour aider à trouver un bug.

Au fait, est-ce que quelqu'un d'autre se souvient du nom du sujet du fil de discussion.... ?

Vous avez un slippage de 50 en mql4 et de 10 en mql5. Essayez de fixer le même slippage, peut-être que la situation s'équilibrera parce que beaucoup d'ordres avec un tel slippage peuvent juste se transformer en requotes.

Mieux encore, dans les deux variantes, réglez le slippage sur la taille du spread.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
molotkovsm:

Je vais répéter la question :

Comment supprimer correctement toutes les commandes avec un certain magik ?

...

Je dois parcourir la liste des commandes de haut en bas, par exemple comme ceci :

J'ai essayé de faire ce que vous avez dit, mais le problème demeure - l'ordre en attente est d'abord supprimé, puis une autre demande est envoyée pour supprimer le même ordre. Voici un exemple des lignes du journal :

2011.05.12 16:42:57 Traes '726238' : annuler l'ordre #4388299 buy stop 0.02 EURUSD à 1.41700 effectué - ordre supprimé avec succès
2011.05.12 16:42:57 Trades '726238' : annuler l'ordre #4388299 buy stop 0.02 EURUSD à 1.41700 - Une autre requête est en cours d'envoi
2011.05.12 16:42:58 Trades '726238' : échec de l'annulation de l'ordre #4388299 buy 0.00 at 0.00000 [Invalid request] - c'était un achat pour une raison quelconque.

Cela ne se produit pas à chaque fois, mais parfois, et cela n'affecte pas le fonctionnement du conseiller expert. Je veux juste que tout soit correct, ne pas charger le serveur commercial avec des requêtes vides et comprendre le problème.

Je vous remercie de vos réponses et de votre volonté d'aider.

-----------------
Je vais essayer de donner mon avis. La suppression d'un ordre portant un certain numéro magique ou de tout autre ordre ne change rien, de même que le défilement des ordres dans le sens de la longueur ou de la largeur. Vous pouvez mémoriser une commande puis la supprimer par ticket, l'erreur apparaîtra occasionnellement.

Comme je l'imagine, le serveur a effectivement supprimé la commande, comme en témoigne le message dans le journal et dans la réponse retcode du serveur. Mais le terminal ne le sait pas encore, c'est-à-dire que l'ordre fonctionne toujours pour lui (ou bien il le sait mais donne des informations périmées à EA, bien qu'il aurait alors échoué la vérification) et au prochain tic-tac il envoie une autre demande pour le supprimer et obtient une erreur du serveur.

Le fait que le serveur ait transformé un ordre d'achat stop en un ordre d'achat simple, semble être une erreur du serveur : il ne distingue pas ces ordres en cas d'erreur de requête. Les développeurs doivent s'en souvenir.

Comment éviter les demandes répétées ? Je pense qu'il n'y a que deux façons :

1. Après une suppression réussie, analyser le dernier historique, en attendant que l'ordre supprimé y apparaisse, puis continuer.

2. introduire simplement un délai, disons de deux secondes, après que la suppression ait été effectuée. Une seconde pourrait ne pas suffire.

Je voudrais également ajouter que cette situation se produit non seulement avec les ordres en attente, mais aussi avec les ordres au marché, ainsi qu'avec les positions lorsqu'elles sont modifiées. Cela se produit assez rarement et peut être remarqué uniquement lorsque l'on négocie sur un compte de démonstration pendant une longue période, mais dans le testeur, bien sûr, cela n'apparaît pas. De plus, après avoir modifié une position, il arrive que le niveau de marge qui existait avant la modification soit inversé, probablement d'autres paramètres de compte aussi, je n'ai pas vérifié.

 

У вас в mql4 стоит проскальзывание 50, а в mql5 10. Попробуйте поставить одинаковое проскальзывание возможно ситуация выровняется тк много приказов с таким слипажем может просто попадать на реквот.

Et mieux encore, dans les deux variantes, réglez le slippage sur lataille du spread.

Je vais essayer, mais il est peu probable que la situation s'améliore de manière significative.

Ai-je des problèmes de programmation ou tout va bien ?

 
Urain:

Je pense qu'une clarification est encore nécessaire, il y a une réponse mais elle est floue, mes questions ne sont même pas évoquées.

Ni l'indication exacte de la longueur de la file d'attente, ni les événements qui seront ignorés (que voulez-vous dire par "une partie des événements sera ignorée" ? quelle partie ? les nouveaux événements ou ceux qui sont déjà dans la file d'attente ? la logique est impuissante ici, car les nouveaux événements peuvent être plus importants que ceux qui sont dans la file d'attente, et peut-être vice versa.

Il est donc préférable de clarifier ce point.

1)"stacks in common queue" - erreur dans la documentation. Il y a en fait plusieurs files d'attente. Actuellement, chaque programme mql5 et chaque graphique a ses propres files d'attente. Les tailles des files d'attente sont différentes et ne sont pas petites en général, le débordement de la file d'attente est peu probable pour un programme correctement écrit. Nous ne documenterons pas la taille exacte de chaque file d'attente, leur nombre, ou toute autre description détaillée de l'implémentation interne. La raison en est évidente : la mise en œuvre interne peut changer.

2) Tout nouvel événement, pour lequel il n'y a pas assez de place dans cette file d'attente particulière, sera ignoré.

Je vous rappelle que les événements d'un nouveau tick et d'un changement de graphique ne peuvent exister que dans une seule instance dans la file d'attente des événements entrants du programme mql5. La génération d'événements de création et de suppression d'objets graphiques sur un graphique peut être activée/désactivée.

 

Pouvez-vous me dire ce que signifient ces barres vertes en bas ? Dans MT4, ils signifiaient le volume du lot et étaient dessinés lorsque le lot changeait. Mais à quoi ça sert ici ? Ou le volume de mon lot change ? Il semble que je ne le change pas.

Raison: