Accettazione di ordini SL/TP - pagina 2

 
Queste informazioni dovrebbero essere inviate a tutti i mega-HFT di MT, scherzando)) Il costo dell'economicità è questo.
 
fxsaber:

È 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.

 
Andrey Khatimlianskii:

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

Total Orders (from 2020.11.01 00: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.

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.

Accepted Tick 2020.11.25 16:05:11.522 10.15469 10.15668
Accepted Length = 4 ms.
Order 212 ORDER_TYPE_SELL EURSEK 2020.11.25 16:05:11.526 10.15462 ORDER_REASON_TP ORDER_STATE_FILLED


Registro del server.

2020.11.25 16:05:11.526    '': take profit triggered #168 buy 0.01 EURSEK 10.19022 tp: 10.15462, activation price 10.15469 [#212 sell 0.01 EURSEK at 10.15462][10.15469 / 10.15668]


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.

 
Andrei Trukhanovich:

un'altra esplosione di cervello da fxsaber.

Ci si sente particolarmente male quando ci si rende conto di quanto tempo si è perso. E che nessuno lo farà per voi.
 

Sembra davvero essere un problema sul server. Questo è un conto demo MT5

 2020.11 . 25 16 : 58 : 07.787 OrderCheck (USDJPY,H1)  Total Orders (from 2020.01 . 01 00 : 00 : 00 ) = 5417 , calculated = 755
 2020.11 . 25 16 : 58 : 07.787 OrderCheck (USDJPY,H1)  Calculation time = 00 : 00 : 14.656 , Performance = 51.0 orders/sec.
 2020.11 . 25 16 : 58 : 07.787 OrderCheck (USDJPY,H1)  
 2020.11 . 25 16 : 58 : 07.787 OrderCheck (USDJPY,H1)  ServerName: RannForex-Server
 2020.11 . 25 16 : 58 : 07.787 OrderCheck (USDJPY,H1)  
 2020.11 . 25 16 : 58 : 07.798 OrderCheck (USDJPY,H1)  Last Tick 2020.11 . 23 19 : 59 : 30.634 104.341 104.341
 2020.11 . 25 16 : 58 : 07.798 OrderCheck (USDJPY,H1)  Accepted Tick 2020.11 . 23 19 : 58 : 57.044 104.336 104.336
 2020.11 . 25 16 : 58 : 07.798 OrderCheck (USDJPY,H1)  Accepted Length = 33592  ms.
 2020.11 . 25 16 : 58 : 07.798 OrderCheck (USDJPY,H1)  Order 1747932 ORDER_TYPE_SELL USDJPY 2020.11 . 23 19 : 59 : 30.636 104.336 ORDER_REASON_TP ORDER_STATE_FILLED 2020.11 . 23 19 : 59 : 30.658 , Position 1747924 created 2020.11 . 23 19 : 58 : 35.556 , StopLevel = 0
 2020.11 . 25 16 : 58 : 07.798 OrderCheck (USDJPY,H1)  
 2020.11 . 25 16 : 58 : 07.799 OrderCheck (USDJPY,H1)  Orders ( 3 ) before 1747932 with PositionID = 1747924 :
 2020.11 . 25 16 : 58 : 07.799 OrderCheck (USDJPY,H1)  ------------------------
 2020.11 . 25 16 : 58 : 07.799 OrderCheck (USDJPY,H1)  Checked Orders = 0

Su un conto reale con lo stesso broker lo script restituisce zero risultati. Ci sono più di 3000 transazioni sul conto.

 
Enrique Dangeroux:

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.

2020.11.25 16:52:52.992 Trades  '92810': failed modify #1758569 sell 0.02 USDJPY sl: 0.000, tp: 104.293 -> sl: 0.000, tp: 0.000 [Unknown error]

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 )

In modo che la posizione non si blocchi.

 
fxsaber :

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.

2020.11.25 16:52:52.992 Trades  '92810': failed modify #1758569 sell 0.02 USDJPY sl: 0.000, tp: 104.293 -> sl: 0.000, tp: 0.000 [Unknown error]

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.

  1. Il prezzo del LP soddisfa il prezzo dell'ordine limite del trading floor.
  2. Gateway invia questo ordine limite al LP con una breve scadenza.
  3. 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.

  1. Un tick è venuto da LP
  2. Il prezzo viene inviato a MT5 come un nuovo tick.
  3. Se la posizione non è bloccata e il prezzo del nuovo tick incontra il livello TP, MT5 crea un ordine TP.
  4. Il Gateway vede che è nato un ordine TP, blocca la posizione e fa il p.2 dell'algoritmo dell'ordine limite.
  5. 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.


Miglioramento.

Smart Gateway nell'algoritmo di livello TP di una posizione aperta ha p.6:

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.