ORDINE_POSIZIONE_ID - pagina 17

 

OrderGetInteger - funziona solo con gli ordini pendenti nel mercato

HistoryOrderGetInteger - lavora con gli ordini riempiti nella storia

 

Se qualcun altro è interessato, il codice, l'eseguibile e il file di log EA sono allegati.

FORTI MT-5

Conclusioni:

1. Finché l'ordine non è completamente eseguito o rimosso, non c'è storia su di esso.

L'ORDER_POSITION_ID per l'ordine parzialmente eseguito non è impostato.

Grazie a tutti, ho capito.

File:
Test_orders.zip  26 kb
 
йSerj_Che:
HI 0 10:29:25.468 Trades : scambio comprare 2.00 SBRF-9.14 a mercato
JE 0 10:29:25.531 Trades : accettato scambio acquisto 2.00 SBRF-9.14 a mercato
NM 0 10:29:25.562 Trades : scambio acquistare 2.00 SBRF-9.14 a mercato piazzato per l'esecuzione in 88 ms
MN 0 10:29:25.562 Trades : affare #4522433 comprare 2.00 SBRF-9.14 a 6903 fatto (basato sull'ordine #4988264)
IE 0 10:29:26.640 Trades : scambio vendere 2.00 SBPR-9.14 a mercato
DL 0 10:29:26.734 Trades : accettato scambio vendere 2.00 SBPR-9.14 a mercato
MQ 0 10:29:26.734 Trades : scambio vendere 2.00 SBPR-9.14 a mercato piazzato per esecuzione in 92 ms
KF 0 10:29:26.734 Trades : affare #4522434 vendere 1.00 SBPR-9.14 a 5255 fatto (basato sull'ordine #4988265)

DK 0 10:29:26.734 Trades : affare #4522435 vendere 1.00 SBPR-9.14 a 5255 fatto (basato sull'ordine #4988265)

ora è un'esecuzione parziale.

Ragazzi, andiamo, questo elenco mostra che un ordine (#4988265) è stato eseguito da due operazioni (#4522435 &#4522434) e non ha nulla a che fare con un'esecuzione parziale.

Ecco come funziona: diciamo che vogliamo comprare 50 contratti VTBR-9.14 a mercato. Possiamo comprare solo da fornitori di liquidità, quei tipi che mettono ordini di vendita con limite. Il loro livello e volume può essere visto nella metà superiore della tazza. Guardiamolo:

Piazziamo un ordine di acquisto. Il nostro ordine può essere eseguito solo da 4 venditori diversi. Possiamo vedere che possiamo comprare 1 contratto a 3874, 40 contratti a 3875, 1 contratto a 3876 e 28 contratti a 3877. Significa che il nostro ordine verrebbe riempito da 4 venditori in una volta per 4 offerte:

Transazione #
Prezzo

Volume/

volume disponibile.

Totale

Volume

Tempo
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

Fate attenzione all'ora. Il momento di effettuare una negoziazione non coincide necessariamente con il momento di piazzare un ordine. Lasciatemi fare un altro esempio per renderlo più chiaro:

Esecuzione parziale.

Supponiamo di voler comprare 100 contratti VTBR-9.14 ad un prezzo non peggiore di 3873. Abbiamo impostato il BuyLimit per 100 contratti al livello di 3873. Tuttavia, nel momento in cui effettuiamo l'ordine, ci sono già diversi venditori che vendono i loro contratti a un prezzo migliore di quello specificato nel nostro ordine:

Volume
Prezzo
1
3871
3
3872
1
3872
39
3872
263872

Immediatamente dopo aver piazzato questo ordine limite, avranno luogo 5 scambi, che eseguirà parzialmente il nostro ordine limite. per un importo di 70 contratti (1+3+1+39+26).

Le transazioni eseguite andranno nella cronologia delle transazioni e l'ordine Limit stesso sarà ancora attivo e sarà visibile nella scheda "Trade" così com'è:

Una volta che il nostro ordine fonde gli ordini limite della direzione opposta, il suo prezzo sarà la migliore offerta per coloro che desiderano vendere i loro contratti:

Volume
Prezzo
30 (Questa è la nostra offerta)
3873
2 (le offerte degli altri partecipanti sono peggiori)
3872
12
3871

Poiché la nostra offerta è migliore e il mercato è liquido, il nostro ordine sarà riempito da altri partecipanti al mercato con ordini opposti, a mercato o in sospeso.

Dopo un po' l'ordine sarà riempito e andrà nella "Storia".

Se analizziamo l'intero processo in termini di tempo, si ottiene quanto segue:

1. Abbiamo impostato un ordine limite. Il suo tempo di impostazione corrisponde a ORDER_TIME_SETUP_MSC.

2. I trade iniziati da questo ordine iniziano a scattare. Questi scambi sono immediatamente aggiunti alla cronologia. L'ordine stesso è ancora nella scheda "Trade" e appare come mostrato nella figura qui sopra.

3. Dopo un po' tutte le operazioni si attivano, l'ordine guadagna il volume necessario e viene spostato nella cronologia degli ordini. Il suo tempo di esecuzione ORDER_TIME_DONE corrisponde generalmente all'ultimo trade eseguito.

L'ordine non ha raggiunto il volume necessario a causa di alcune ragioni (mancanza di liquidità, scadenza dell'ordine). In questo caso, sarà spostato nella storia nello stato "parzialmente eseguito". Questo significa che non tutto il volume richiesto sarà eseguito dalle transazioni.

