J'aimerais clarifier quelques points.
1. l'article implique que la fonction OrderCheck() est destinée au contrôle primaire d'une requête, et que le contrôle primaire à l'aide de la fonction OrderCheck() est effectué directement par le serveur (côté serveur), et non dans le terminal. Est-ce correct ?
- www.mql5.com
2. L'ouvrage de référence indique que, pour la fonction OrderSend(), "en cas de vérification réussie de la structure de base, true est renvoyé". Nous pouvons en conclure que true est renvoyé immédiatement après avoir vérifié l'exactitude de la demande.
Mais un peu plus bas dans la note, il est ajouté que "si l'ordre est accepté avec succès par le serveur commercial, la fonction OrderSend() renvoie true". Cette note implique que true n'est renvoyé qu'après l'acceptation de l'ordre par le serveur.
Or, il peut arriver que la demande ait déjà été vérifiée, mais qu'elle n'ait pas encore été acceptée par le courtier. Par conséquent, veuillez préciser à quel moment la fonction OrderSend() renvoie true - immédiatement après avoir vérifié l'exactitude de la demande ou seulement après que le serveur a accepté l'ordre ?
- www.mql5.com
Je voudrais clarifier quelques points.
1. l'article laisse entendre que la fonction OrderCheck() est destinée au contrôle primaire d'une requête, et que le contrôle primaire à l'aide de la fonction OrderCheck() est effectué directement par le serveur (du côté du serveur), et non dans le terminal. Est-ce exact ?
D'après ce que j'ai compris, le traitement est effectué du côté du terminal du client.
Cela est également confirmé par le message suivant.
3. L'article précise que "les demandes reçues par le serveur commercial sont stockées sous forme d'ordres, qui peuvent être en attente ou à exécution immédiate aux prix du marché".
Comme nous le savons, l'exécution immédiate est l'un des trois modes d'exécution des ordres de marché. La question se pose donc de savoir ce qu'il advient des ordres de marché dans les modes Exécution sur le marché et Exécution à la demande. Peut-on généraliser en disant que "les demandes reçues par le serveur commercial sont stockées sous forme d'ordres, qui peuvent être des ordres de marché en attente ou immédiats aux prix du marché" ?
D'après ce que j'ai compris, le traitement est effectué du côté du terminal du client.
Cela est également confirmé par le message suivant.
D'accord, je suggère que nous attendions une réponse officielle. Merci, comme toujours, pour ces informations complémentaires. C'est aussi ce que je pensais tout à l'heure.
Addendum. Je me suis même rendu compte de ce qui avait pu me perturber dans cette question. Dans l'article, l'expression "traitement primaire" fait référence à la fonction OrderCheck(), et j'ai pris cette référence au pied de la lettre, sans aucun recul.
Je voudrais clarifier quelques points.
1. l'article laisse entendre que la fonction OrderCheck() est destinée au contrôle primaire d'une requête, et que le contrôle primaire à l'aide de la fonction OrderCheck() est effectué directement par le serveur (du côté du serveur), et non dans le terminal. Est-ce exact ?
L'article indique que le contrôle initial est effectué dans le terminal. OrderCheck() fonctionne également dans le terminal, rien n'est envoyé au serveur.
L'article dit : "après l'envoi d'une demande, celle-ci arrive au serveur et subit un contrôle initial".
J'ai également été troublé par le fait que, dans l'article, l'expression "traitement primaire" fait référence à la fonction OrderCheck(), et j'ai donc pris cette référence au pied de la lettre, sans y réfléchir à deux fois.
2.
Par ailleurs, il peut arriver que la demande ait déjà été vérifiée, mais qu'elle n'ait pas encore été acceptée par le courtier. Par conséquent, veuillez préciser à quel moment exact la fonction OrderSend() renvoie true - immédiatement après avoir vérifié l'exactitude de la demande ou seulement après que le serveur a accepté l'ordre ?
La demande correcte est acceptée par le serveur et la réponse est envoyée au terminal dans le champ retcode de la structure MqlTradeResult - https://www.mql5.com/fr/docs/constants/errorswarnings/enum_trade_return_codes.
Code | Identifiant | Description du code |
10008 | TRADE_RETCODE_PLACED | Commande passée |
- www.mql5.com
La demande correcte est acceptée par le serveur et la réponse est envoyée au terminal dans le champ retcode de la structure MqlTradeResult - https://www.mql5.com/fr/docs/constants/errorswarnings/enum_trade_return_codes.
| Code | Identifiant | Description du code |
| 10008 | TRADE_RETCODE_PLACED | La commande est passée |
Par ailleurs, j'ai été dérouté par le fait que l'article donne l'expression "traitement initial" comme référence à la fonction OrderCheck(), et j'ai pris cette référence au pied de la lettre, sans recul.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Événements de trade dans MetaTrader 5 a été publié :
Un suivi de l'état actuel d'un compte de trade implique le contrôle des positions ouvertes et des ordres. Avant qu'un signal de trade ne devienne une transaction, il doit être envoyé depuis le terminal client en tant que demande au serveur de trade, où il sera placé dans la file d'attente des ordres en attente de traitement. Accepter une demande via le serveur de trade, la supprimer à son expiration ou conclure une transaction sur sa base - toutes ces actions sont suivies d'événements de trade ; et le serveur de trade en informe le terminal.
Un autre exemple d'événements multiples est la réalisation de plusieurs transactions sur la base d'un ordre unique, au cas où le volume requis ne peut être obtenu à partir d'une offre opposée unique. Le serveur de trade crée et envoie les messages sur chaque événement au terminal client. C'est pourquoi la fonction OnTrade() peut être appelée plusieurs fois pour un événement apparemment unique. Il s'agit d'un exemple simple de la procédure de traitement des ordres dans le sous-système de trade de la plateforme MetaTrader 5.
Voici un exemple : alors qu'un ordre en attente d'achat de 10 lots d'EURUSD attend d'être exécuté, des offres opposées de vente de 1, 4 et 5 lots apparaissent. Ces trois demandes réunies donnent le volume requis de 10 lots, elles sont donc exécutées une par une, si la politique de remplissage permet d'effectuer l'opération de trade partiellement.
A la suite de l'exécution de 4 ordres, le serveur effectuera 3 transactions de 1, 4 et 5 lots sur la base des demandes opposées existantes. Combien d'événements de trade seront générés dans ce cas ? La première demande opposée de vente d'un lot entraînera l'exécution d'une transaction sur 1 lot. C'est le premier événement de trade (1 lot). Mais l'ordre en attente d'achat de 10 lots est également modifié ; maintenant c'est l'ordre d'achat de 9 lots d'EURUSD. Le changement de volume de l'ordre en attente est le deuxième événement de trade (changement de volume d'un ordre en attente).
Auteur : MetaQuotes