FORTS. Questions relatives à l'application de la loi - page 62

 

Bon après-midi à tous !

J'ai une situation légèrement différente. Courtier BCS. Un ordre au marché n'est pas exécuté la première fois.

Envoi d'un ordre d'achat au marché. La fonction renvoie "Commande passée" et le numéro de commande, mais la commande n'est pas réellement exécutée !

Et donc le robot fait de nombreuses tentatives. Envoie un ordre d'achat au marché, reçoit une réponse positive, mais pas d'échange. Dans le même temps, le numéro de commande dans la réponse est nouveau à chaque fois.

En conséquence, la position s'ouvrira tôt ou tard, mais vous devez bombarder le courtier d'ordres, ce qui est clairement faux.

S'il vous plaît, aidez-moi, je ne comprends pas si mon robot est bogué ou si le courtier se trompe? Il n'y a rien à redire sur le robot, toutes les fonctions de vérification se déroulent comme prévu et les réponses sont vérifiées.

Les courtiers ont appelé, mais le "consultant" a haussé les épaules, comme si une affaire était ouverte avec ses mains, alors il y avait une erreur dans le robot , mais ici, ils sont en faillite.

 2015.12 . 23 11 : 02 : 00.053 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 55 ms
2015.12 . 23 11 : 02 : 00.006 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 59.554 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 59.507 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 59.413 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 116 ms
2015.12 . 23 11 : 01 : 59.304 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 59.117 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 59.055 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 58.774 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 54 ms
2015.12 . 23 11 : 01 : 58.711 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 58.680 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 58.633 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 58.259 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 74 ms
2015.12 . 23 11 : 01 : 58.181 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.916 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.869 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.775 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 57.729 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.682 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 57.619 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.557 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.510 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.385 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.323 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.292 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 57.245 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 57.058 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 63 ms
2015.12 . 23 11 : 01 : 56.995 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.777 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 56.730 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.481 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 56.434 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.169 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 56.122 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 56.075 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 56.028 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.451 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 55.389 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.326 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 55.279 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.155 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 55.092 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 55.045 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 54 ms
2015.12 . 23 11 : 01 : 54.983 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.983 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 54.921 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.843 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 54.796 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.655 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 54.609 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.546 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 54.484 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 54.453 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 151 ms
2015.12 . 23 11 : 01 : 54.297 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.844 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 53.797 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.751 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 53.688 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.423 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 53.376 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.361 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 60 ms
2015.12 . 23 11 : 01 : 53.298 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.283 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 53.236 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.142 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 53.080 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 53.033 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.986 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.877 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 52.830 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.830 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 69 ms
2015.12 . 23 11 : 01 : 52.752 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.643 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.596 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.487 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.440 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.425 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 52.378 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 52.081 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 55 ms
2015.12 . 23 11 : 01 : 52.019 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.988 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 51.941 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.879 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 51 ms
2015.12 . 23 11 : 01 : 51.832 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.364 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 51.317 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.223 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 51.161 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 51.114 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 51.052 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.989 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.943 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.693 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.631 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.584 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.521 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.475 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.412 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.397 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.350 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.225 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 53 ms
2015.12 . 23 11 : 01 : 50.178 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.147 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 50.100 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 50.053 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 49.991 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 49.975 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 52 ms
2015.12 . 23 11 : 01 : 49.913 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
2015.12 . 23 11 : 01 : 49.866 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487 placed for execution in 51 ms
2015.12 . 23 11 : 01 : 49.804 Trades   'xxxxxxx' : exchange buy 66.00 Si- 3.16 at market sl: 72487
 
Сергей:

Bonjour à tous !

Ma situation est un peu différente. Mon courtier est BCS. L'ordre de marché n'est pas exécuté à la première tentative.

J'envoie un ordre d'achat au marché. La fonction renvoie "Ordre placé" et le numéro de l'ordre, mais en réalité l'ordre n'est pas exécuté !

Et ainsi le robot fait de nombreuses tentatives. Il envoie un ordre d'achat sur le marché, obtient une réponse positive, mais pas de transaction. Le numéro d'ordre dans la réponse est nouveau à chaque fois.

Par conséquent, la position s'ouvrira tôt ou tard, mais je dois bombarder le courtier d'ordres, ce qui est manifestement une erreur.

Je ne sais pas si mon robot forex a un problème ou si mon courtier fonctionne mal. Je n'ai aucun droit sur le robot, toutes les routines de contrôle fonctionnent correctement et les réponses sont vérifiées.

