MT5 e la velocità in azione - pagina 29

 
Andrey Khatimlianskii:

Identificare un'interruzione della comunicazione

Non so come fare.

 
fxsaber:

Non so come fare.

Cosa ti fa pensare che accadano e che OnTrade si perda? Dalla documentazione?

 
Andrey Khatimlianskii:

Cosa ti fa pensare che accadano e che OnTrade si perda? Dalla documentazione?

Perché Relogin resetta la cache storica, che (presumo) è drogata attraverso il meccanismo OnTrade.

 
fxsaber:

Non sono sicuro di come farlo.

Senza uscire dal tempo di MT5 intertiki, se possibile. E con le operazioni di trading in relazione all'ordine nel DC senza aiuto interno, non mi viene in mente niente.

 
Valeriy Yastremskiy:

Non uscendo dal tempo di intertitolo di MT5, se possibile. E con le operazioni di trading in relazione all'ordine nel DC senza aiuto interno, non mi viene in mente niente.

Non capisco.

 
fxsaber:

Non capisco.

Sì, c'è qualcosa che non va. Il tempo intertick è solo per i tick mancanti a causa di un'interruzione della comunicazione. E in termini di query e correttezza delle risposte su ordini, compravendite e stati di posizione, se la risposta viene persa o cambiata a causa di guasti di comunicazione e ritardi a causa di questo, non sembrano esserci soluzioni economiche. Ri-interrogare al prossimo tick non è sempre un'opzione.

La soluzione per me sarebbe una funzione interna per tracciare lo stato delle transazioni/posizioni rispetto agli ordini di aprire, modificare, chiudere parzialmente e chiudere completamente una posizione. La richiesta di rintracciare il risultato potrebbe essere impostata nell'ordine stesso. E ottenere il risultato sul tick corrente e non su quello successivo.

 
fxsaber:

Puoi dirmi cosa fare per non avere a che fare con questo durante il trading?

2020.09.15 22:17:04.633 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.09.15 22:17:04.638 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.09.15 22:17:04.640 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 20 ms.

A giudicare dal tempo di registrazione, tutto è avvenuto in 7ms.

Se vuoi avere una discussione costruttiva, dacci le condizioni di prova complete (server, tipo di conto, numero di simboli selezionati, numero di EAs, ecc.)


Il codice di misurazione runtime SymbolInfoTick:

void OnTick()
  {
   MqlTick Tick;
//---
   ulong start,end,max_time=0,avr_time=0;
   int   count=1000;
   for(int i=0; i<count; i++)
     {
      start=GetMicrosecondCount();
      SymbolInfoTick(_Symbol, Tick);
      end=GetMicrosecondCount()-start;
      //---
      if(end>max_time)
         max_time=end;
      avr_time+=end;
     }
   Print("SymbolInfoTick max time: ",DoubleToString(max_time/1000.0,3)," ms; avr time: ",DoubleToString(avr_time/1000.0/count,3)," ms; ",count," iterations");
  }

Sul server MetaQuotes-Demo (20 simboli selezionati, Netting, 4 posizioni aperte):

2020.09.16 12:34:22.429 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.148 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.456 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.751 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.145 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.652 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.051 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.259 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.861 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:31.159 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.376 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.658 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:34.867 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations

131 simboli selezionati, 10 posizioni aperte:

2020.09.16 12:44:50.554 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:52.337 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:54.960 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.587 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.863 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.016 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.187 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.958 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.018 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:59.989 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:00.298 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.609 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.024 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.891 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:08.790 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.617 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.933 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:11.841 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.416 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.709 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
Windows 10 build 18363, Intel Xeon  E5-2630 v4 @ 2.20 GHz, 52 / 63 Gb memory
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Anton:

A giudicare dal tempo delle voci di registro, è successo tutto in 7ms.

Sono tre diversi EA.

Se vuoi una discussione costruttiva, allora dai tutte le condizioni del test per intero (server, tipo di conto, numero di simboli selezionati, numero di EAs, ecc.)

Conto reale, RannForex-Server, 16 simboli, grafico M1 aperto su ognuno (5000 barre max), su ognuno è in esecuzione un EA che accede solo al proprio simbolo.

Ci possono essere circa 50 posizioni e lo stesso numero di ordini alla volta. Non ci sono indicatori, e solo CopyTicksRange (tick freschi) e SymbolInfoTick sono usati per ottenere i prezzi. Non c'è alcun riferimento ai bar.

 
fxsaber:

Si tratta di tre diversi EA distribuiti.

Conto reale, RannForex-Server, 16 simboli, grafico M1 aperto su ciascuno (5000 barre max), su ciascuno di essi è in esecuzione un EA che accede solo al proprio simbolo.

Ci possono essere circa 50 posizioni e lo stesso numero di ordini alla volta.

Se ho capito bene, non c'è un EA, ma uno stress tester su ogni simbolo. Questo cambia completamente le cose. E mostra il nascondersi delle condizioni iniziali.

Cioè, 16 thread su un processore 8(4+HT) (+N worker terminal threads in parallelo) non stop e senza ritardi si rompono in un oggetto database di simboli sincronizzato. I blocchi di lettura/scrittura si confondono perché c'è una scrittura a tick costante.

Di solito in un tale profilo, a seconda della ripidità del processore e della sua padronanza dei thread, ogni thread può passare dal 60% all'80% del tempo in attesa.

E questo indipendentemente dal tipo di compito.

 
Renat Fatkhullin:

Se ho capito bene, non c'è un EA lì, ma uno stress tester su ogni simbolo.

Erroneamente inteso. Ogni EA è puramente commerciale (nel Tester da tick reali non rallenta) e non dipende da altri. Tutta la logica di trading viene eseguita solo in OnTick, nessun spamming di ordini di trading, nessuna ricorsione, nessuna globalizzazione e nessuna risorsa.

OnTrade*, OnBook non sono utilizzati. Secondo timer e OnChartEvent per il caso in cui vengono premuti certi tasti.


Sono sicuro che una corretta implementazione (da parte vostra o mia) delle istantanee ridurrà notevolmente il numero di chiamate di funzioni d'ambiente regolari. Di conseguenza, i ritardi saranno drasticamente ridotti.

Non avrei mai pensato che si arrivasse ai trucchi delle istantanee. Sto studiando la questione, poiché l'implementazione standard di MT5-advisor è zoppa, purtroppo.