Notate lo screenshot di questo ordine:

L'ordine è stato eseguito entro 25 secondi (!) e per tutto questo tempo era nella scheda degli ordini attivi. E solo l'ultimo scambio è stato spostato nella storia. Il suo ORDER_TIME_DONE, rispettivamente, è ora uguale al tempo dell'ultimo scambio.

 

P/S Come ho promesso (riguardo alla pubblicazione della risposta di Servicedesk).

Non avrò una risposta dal Service Desk perché ho ritirato la mia domanda perché non era più necessaria.

Ringrazio komposter per la sua proposta di scrivere un test EA con

Vi terrò aggiornati e vi fornirò registri dettagliati.

 
papaklass:

Va bene!? Non vuoi ringraziare Integer, che è stato con te tutta la sera e ti ha fatto PENSARE?

Aiuta te stesso dopo un tale atteggiamento...

Vuoi continuare?
 
papaklass:

Va bene!? Non vuoi ringraziare Integer, che è stato con te tutta la sera e ti ha fatto PENSARE?

Aiuta te stesso dopo un tale atteggiamento...

È stata colpa sua, non avresti dovuto aiutarlo a pensare, avresti dovuto farlo tu per lui.
 
sandex:
Questo è il suo errore, non avrebbe dovuto aiutare a pensare, ma lo ha fatto per lui.

sandex:

state cercando nella parte sbagliata,OrderGetInteger(ORDER_POSITION_ID) - state cercando di guardare nella parte che non è stata coinvolta nell'apertura/modifica/chiusura della posizione

avete bisogno di guardare come questo HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

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

Il tuo commento?

Vuoi continuare?

 
Mikalas:

sandex:

state cercando nella parte sbagliata,OrderGetInteger(ORDER_POSITION_ID) - state cercando di guardare nella parte che non è stata coinvolta nell'apertura/modifica/chiusura della posizione

avete bisogno di guardare come questo HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)

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

Il tuo commento?

Vuoi continuare?

Perché? Perché lo stai facendo? Come se l'uomo avesse scritto delle sciocchezze? Non sarebbe un'assurdità se tu non avessi scritto le tue assurdità. Hai scritto che l'entrata dell'ordine appare nella cronologia degli ordini ed è ancora sul mercato.

Vuoi continuare?

 

Il completamento, credo, è l'ultimo.

Nessun forum a cui ho mai partecipato prima o a cui sto partecipando

Non c'è un simile atteggiamento degli utenti del forum l'uno verso l'altro!

Un forum è una comunità di persone che la pensano come te che risolvono (discutono)

È una comunità di persone che la pensano allo stesso modo e che possono lavorare insieme per risolvere i problemi e aiutarsi a vicenda.

Tutte le persone sono DIVERSE - una coglie l'essenza della domanda al volo, l'altra ha bisogno di tempo,

per capirlo.

Pensateci a vostro piacimento!

P / S E ringrazio Yurich e komposter, proprio perché.

Ho ringraziato Yurich e komposter perché non hanno detto nulla di inutile.

A un uomo (anche se ha torto o si sbaglia).

Sono un esempio di veri utenti del forum!

 
papaklass:

Sono già seduto nel parterre. Non vedo l'ora.... :)

Sasha, questa è una posizione molto comoda da cui trarre profitto...
Motivazione: