È stato ripetutamente affermato in un altro thread che anche il Terminale rallenta a causa di un enorme numero di fattori. Di conseguenza, un Trading Server molto più complesso è destinato a rallentare ancora di più. Spero ancora che l'ottimizzazione algoritmica sia ancora possibile. Anche un ritardo di 5 ms è già molto brutto. Cosa dire delle centinaia di millisecondi.
Quello che riguarda gli account demo non è molto interessante (posso fare il debug di qualsiasi plugin lì, testare nuovi hardware, ecc.)
E ho trovato al massimo 17 ms sugli account live (non sto dicendo che non è lungo, ma non può essere paragonato a 30 secondi).
Da qui il sospetto di una configurazione di server a cascata.
Total Orders (from 2020.11.0100:00:00) = 21725, calculated = 10465
Calculation time = 00:04:33.609, Performance = 38.0 orders/sec.
Da qui il sospetto di una configurazione di server a cascata.
Il broker ha confermato il problema ed è riuscito a trovarlo e a risolverlo (sarà disponibile dopo il fine settimana). Ma è difficile dire se era dovuto a MT5.
Ma lanciare pietre in direzione di MT5 può sicuramente essere fatto da questa situazione.
Non so perché ho provato a fare trading ad un livello così basso, ma ci stavo pensando: non so se userò un terminale, che è sulla stessa macchina con il server di trading, o se userò un sistema di trading inverso. Cioè con un ping molto basso e un solo conto di trading per il Trading Server.
Il terminale e il server sono sulla stessa macchina. Carico zero. Un nuovo approccio ha ottenuto un tale allarme.
Errori che innescano Take quando la posizione viene cambiata. Quindi Take viene innescato, devia un paio di volte, poi si blocca, cambio tp a zero per fare marcia indietro e crollare.
Prima di cambiarlo, lo controllo
if ( OrderCloseReason() >= ( int ) ORDER_REASON_SL )
Broker ha confermato il problema ed è riuscito a trovarlo e risolverlo (sarà disponibile dopo il fine settimana). Ma è difficile dire se era dovuto a MT5.
Consideriamo schematicamente alcuni algoritmi del trading floor. Per semplicità assumeremo che ci sia un solo LP(fornitore di liquidità).
Ordine limite.
Il prezzo del LP soddisfa il prezzo dell'ordine limite del trading floor.
Gateway invia questo ordine limite al LP con una breve scadenza.
Se Gateway riceve un reindirizzamento per una parte del volume limite, Gateway ripete tutto dal punto 1 per il volume rimanente nel caso in cui il tick da LP sia cambiato durante il tempo di elaborazione del limite.
Un buon Gateway (con l'algoritmo di cui sopra) è indipendente dalle specifiche della piattaforma di trading quando esegue il limitatore.
L'algoritmo è quasi in loop e indipendente dalla piattaforma. La protezione antispam LP è contenuta nel punto 3.
TP-livello di una posizione aperta.
Un tick è venuto da LP
Il prezzo viene inviato a MT5 come un nuovo tick.
Se la posizione non è bloccata e il prezzo del nuovo tick incontra il livello TP, MT5 crea un ordine TP.
Il Gateway vede che è nato un ordine TP, blocca la posizione e fa il p.2 dell'algoritmo dell'ordine limite.
Se riceve un re-jack, allora MT5 invia l'ordine TP alla storia con uno stato di rifiuto. La posizione è sbloccata.
L'algoritmo non è in loop e dipende dalla piattaforma. C'è una protezione dallo spam LP.
Questo algoritmo ha due svantaggi oltre ai costi di comunicazione Gateway-MT5.
È stato dimostrato in questo thread che la nascita di un ordine TP (vedi punto 3) in MT5 ha un ritardo. Quindi la probabilità che un ordine TP possa essere eseguito è più bassa che se non ci fosse un ritardo.
Un ordine TP in MT5 non può essere creato senza un nuovo tick. Questo significa che se viene ricevuto un reindirizzamento, il Gateway non farà nulla fino a quando un nuovo tick è arrivato in MT5, soddisfacendo il livello di TP. E si perde tempo prezioso per cercare di eseguire il livello TP a causa di questo. Questo peggiora anche il FillRate.
6. Se un nuovo tick è stato ricevuto da LP durante il reindirizzamento, il suo valore attuale viene inviato nuovamente a MT5 come un nuovo tick - passare al punto 2.
Questo punto aggiuntivo dell'algoritmo contiene ancora la protezione dallo spam LP, ma inganna MT5 nell'eseguire il punto 3. E non si perde tempo prezioso in attesa del nuovo tick.
Realtà.
Da questi due algoritmi (anche nel caso del punto 6 del secondo algoritmo) segue questo.
Un ordine limite MT5 ha un FillRate più alto del suo equivalente sotto forma di una posizione aperta a livello TP. Questo è il motivo per cui possiamo spesso incontrare situazioni durante un rollover sulla MT5-Hedge dove l'ordine limite viene eseguito, ma la sua controparte TP no. In questo caso viene effettuato il CloseBy e l'ordine Limit viene rieseguito con il volume corrispondente.
Conclusione.
Per aumentare il FillRate in MT5 trasferire i livelli TP delle posizioni aperte in ordini limite di MT5.
È stato ripetutamente affermato in un altro thread che anche il Terminale rallenta a causa di un enorme numero di fattori. Di conseguenza, un Trading Server molto più complesso è destinato a rallentare ancora di più. Spero ancora che l'ottimizzazione algoritmica sia ancora possibile. Anche un ritardo di 5 ms è già molto brutto. Cosa dire delle centinaia di millisecondi.
Quello che riguarda gli account demo non è molto interessante (posso fare il debug di qualsiasi plugin lì, testare nuovi hardware, ecc.)
E ho trovato al massimo 17 ms sugli account live (non sto dicendo che non è lungo, ma non può essere paragonato a 30 secondi).
Da qui il sospetto di una configurazione di server a cascata.
Che su demo non è molto interessante (puoi fare il debug di qualsiasi plugin lì, testare nuovo hardware, ...).
E sugli account live ho trovato al massimo 17 ms (non dico che non sia sufficiente, ma non è paragonabile a 30 secondi).
Purtroppo non hanno mostrato quanti ordini hanno controllato.
Forum sul trading, sistemi di trading automatico e strategie di trading di prova
Accettazione di ordini SL/TP
fxsaber, 2020.11.25 01:23
Da qui il sospetto di una configurazione di server a cascata.
Il broker ha confermato il problema ed è riuscito a trovarlo e a risolverlo (sarà disponibile dopo il fine settimana). Ma è difficile dire se era dovuto a MT5.
Ma lanciare pietre in direzione di MT5 può sicuramente essere fatto da questa situazione.
Forum sul trading, sistemi di trading automatico e test di strategia
Accettazione di ordini SL/TP
fxsaber, 2020.11.25 00:47
Non so perché ho provato a fare trading ad un livello così basso, ma ci stavo pensando: non so se userò un terminale, che è sulla stessa macchina con il server di trading, o se userò un sistema di trading inverso. Cioè con un ping molto basso e un solo conto di trading per il Trading Server.
Il terminale e il server sono sulla stessa macchina. Carico zero. Un nuovo approccio ha ottenuto un tale allarme.
Registro del server.
Accept-tick sul server.
I dati dello script completo confermano che c'è un problema. All'interno del server a carico zero c'era un ritardo di 4ms.
un'altra esplosione di cervello da fxsaber.
Sembra davvero essere un problema sul server. Questo è un conto demo MT5
Su un conto reale con lo stesso broker lo script restituisce zero risultati. Ci sono più di 3000 transazioni sul conto.
Su un conto reale presso lo stesso broker lo script restituisce zero risultati. Ci sono più di 3.000 transazioni nel conto.
Questo è sospetto. Non ho trovato alcun lag da nessuna parte nei miei account.
Non sono sicuro che sia collegato. Ma ne ricevo molti.
Errori che innescano Take quando la posizione viene cambiata. Quindi Take viene innescato, devia un paio di volte, poi si blocca, cambio tp a zero per fare marcia indietro e crollare.
Prima di cambiarlo, lo controllo
In modo che la posizione non si blocchi.
Questo è sospetto. In nessun punto dei miei conti ho trovato una mancanza di lag.
Ho pensato la stessa cosa, ma ulteriori indagini hanno mostrato che c'erano circa 100 chiusure di Take da sole
Quindi, ad una piccola dimensione del campione.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Accettazione di ordini SL/TP
Enrique Dangeroux, 2020.11.25 17:20
Non sono sicuro che questo sia collegato. Ma ne ricevo molti.
Anch'io ho tutto il mio registro in questi messaggi. Forse dopo il fine settimana la situazione cambierà.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Accettazione di ordini SL/TP
fxsaber, 2020.11.25 16:30
Broker ha confermato il problema ed è riuscito a trovarlo e risolverlo (sarà disponibile dopo il fine settimana). Ma è difficile dire se era dovuto a MT5.
Consideriamo schematicamente alcuni algoritmi del trading floor. Per semplicità assumeremo che ci sia un solo LP(fornitore di liquidità).
Ordine limite.
Un buon Gateway (con l'algoritmo di cui sopra) è indipendente dalle specifiche della piattaforma di trading quando esegue il limitatore.
L'algoritmo è quasi in loop e indipendente dalla piattaforma. La protezione antispam LP è contenuta nel punto 3.
TP-livello di una posizione aperta.
L'algoritmo non è in loop e dipende dalla piattaforma. C'è una protezione dallo spam LP.
Questo algoritmo ha due svantaggi oltre ai costi di comunicazione Gateway-MT5.
Miglioramento.
Smart Gateway nell'algoritmo di livello TP di una posizione aperta ha p.6:
Questo punto aggiuntivo dell'algoritmo contiene ancora la protezione dallo spam LP, ma inganna MT5 nell'eseguire il punto 3. E non si perde tempo prezioso in attesa del nuovo tick.
Realtà.
Da questi due algoritmi (anche nel caso del punto 6 del secondo algoritmo) segue questo.
Un ordine limite MT5 ha un FillRate più alto del suo equivalente sotto forma di una posizione aperta a livello TP. Questo è il motivo per cui possiamo spesso incontrare situazioni durante un rollover sulla MT5-Hedge dove l'ordine limite viene eseguito, ma la sua controparte TP no. In questo caso viene effettuato il CloseBy e l'ordine Limit viene rieseguito con il volume corrispondente.
Conclusione.
Per aumentare il FillRate in MT5 trasferire i livelli TP delle posizioni aperte in ordini limite di MT5.