OnTradeTransaction - pagina 6

 
Andrey Dik:

Sei molto disattento, non sono iol'iniziatore dell'argomento.

Dovresti anche mostrarmi un codice come questo:

//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  
}  

Se non vi piace, potete usare Joba! È così?

Ho speso abbastanza tempo per rispondere alla sua domanda.

Se la sua domanda non fosse così "astratta", forse la risposta sarebbe più specifica.

Vale a dire:

1. FORTS o FOREX

2. Che tipo di rete usi o di siepe

3. se vengono utilizzati altri ordini durante la durata della posizione

La domanda è la stessa della risposta.

 
fxsaber:
Sono d'accordo che questo funzionerebbe (nel caso di un riempimento completo)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

Ma la conversazione sembra diventare un po' più ampia.

Non ricordo che il volume possa essere impostato per ST/TP.

In caso contrario (controllo ora), la posizione si chiuderà FULL o SL o TP

 
prostotrader:

Non ricordo di aver aspettato ST/TP per impostare il volume, se no,

allora la posizione chiuderà FULL o SL o TP

La liquidità potrebbe non essere sufficiente.
 
fxsaber:
La liquidità potrebbe non essere sufficiente.
Sì, e il Broker potrebbe spegnere la corrente :)....
 
prostotrader:
Sì, e il Broker può spegnere la corrente :)....
Prendete uno strumento poco liquido e basta.
 
fxsaber:
Prendete uno strumento poco liquido e basta.

Ecco perché ho raccomandato l'uso di ordini pendenti

Aggiunto da

Molto dipende dal mercato e dallo strumento...

 
<br/ translate="no">

Per identificare accuratamente a quale ordine è stato risposto nell'evento OnTradeTransaction, tutti gli eventi diversi dal primo evento ordine sono firmati con un biglietto.

Il primo evento è firmato sia dal ticket che dal request_id. Il request_id è ottenuto dall'utente subito dopo l'invio dell'ordine dalla funzione OrderSendAsinc. Ecco come una specifica iterazione di OrderSendAsinc è collegata ai risultati ottenuti in OnTradeTransaction.

Il ticket in OrderSendAsync potrebbe anche non esistere, e molto probabilmente non esisterà se stiamo sparando ordini a cento al secondo (retcode 10008 al massimo, e basta).

 
dmipec:

Il ticket in OrderSendAsync può esserci o meno e molto probabilmente non ci sarà se gli ordini sono sparati a poche migliaia di unità al secondo (retcode 10008 al massimo e tutto il resto).

Beh, non dieci, solo 30 al secondo su un login standard.

Se l'avete scritto correttamente, l'ordine (o gli ordini) ci sarà sicuramente.

 
Vasiliy Sokolov:

Invece di analizzare gli eventi, dovresti analizzare l'ambiente di trading e solo se l'ambiente di trading è cambiato dovresti prendere le decisioni necessarie. OnTransaction può essere usato solo in casi molto limitati, e di solito è meglio farne a meno nel vostro lavoro. Guarda MetaTrader 4, non ha OnTransaction e tutti ne fanno a meno.

Sono d'accordo. Ma purtroppo in MT5, a differenza di MT4, l'ambiente di trading può non corrispondere alla realtà. Per esempio, quando un ordine in sospeso viene eseguito per diversi millisecondi, potrebbe non essere trovato da nessuna parte. E anche OnTradeTransaction non aiuta in questo caso.

 
fxsaber:

D'accordo. Ma purtroppo in MT5, a differenza di MT4, l'ambiente di trading potrebbe non corrispondere alla realtà. Per esempio, quando un ordine in sospeso viene eseguito per pochi millisecondi, potrebbe non essere da nessuna parte. E anche OnTradeTransaction non aiuta in questo caso.

Forse, OnTrade, come ho capito è generato nel terminale stesso già sulla base delle transazioni.

Oppure, vuoi dire che quando un ordine pendente scatta nel gestore OnTrade, nessuna nuova posizione aperta può essere rilevata?