COMMANDE_POSITION_ID - page 17

 

OrderGetInteger - fonctionne uniquement avec les ordres en attente sur le marché

HistoryOrderGetInteger - travaille avec les commandes remplies dans l'historique

 

Si quelqu'un d'autre est intéressé, le code, l'exécutable et le fichier journal de l'EA sont joints.

MT-5 FORTS

Conclusions :

1. Tant que l'ordre n'est pas complètement exécuté ou supprimé, il n'y a PAS d'historique sur celui-ci.

L'ORDER_POSITION_ID de l'ordre partiellement exécuté n'est pas défini.

Merci à tous, je l'ai eu.

Dossiers :
Test_orders.zip  26 kb
 
йSerj_Che:
HI 0 10:29:25.468 Trades : échange acheter 2.00 SBRF-9.14 au marché
JE 0 10:29:25.531 Trades : échange accepté achat 2.00 SBRF-9.14 au marché
NM 0 10:29:25.562 Trades : échange achat 2.00 SBRF-9.14 au marché placé pour exécution dans 88 ms
MN 0 10:29:25.562 Trades : deal #4522433 buy 2.00 SBRF-9.14 at 6903 done (based on order #4988264)
IE 0 10:29:26.640 Trades : échange vente 2.00 SBPR-9.14 au marché
DL 0 10:29:26.734 Trades : échange accepté vendre 2.00 SBPR-9.14 au marché
MQ 0 10:29:26.734 Trades : échange vente 2.00 SBPR-9.14 au marché placé pour exécution en 92 ms
KF 0 10:29:26.734 Trades : deal #4522434 vendre 1.00 SBPR-9.14 à 5255 fait (basé sur l'ordre #4988265)

DK 0 10:29:26.734 Trades : deal #4522435 vendre 1.00 SBPR-9.14 à 5255 fait (basé sur l'ordre #4988265)

maintenant c'est une exécution partielle.

Les gars, allez, ce listing montre qu'un ordre (#4988265) a été exécuté par deux transactions (#4522435 &#4522434) et n'a rien à voir avec une exécution partielle.

Voici comment cela fonctionne : disons que nous voulons acheter 50 contrats VTBR-9.14 sur le marché. Nous ne pouvons acheter qu'auprès des fournisseurs de liquidités, ceux qui passent des ordres de vente limités. Leur niveau et leur volume sont visibles dans la moitié supérieure de la coupe. Regardons ça :

Nous passons un ordre d'achat. Notre ordre ne peut être exécuté que par 4 vendeurs différents. Nous pouvons voir que nous pouvons acheter 1 contrat à 3874, 40 contrats à 3875, 1 contrat à 3876 et 28 contrats à 3877. Cela signifie que notre commande serait remplie par 4 vendeurs en même temps par 4 transactions :

Transaction #
Prix

Volume/

le volume disponible.

Total

Volume

Temps
1
3874
1/1
112:21:341
2
3875
40/40
4112:21:351
3
3876
1/1
4212:21:363
4
3878
8/28
5012:21:365

Faites attention à l'heure. Le moment où l'on effectue une transaction ne coïncide pas nécessairement avec le moment où l'on passe un ordre. Permettez-moi de donner un autre exemple pour que ce soit plus clair :

Exécution partielle.

Supposons que nous voulions acheter 100 contrats VTBR-9.14 à un prix qui ne soit pas inférieur à 3873. Nous avons fixé une limite d'achat pour 100 contrats au niveau de 3873. Cependant, au moment où nous passons l'ordre, il y a déjà plusieurs vendeurs qui vendent leurs contrats à un meilleur prix que celui spécifié dans notre ordre :

Volume
Prix
1
3871
3
3872
1
3872
39
3872
263872

Immédiatement après le placement de cet ordre limite, 5 transactions auront lieu, qui exécutera partiellement notre ordre limite. pour un montant de 70 contrats (1+3+1+39+26).

Les transactions exécutées seront placées dans l'historique des transactions et l'ordre à cours limité lui-même sera toujours actif et sera visible dans l'onglet "Trade" de ce formulaire :

Une fois que notre ordre aura fusionné les ordres à cours limité de sens opposé, son prix sera la meilleure offre pour ceux qui souhaitent vendre leurs contrats :

