Errori, bug, domande - pagina 2220
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
Secondo me, questo è un bug quando l'ordine è sul server commerciale, ma dopo l'OrderSend sincrono sul terminale non c'è traccia di esso.
Ho deciso di verificare quanto durano questi ordini fantasma, quando l'ordine è presente sul sistema ma non nel terminale.
Il risultato è
Un ordine è presente nel sistema ma non nel terminale per 32 millisecondi! Provate a immaginare le conseguenze se la logica di trading fosse eseguita in questo intervallo...
È interessante che gli ordini fantasma sono più spesso presenti solo nei tipi di transazioneTRADE_TRANSACTION_ORDER_DELETE e TRADE_TRANSACTION_DEAL_ADD (molto più rari).
Una pessima sfumatura della piattaforma.
ZZY La velocità delle transazioni commerciali su 5 è discutibile, purtroppo.
Ho deciso di controllare quanto durano queste situazioni di ordine fantasma, quando un ordine è nel sistema ma non nel terminale.
Il risultato è
Per 32 millisecondi, c'è un ordine ma non è nel terminale! Immaginate le conseguenze se la logica di trading venisse eseguita durante questo intervallo.
Sì, non va bene. Come puoi vedere, questi risultati di transazione sono inviati in pacchetti diversi. Dovrebbero essere in uno solo.
Come potete vedere, questi risultati di transazione sono inviati in pacchetti diversi, mentre dovrebbero essere in uno solo.
Si scopre che l'ordine può essere fantasma subito dopo OrderSend e l'Expert Advisor parallelo con OnTradeTransaction non può sempre catturare questo stato. Cioè OnTradeTransaction stesso a volte rallenta.
In generale, in MT5 ci sono dei ritardi architettonici in diversi punti che difficilmente vengono eliminati. Questi sono ritardi di arrivi di zecche e ora di transazioni commerciali. È necessario essere chiari su ciò che la piattaforma è in grado di fare se si punta sulla velocità di esecuzione. Per esempio, i tick arrivano con un discreto ritardo, poi le transazioni... e alla fine qualcun altro su MT5 o un'altra piattaforma può sorpassare, anche se tu stesso sei seduto proprio accanto allo scambio.
Le transazioni commerciali vanno in pacchetti prioritari, superando le altre. Questo riduce seriamente la latenza.
Come è possibile che lo script rilevi una situazione di ordine fantasma dopo OrderSend, ma OnTradeTransaction su un EA parallelo non lo fa (non sempre, ma succede)?
Le transazioni commerciali arrivano in pacchetti prioritari, superando le altre. Questo riduce seriamente la latenza.
Il problema è che le transazioniTRADE_TRANSACTION_ORDER_DELETE eTRADE_TRANSACTION_HISTORY_ADD arrivano in pacchetti diversi ed è per questo che non importa quale priorità abbiano, la latenza di rete lo farà comunque.E queste transazioni devono essere eseguite sincronicamente, una dopo l'altra, senza alcuno stato intermedio. Cioè è un'operazione atomica in sostanza, perché mettere un ordine cancellato nella lista della storia non ha nulla a che fare con uno scambio.
Cioè ci sono due opzioni qui: o queste due transazioni si uniscono in un unico pacchetto, o la prima transazione non viene eseguita nel terminale finché non arriva la seconda.
Cioè ci sono due opzioni: o entrambe queste transazioni arrivano insieme in un unico pacchetto, o la prima transazione non viene eseguita nel terminale finché non arriva la seconda.
Ci sono situazioni in cui TRADE_TRANSACTION_DEAL_ADD viene PRIMA della transazione TRADE_TRANSACTION_ORDER_DELETE. In questo caso anche prima di TRADE_TRANSACTION_ORDER_DELETE l'ordine è ancora fantasma.
Gli agenti remoti hanno smesso di ottimizzare
Suppongo che sia a causa del nuovo compilatore, come possono essere aggiornati per farlo funzionare?
Inoltre, solo una parte dell'ottimizzatore passa 13 su 28 a causa di questo errore.Guardando il codice del pacchetto Alglib. È pieno di queste costruzioni, rendendo il codice più difficile da leggere:
Non è più semplice così?
Mi sembra che la velocità di esecuzione sarebbe ancora più veloce.
Perché hanno reso il codice così complicato? O semplicemente portato da un'altra lingua, senza alcuna regolazione? Ma mi chiedo ancora perché una tale complicazione nell'originale?