Développement d'une bibliothèque de fonctions API pour MetaTrader 4 - page 4

 
Selon les paramètres du serveur de cotation MT4, aucune opération ne peut être effectuée plus d'une fois toutes les 10 secondes. Le serveur limite la fréquence des différentes requêtes afin de prévenir les éventuelles attaques DOS des pirates. Cette information a été évoquée une fois sur ce forum.
Ce n'est pas vrai.
La fréquence des transactions n'est limitée que par la vitesse de réaction du courtier =)
Il n'y a pas de limite dans MT.

Les développeurs l'ont dit sur le forum, et plus d'une fois. Mais ils nous ont toujours honnêtement avertis - vous résoudrez vos problèmes avec le courtier par vous-même ;)


Il serait donc plus juste de dire que la pause n'est pas obligatoire (au sens technique), mais au moins souhaitable (au sens du danger de blocage du compte).
 
Je suis intéressé par un exemple simple, j'envoie trois requêtes pour passer trois commandes, même si l'intervalle est de 20 secondes. À ce moment-là, le marché est lent et l'intervalle entre les ticks peut atteindre deux minutes. Les deux premiers seront-ils perdus ou les trois seront-ils exécutés lors du premier tic ?
 
Je suis intéressé par un exemple simple, j'envoie trois requêtes pour passer trois ordres, même si l'intervalle est de 20 secondes. À ce moment, le marché est lent et l'intervalle entre les ticks peut atteindre deux minutes. Les deux premiers seront-ils perdus ou les trois seront-ils exécutés lors du premier tic ?

Rien ne sera perdu. Vous n'avez pas besoin de mettre en œuvre un quelconque délai dans le programme. Vous lancez la fonction int NewPos(...) pour le premier ordre. Tous les délais sont déjà mis en œuvre dans celui-ci. Si la fonction renvoie 0, tout va bien - la demande a été exécutée. On passe au deuxième ordre, et ainsi de suite.
Si l'exécution est réussie, la fonction fera un délai de 10 secondes par elle-même, ainsi nous n'aurons pas de problèmes avec des demandes fréquentes au serveur. Le temps d'attente critique de la réponse du terminal MT4 est également implémenté dans cette fonction. S'il n'y a pas de réponse du terminal pendant ce temps, la fonction renvoie le code d'une situation d'erreur. Cela a été fait pour diagnostiquer des situations liées à des citations manquantes, à la désactivation de comptes, à des pannes d'Internet, etc.
Ainsi, lorsque vous revenez de la fonction, l'événement s'est déjà produit. Bonne chance !
 
Les commandes de traitement des ordres ne seront exécutées que lorsque les cotations pour la paire, pour laquelle l'Expert Advisor est installé, arrivent. En d'autres termes, le bouton "BUY" dans votre programme ne signifie pas que l'ordre est envoyé au serveur, il est juste "en attente sur le disque" pour le cours de la paire où le conseiller expert est installé. L'EA recherchera la commande du fichier et s'il la trouve, il enverra un ordre au serveur, et d'ailleurs, il la recherchera à chaque tick. Le résultat de la passation d'un ordre ou de l'annulation de l'ordre ne peut, respectivement, être reçu qu'à l'arrivée du devis suivant. Cela ne nous permet pas d'organiser une logique claire pour certains TS. J'espère que vous le comprenez.


La logique du TS n'a rien à voir avec cela. La question porte uniquement sur les retards dans l'exécution des ordres. Mais, comme je l'ai déjà écrit, ce problème est tiré par les cheveux : la variabilité des cotations est déterminée par les ticks entrants avec les nouveaux prix. Pendant les transactions actives, jusqu'à 200 ticks par minute sont reçus. Par conséquent, dans ce cas, il ne peut y avoir de décalage. Si vous ouvrez une position en période d'activité lente, les changements de prix sont presque inexistants, de sorte que l'attente n'a pas non plus un grand impact sur le niveau de la cotation.
En outre, nous ne pouvons pas parler du bouton "BUY" ici, car nous discutons de systèmes de trading mécaniques, qui prennent leurs propres décisions sans aucun bouton. Bonne chance !
 
Selon les paramètres du serveur de cotation MT4, vous ne pouvez pas effectuer de transactions plus d'une fois toutes les 10 secondes.

C'était en fait le cas dans MetaTrader 3, mais MT4 n'a plus cette restriction.
Mais il faut tout de même être modéré et ne pas faire beaucoup d'opérations à la suite.
 
En fait, c'était comme ça dans MetaTrader 3, mais MT4 n'a plus cette restriction. <br/ translate="no">Mais il faut tout de même faire attention à ne pas faire trop d'opérations à la suite.

Oui, vous avez raison, bien sûr. Il serait préférable de prévoir un retard dès le départ, ce qui a été fait dans la bibliothèque développée. Sinon, si les demandes sont trop fréquentes, le serveur peut bloquer l'adresse de l'utilisateur avec les conséquences correspondantes pour le commerce. Bonne chance !
 
ATTENTION !
La nouvelle version de la bibliothèque MFOREX 2.05 pour l'utilisation des fonctions de l'API MetaTrader 4 a été publiée.
Ses avantages sont :
1. Pendant le travail de la bibliothèque, les fichiers temporaires ne sont pas formés, le transport des données se fait à travers des zones de mémoire partagée. Une telle solution accélère considérablement l'accès à l'information et augmente la fiabilité de la bibliothèque ;
2. En outre, des fonctions spéciales sont mises en œuvre pour le diagnostic du terminal, renvoyant l'heure du dernier tick et le code informatique unique pour le processus d'enregistrement ;
3. La fonction de diagnostic des situations erronées et d'urgence renvoie le code de la situation et enregistre la description dans le journal spécial en russe.
4. Le prix de la bibliothèque a été considérablement réduit. Les utilisateurs enregistrés de l'ancienne version recevront les mises à jour gratuitement.
Lisez tous les détails sur notre site web http://www.min2006.ru
 


Malheureusement, l'EA proposée :
- ne fournit pas l'historique des citations ;
- n'assure pas le suivi des erreurs et des urgences ;
- ne donne pas l'historique des transactions et la liste des positions ouvertes ;
- ne permet pas d'obtenir les derniers cours (sous forme de ticks).

Dans la bibliothèque que je propose, toutes les fonctions manquantes sont implémentées. En outre, l'échange d'informations s'effectue via des zones de mémoire partagée sans générer de fichiers temporaires. Lisez tous les détails sur http://www.min2006.ru
Bonne chance !
 
D'ailleurs, maintenant, ce que propose Min ressemble plus qu'avant à ce que vous pouvez acheter.
Pur imho :)