J'ai appelé les courtiers, mais le "consultant" a secoué ses mains et a dit que si une transaction est ouverte à la main, cela signifie que le robot est mauvais et qu'ils n'ont rien à voir avec cela.

Sergiy !

Il est difficile de se prononcer sans avoir vu votre code.

Mais, à en juger par l'impression, vous ne contrôlez pas correctement le placement des commandes.

 
Михаил:

Sergei !

C'est très difficile à dire sans voir votre code.

Mais à en juger par l'impression, vous ne contrôlez pas correctement le réglage de la commande.


Mikhail, voici le journal du terminal, c'est-à-dire qu'il accepte l'ordre, dit qu'il est correct, renvoie le code de réussite et le numéro de l'ordre, c'est-à-dire qu'il met l'ordre dans la file d'attente d'exécution mais ne l'exécute pas. Et tellement, beaucoup de fois.

Mais je crois que j'ai compris.

Selon l'algorithme, le risque autorisé vous permet d'ouvrir une transaction pour la totalité du dépôt. Volume de transaction = fonds disponibles / GO, c'est-à-dire que le dépôt est utilisé presque jusqu'au dernier centime. (C'est une erreur, bien sûr, et il ne faut pas procéder de cette façon).

Techniquement, nous avons assez d'argent pour ouvrir une transaction dans ce volume et l'ordre est vérifié par le terminal et accepté par le noyau MT5(la fonction OrderSend renvoie true et le numéro de l'ordre),

Mais l'ordre est rejeté quelque part dans la file d'attente d'exécution (chez le courtier ou à la passerelle avec la bourse) et n'est donc pas exécuté. C'est là qu'intervient la faille de MT5 du côté de Metacquotes.

Le problème est que, en tant que client, je ne suis pas informé de cette situation de quelque manière que ce soit. Tout s'est bien passé pour le robot, mais en fait l'ordre a été rejeté par le courtier/la passerelle/la bourse (je ne peux que spéculer ici).


La fonction OrderSend aurait dû rejeter l'ordre et renvoyer le code d'erreur TRADE_RETCODE_NO_MONEY au robot mais cela ne s'est pas produit pour une raison quelconque.

Il semble que nous devions retracer l'exécution de OnTradeTransaction en détail.

 
Сергей:


Michael, c'est le journal du terminal, c'est-à-dire qu'il accepte l'ordre, dit qu'il est correctement rempli, renvoie le code de réussite et le numéro de l'ordre, c'est-à-dire qu'il met l'ordre dans la file d'attente d'exécution, mais ne l'exécute pas. Et tellement, beaucoup de fois.

Mais je crois que j'ai compris.

Selon l'algorithme, le risque autorisé vous permet d'ouvrir une transaction pour la totalité du dépôt. Volume de transaction = fonds disponibles / CS, c'est-à-dire que le dépôt est utilisé presque jusqu'au dernier centime. (C'est bien sûr une erreur, vous ne pouvez pas faire cela).

Techniquement, nous avons assez d'argent pour ouvrir une transaction dans ce volume et l'ordre est vérifié par le terminal et accepté par le noyau MT5(la fonction OrderSend renvoie true et le numéro de l'ordre),

Mais l'ordre est rejeté quelque part dans la file d'attente d'exécution (chez le courtier ou à la passerelle avec la bourse) et n'est donc pas exécuté. C'est là qu'intervient la faille de MT5 du côté de Metacquotes.

Le problème est que, en tant que client, je ne suis pas informé de cette situation de quelque manière que ce soit. Pour le robot, c'est réussi, mais en fait l'ordre a été rejeté par le courtier/la passerelle/la bourse (je ne peux que spéculer ici).


La fonction OrderSend aurait dû rejeter l'ordre et renvoyer le code d'erreur TRADE_RETCODE_NO_MONEY au robot mais, pour une raison quelconque, elle ne l'a pas fait.

Une fois de plus, vous ne contrôlez pas correctement le réglage de la commande.

Ce n'est pas parce que vous avez reçu une FACTURE d'un ordre que l'ordre est placé sur l'échange !

 
Михаил:

Une fois encore, je répète que vous ne contrôlez pas correctement la mise en place de l'ordre.

Le fait que vous ayez reçu une FACTURE d'un ordre ne signifie pas du tout que l'ordre a été placé sur l'échange !

Je suis d'accord, il s'avère que j'ai un manque de connaissances sur cette question ici.

Je n'ai jamais rencontré ce comportement auparavant, j'ai trivialement envoyé par marché et il a toujours soit ouvert ou obtenu une erreur immédiatement.

Je n'avais pas besoin d'entrer dans les détails des nuances de bas niveau de l'exécution des ordres dans la file d'attente. Et là...

 
Сергей:

Je suis d'accord, il s'avère que j'ai un manque de connaissances sur ce sujet.

Je n'ai jamais rencontré ce comportement auparavant, j'ai envoyé trivialement par marché et il s'est toujours ouvert ou a obtenu une erreur immédiatement.

En général, je n'avais pas besoin d'entrer dans les détails de bas niveau de l'exécution des ordres dans la file d'attente. Et là...

Après avoir reçu un ordre, utiliser la fonction OrderRealSelect()

https://www.mql5.com/ru/forum/67298/page2#comment_2089220

ФОРТС: В помощь начинающим
ФОРТС: В помощь начинающим
  • www.mql5.com
Установка отложенного ордера командой OrderSend(). - Страница 2 - Категория: биржевой трейдинг
 

C'est à peu près ce que vous devez faire :

//+------------------------------------------------------------------+
//|                                                   Test_array.mq5 |
//|                                          Copyright 2015, Mikalas |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Mikalas"
#property link      "https://www.mql5.com"
#property version   "1.00"
//
#define  ERR_ZERO_TICKET -1
//
enum ENUM_ORD_REAL_STATE
{
  ORD_NOT_SPECIFIED         = 0, //Состояние ордера не определено
  ORD_NONE_CANCELED         = 1, //Ордера нет, отменён пользователем
  ORD_NONE_PARTIAL_CANCELED = 2, //Ордера нет, исполнился частично (не был залит вторым объёмом)
  ORD_NONE_PARTIAL          = 3, //Ордера нет, исполнился частично
  ORD_NONE_EXPIRED          = 4, //Ордера нет, удалён по сроку
  ORD_NONE_FILLED           = 5, //Ордера нет, исполнился полностью
  ORD_NONE_REJECTED         = 6, //Ордера нет, отклонён брокером(биржей)
  ORD_BUSY                  = 7, //Ордер находится в переходном состоянии
  ORD_EXIST                 = 8, //Ордер выставлен на биржу, возможны действия над ним
  ORD_EXIST_PARTIAL         = 9  //Ордер выставлен на биржу, частично исполнился, возможны действия над ним
};
enum ENUM_ORD_SELECT
{
  SELECT_ERROR = 0,
  SELECT_FALSE = 1,
  SELECT_TRUE  = 2,
  SELECT_BUSY  = 3
};
//
struct ORDER_DATA
{
  int                     error_code;
  datetime                time_setup;
  ENUM_ORDER_TYPE         type;
  ENUM_ORDER_STATE        state;
  ENUM_ORD_REAL_STATE     real_state;
  datetime                expiration;
  datetime                time_done;
  long                    t_set_msc;
  long                    t_done_msc; 
  ENUM_ORDER_TYPE_FILLING type_filling;
  ENUM_ORDER_TYPE_TIME    type_time;
  long                    magic;
  long                    pos_id;
  double                  vol_init;
  double                  vol_cur;
  double                  price_open;
  double                  sl;
  double                  tp;
  double                  price_cur;
  double                  price_stlim;
  string                  symbol;
  string                  comment;      
};
//
//
ulong order_ticket;
//
//+------------------------------------------------------------------+
// Expert Order Real Select function                                 |
//+------------------------------------------------------------------+
ENUM_ORD_SELECT OrderRealSelect( const ulong ticket, ORDER_DATA &ord_data, const bool get_data )
{
  double init_vol = 0;
  double cur_vol = 0;
  ZeroMemory( ord_data );
  ord_data.real_state = ORD_NOT_SPECIFIED;
  ord_data.error_code = ERR_SUCCESS;
  ResetLastError();
//---  
  if ( ticket > 0 )
  {
    if ( HistoryOrderSelect( ticket ) )
    {
      if ( get_data )
      {
        ord_data.comment = HistoryOrderGetString( ticket, ORDER_COMMENT );
        ord_data.expiration = datetime( HistoryOrderGetInteger( ticket, ORDER_TIME_EXPIRATION ) ); 
        ord_data.magic = HistoryOrderGetInteger( ticket, ORDER_MAGIC );
        ord_data.pos_id = HistoryOrderGetInteger( ticket, ORDER_POSITION_ID );
        ord_data.price_cur = HistoryOrderGetDouble( ticket, ORDER_PRICE_CURRENT );
        ord_data.price_open = HistoryOrderGetDouble( ticket, ORDER_PRICE_OPEN );
        ord_data.price_stlim = HistoryOrderGetDouble( ticket, ORDER_PRICE_STOPLIMIT );
        ord_data.sl = HistoryOrderGetDouble( ticket, ORDER_SL );
        ord_data.state = ENUM_ORDER_STATE( HistoryOrderGetInteger( ticket, ORDER_STATE ) );
        ord_data.symbol = HistoryOrderGetString( ticket, ORDER_SYMBOL );
        ord_data.t_done_msc = datetime( HistoryOrderGetInteger( ticket, ORDER_TIME_DONE_MSC ) );
        ord_data.t_set_msc = datetime( HistoryOrderGetInteger( ticket, ORDER_TIME_SETUP_MSC ) );
        ord_data.time_done = datetime( HistoryOrderGetInteger( ticket, ORDER_TIME_DONE ) );
        ord_data.time_setup = datetime( HistoryOrderGetInteger( ticket, ORDER_TIME_SETUP ) );
        ord_data.tp = HistoryOrderGetDouble( ticket, ORDER_TP );
        ord_data.type = ENUM_ORDER_TYPE( HistoryOrderGetInteger( ticket, ORDER_TYPE ) );
        ord_data.type_filling = ENUM_ORDER_TYPE_FILLING( HistoryOrderGetInteger( ticket, ORDER_TYPE_FILLING ) );
        ord_data.type_time = ENUM_ORDER_TYPE_TIME( HistoryOrderGetInteger( ticket, ORDER_TYPE_TIME ) );
        ord_data.vol_cur = HistoryOrderGetDouble( ticket, ORDER_VOLUME_CURRENT );
        ord_data.vol_init = HistoryOrderGetDouble( ticket, ORDER_VOLUME_INITIAL );
      }
      else
      {
        ord_data.state = ENUM_ORDER_STATE( HistoryOrderGetInteger( ticket, ORDER_STATE ) );
        cur_vol = HistoryOrderGetDouble( ticket, ORDER_VOLUME_CURRENT );
        init_vol = HistoryOrderGetDouble( ticket, ORDER_VOLUME_INITIAL );
      }   
//---
      switch( ord_data.state )
      { 
        case ORDER_STATE_CANCELED: if ( get_data )
                                   {
                                     if ( ord_data.vol_init == ord_data.vol_cur )
                                     {
                                       ord_data.real_state = ORD_NONE_CANCELED;
                                     }
                                     else
                                     {
                                       ord_data.real_state = ORD_NONE_PARTIAL_CANCELED;
                                     }
                                   }
                                   else
                                   {
                                     if ( init_vol == cur_vol )
                                     {
                                       ord_data.real_state = ORD_NONE_CANCELED;
                                     }
                                     else
                                     {
                                       ord_data.real_state = ORD_NONE_PARTIAL_CANCELED;
                                     }
                                   }    
                                   break;
                                        
        case ORDER_STATE_PARTIAL:  ord_data.real_state = ORD_NONE_PARTIAL;
                                   break;
                                         
        case ORDER_STATE_EXPIRED:  ord_data.real_state = ORD_NONE_EXPIRED;
                                   break;
                                                                              
        case ORDER_STATE_FILLED:   ord_data.real_state = ORD_NONE_FILLED;
                                   break;
                                         
        case ORDER_STATE_REJECTED: ord_data.real_state = ORD_NONE_REJECTED;
                                   break;  
      }
    }
    else
    if ( OrderSelect( ticket ) )
    {
      if ( get_data )
      {
        ord_data.comment = OrderGetString( ORDER_COMMENT );
        ord_data.expiration = datetime( OrderGetInteger( ORDER_TIME_EXPIRATION ) ); 
        ord_data.magic = OrderGetInteger( ORDER_MAGIC );
        ord_data.pos_id = OrderGetInteger( ORDER_POSITION_ID );
        ord_data.price_cur = OrderGetDouble( ORDER_PRICE_CURRENT );
        ord_data.price_open = OrderGetDouble( ORDER_PRICE_OPEN );
        ord_data.price_stlim = OrderGetDouble( ORDER_PRICE_STOPLIMIT );
        ord_data.sl = OrderGetDouble( ORDER_SL );
        ord_data.state = ENUM_ORDER_STATE( OrderGetInteger( ORDER_STATE ) );
        ord_data.symbol = OrderGetString( ORDER_SYMBOL );
        ord_data.t_done_msc = datetime( OrderGetInteger( ORDER_TIME_DONE_MSC ) );
        ord_data.t_set_msc = datetime( OrderGetInteger( ORDER_TIME_SETUP_MSC ) );
        ord_data.time_done = datetime( OrderGetInteger( ORDER_TIME_DONE ) );
        ord_data.time_setup = datetime( OrderGetInteger( ORDER_TIME_SETUP ) );
        ord_data.tp = OrderGetDouble( ORDER_TP );
        ord_data.type = ENUM_ORDER_TYPE( OrderGetInteger( ORDER_TYPE ) );
        ord_data.type_filling = ENUM_ORDER_TYPE_FILLING( OrderGetInteger( ORDER_TYPE_FILLING ) );
        ord_data.type_time = ENUM_ORDER_TYPE_TIME( OrderGetInteger( ORDER_TYPE_TIME ) );
        ord_data.vol_cur = OrderGetDouble( ORDER_VOLUME_CURRENT );
        ord_data.vol_init = OrderGetDouble( ORDER_VOLUME_INITIAL );
      }
      else
      {
        ord_data.state = ENUM_ORDER_STATE( OrderGetInteger( ORDER_STATE ) );
      }
//--- 
      switch( ord_data.state )
      { 
        case ORDER_STATE_STARTED:
        case ORDER_STATE_REQUEST_ADD:
        case ORDER_STATE_REQUEST_MODIFY:
        case ORDER_STATE_REQUEST_CANCEL: ord_data.real_state = ORD_BUSY;
                                         break; 
 
        case ORDER_STATE_PARTIAL:        ord_data.real_state = ORD_EXIST_PARTIAL;
                                         break;
                                          
        case ORDER_STATE_PLACED:         ord_data.real_state = ORD_EXIST;
                                         break;
      }
    }
    else
    {
      ord_data.error_code = GetLastError();
    }  
//---   
    if ( ( ord_data.error_code != ERR_SUCCESS ) ||
       ( ord_data.real_state == ORD_NOT_SPECIFIED ) )
    {
      return( SELECT_ERROR );
    }
    else
    {
      switch( ord_data.real_state )
      {
        case ORD_BUSY:          return( SELECT_BUSY );
                                break;
                        
        case ORD_EXIST:   
        case ORD_EXIST_PARTIAL: return( SELECT_TRUE );
                                break;
                              
        default:                return( SELECT_FALSE );
                                break;                                             
      }
    }
  } 
  else
  {
    ord_data.error_code = ERR_ZERO_TICKET; 
    return( SELECT_ERROR );
  }
}
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   return( INIT_SUCCEEDED );
}
//
void OnTick()
{
  if ( PositionSelect( _Symbol ) )
  {
    //Позиция открыта, ордер исполнился
  }
  else
  {
    if ( order_ticket > 0 )
    {
      //Проверяем что с ордером
      ORDER_DATA order_data;
      ENUM_ORD_SELECT ord_select = OrderRealSelect( order_ticket, order_data, true );
      switch( ord_select )
      {
        case SELECT_BUSY:  //Ничего не делаем, ордер в переходном состоянии
                           break;
        
        case SELECT_FALSE: //Ордера нет .... Проверяем, что с ним произошло
                           break;
                           
        case SELECT_TRUE: //Ордер есть.... Проверяем почему есть, а не исполнился
                           break; 
                           
        case SELECT_ERROR: //Проверяем что за ошибка
                           break;                                                             
      }
    }
    else
    {
      //Позиции нет, ордера нет. Устанавливаем ордер
    }
  }
}
 
 
Михаил:

C'est à peu près ce que vous devez faire :

Mikhail, merci ! Il s'agit d'une fonction très utile.
 
Cela fait un an que ce fil de discussion a commencé..... :(
 
<br / translate="no">

Aitugan, peut-être y aura-t-il des commentaires après tout ? :((

Je comprends bien sûr, je ne veux surtout pas vous distraire de vos vacances à Chypre, mais d'une manière ou d'une autre, le silence s'est prolongé pendant une durée obscène. :((