![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Qualcosa che non sono bravo a spiegare, a quanto pare. Ecco un esempio di vita reale. Ecco il codice:
e così via.
Possiamo vedere che il tempo di risposta di OnTradeTransaction in due Expert Advisors coincide con i millisecondi. Quindi, ho una domanda: l'evento "deal" arriva prima a un OnTradeTransaction in un EA e poi a quello successivo in un altro EA o in qualche modo arriva a tutti i gestori di tutti gli EA contemporaneamente? Beh, è come un'operazione parallela multi-thread o come si chiama nella programmazione. Sono sicuro che tutto avviene in modo sequenziale, è solo elaborato in un millisecondo, ma ho chiesto per sicurezza.
Qualcosa che non sono bravo a spiegare, a quanto pare. Ecco un esempio di vita reale. Ecco il codice:
void OnTradeTransaction(const MqlTradeTransaction& trans,
const MqlTradeRequest& request,
const MqlTradeResult& result)
{
Conta++;
Print("Ontrade_test = ",Count);
}
Il gestore è implementato in due Expert Advisors, quindi viene eseguito più volte in due Expert Advisors quando viene eseguito un trade. Il codice produce:
18:31:06.495 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 1
18:31:06.495 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 1
18:31:06.497 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 2
18:31:06.497 ontrade_trans_functions2 (MXI-12.17,M5) Ontrade_test = 2
18:31:06.498 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 3
18:31:06.498 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 3
18:31:06.500 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 4
18:31:06.500 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 4 ...
e così via.
Puoi vedere che il tempo di risposta di OnTradeTransaction nei due Expert Advisors è lo stesso in millisecondi. Quindi, ho una domanda: l'evento commerciale arriva prima a un OnTradeTransaction in un EA e poi a quello successivo in un altro EA o in qualche modo arriva a tutti i gestori di tutti gli EA contemporaneamente? Beh, è come un'operazione parallela multi-thread o come si chiama nella programmazione. Sono sicuro che tutto avviene in modo sequenziale, funziona solo velocemente in un millisecondo, ma ho chiesto per sicurezza.
Gestore OnTradeTransaction per UN simbolo (m_symbol.Name()) e una magia (m_magic).
Cattura prima la transazione
AGGIUNGERE UNA TRANSAZIONE COMMERCIALE
Aggiungere la transazione alla cronologia. Questo viene fatto come risultato dell'esecuzione dell'ordine o delle transazioni di saldo del conto.
poi guardiamo se si tratta di uno scambio
DEAL_ENTRY_OUT
Uscita dal mercato
L'eventoOnTradeTransaction è un evento broadcast, tutte le azioni che il vostro terminale esegue sono "scaricate" lì.
È solo che ogni EA deve filtrare le proprie azioni.
Poi in ogni tipo, filtriamo per ticket, se l'ordine è inviato in modo asincrono, allora
prima otteniamo il biglietto in base al suo ID di richiesta e poi filtriamo in base al biglietto.
L'eventoTRADE_TRANSACTION_REQUEST viene sempre prima, gli altri "come vogliono".
Aggiunto
Questo è stato discusso molte volte.
Cercalo in Exchange Trading
Grazie, sembra che gli accordi giusti siano stati "scritti".