Volume
Prix
30 (C'est notre offre)
3873
2 (les offres des autres participants sont pires)
3872
12
3871

Comme notre offre est meilleure et que le marché est liquide, notre ordre sera exécuté par d'autres participants au marché ayant des ordres opposés, au marché ou en attente.

Après un certain temps, la commande sera remplie et ira dans l'"Historique".

Si nous analysons l'ensemble du processus en termes de temps, nous obtenons ce qui suit :

1. Nous avons fixé un ordre limite. Son temps de réglage correspond à ORDER_TIME_SETUP_MSC.

2. Les transactions initiées par cet ordre commencent à se déclencher. Ces transactions sont immédiatement ajoutées à l'historique. L'ordre lui-même se trouve toujours dans l'onglet "Trade" et se présente comme indiqué dans la figure ci-dessus.

3. Après un certain temps, toutes les transactions se déclenchent, l'ordre gagne le volume nécessaire et est déplacé vers l'historique des ordres. Son heure d'exécution ORDER_TIME_DONE correspond généralement à la dernière transaction exécutée.

L'ordre n'a pas atteint le volume nécessaire pour certaines raisons (manque de liquidité, expiration de l'ordre). Dans ce cas, il sera déplacé vers l'historique dans l'état "partiellement exécuté". Cela signifie que tous les volumes demandés ne seront pas exécutés par des transactions.

Notez la capture d'écran de cet ordre :

L'ordre a été exécuté en 25 secondes ( !) et pendant tout ce temps il était dans l'onglet des ordres actifs. Et seul le dernier échange a été déplacé dans l'histoire. Son ORDER_TIME_DONE, respectivement, est maintenant égal à l'heure de la dernière transaction.

 

P/S Comme je l'avais promis (concernant la publication de la réponse de Servicedesk).

Je n'obtiendrai pas de réponse du Service Desk parce que j'ai retiré ma demande car elle n'était plus nécessaire.

Je remercie komposter pour sa proposition d'écrire un EA de test avec

Je vous tiendrai au courant et vous fournirai des comptes rendus détaillés.

 
papaklass:

D'accord ! Ne voulez-vous pas remercier Integer, qui vous a accompagné toute la soirée et vous a fait réfléchir ?

Aidez-vous après une telle attitude...

Voulez-vous continuer ?
 
papaklass:

D'accord ! Ne voulez-vous pas remercier Integer, qui vous a accompagné toute la soirée et vous a fait réfléchir ?

Aidez-vous après une telle attitude...

C'était sa faute, tu n'aurais pas dû l'aider à réfléchir, tu aurais dû le faire pour lui.
 
sandex:
C'est son erreur, il n'aurait pas dû l'aider à penser, mais l'a fait pour lui.

sandex :

Vous cherchez dans la mauvaise partie,OrderGetInteger(ORDER_POSITION_ID) - vous essayez de chercher dans la partie qui n'a pas été impliquée dans l'ouverture/la modification/la fermeture de la position.

vous devez ressembler à ceci HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

-----------------

Votre commentaire ?

Voulez-vous continuer ?

 
Mikalas:

sandex :

Vous cherchez dans la mauvaise partie,OrderGetInteger(ORDER_POSITION_ID) - vous essayez de chercher dans la partie qui n'a pas été impliquée dans l'ouverture/la modification/la fermeture de la position.

vous devez ressembler à ceci HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

-----------------

Votre commentaire ?

Voulez-vous continuer ?

Pourquoi ? Pourquoi faites-vous cela ? Comme si l'homme avait écrit des bêtises ? Ce ne serait pas une absurdité si tu n'avais pas écrit ta propre absurdité. Vous avez écrit que l'entrée de l'ordre apparaît dans l'historique des ordres et qu'il est toujours sur le marché.

Voulez-vous continuer ?

 

L'achèvement, je pense, est le dernier.

Aucun forum auquel j'ai déjà participé ou auquel je participe actuellement.

Les utilisateurs du forum n'ont pas cette attitude les uns envers les autres !

Un forum est une communauté de personnes partageant les mêmes idées qui résolvent (discutent)

C'est une communauté de personnes partageant les mêmes idées qui peuvent travailler ensemble pour résoudre des problèmes et s'entraider.

Toutes les personnes sont DIFFÉRENTES - l'une saisit l'essence de la question à la volée, l'autre a besoin de temps,

pour le comprendre.

Pensez-y à loisir !

P / S Et je remercie Yurich et komposter, précisément parce que.

J'ai dit merci à Yurich et à komposter parce qu'ils n'ont rien dit d'inutile.

A un homme (même s'il a tort ou se trompe).

Ils sont un exemple de vrais utilisateurs du forum !

 
papaklass:

Je suis déjà assis dans le parterre. J'ai hâte d'y être.... :)

Sasha, c'est une position très confortable pour s'amuser...