MT5 e la velocità in azione - pagina 28

 
fxsaber:
L'aggiunta di un ordine/commessa alla cronologia del trading fa sì che la cache di HistorySelect venga ricostruita completamente, non parzialmente. Da qui i ritardi nell'attivazione degli ordini pendenti.

b2595 - corretto, Grande!

Ho controllato la storia sbagliata, non l'ho ancora sistemata.

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

MT5 e la velocità in azione

fxsaber, 2020.09.08 19:46

2020.09.08 20:23:32.103 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:23:32.239 Alert: Time[Test6.mq5 411: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:31:59.863 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 9 ms.
2020.09.08 20:32:00.845 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.08 20:32:01.856 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 4 ms.
2020.09.08 20:32:02.846 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 7 ms.

b2596 è diventato più veloce, sembra.

2020.09.11 05:06:17.854 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:18.853 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:19.875 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.11 05:06:20.871 Alert: Time[Test6.mq5 433: HistorySelect(0,INT_MAX)] = 1 ms.
 
b2605 - niente più avvisi. Un grande lavoro fatto, grazie!
MT5 и скорость в боевом исполнении
MT5 и скорость в боевом исполнении
  • 2020.09.07
  • www.mql5.com
MT5 - шустрая платформа. Но есть узкие горлышки, которые сводят на нет все старания быстрой торговли...
 

Puoi dirmi cosa fare per evitare questo tipo di cose quando si fa 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.
 
Risultato dell'esecuzione di questo script sul terminale live.
2020.09.15 22:26:41.788 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 1 ms.
2020.09.15 22:26:48.322 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 2 ms.
2020.09.15 22:27:07.661 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:27:47.228 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 2 ms.
2020.09.15 22:27:53.039 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 483: OrdersTotal()] = 9 ms.
2020.09.15 22:28:13.858 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:28:21.058 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 484: OrderSelect(0)] = 8 ms.
2020.09.15 22:28:47.813 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 489: PositionsTotal()] = 4 ms.
2020.09.15 22:28:51.482 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 505: AccountInfoInteger(ACCOUNT_TRADE_EXPERT)] = 4 ms.
2020.09.15 22:29:09.053 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 490: PositionSelect(Symb)] = 1 ms.
2020.09.15 22:29:09.353 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 506: AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)] = 1 ms.
2020.09.15 22:29:28.814 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 457: HistorySelect(Tick.time,INT_MAX)] = 2 ms.

L'ultima riga è normale.


I ritardi possono essere influenzati dagli EA che girano in parallelo? Nessun indicatore.


SZY Profiling su terminale vuoto.

SymbolInfoTick è una funzione costosa.

 
fxsaber:

I ritardi possono essere influenzati dagli EA che girano in parallelo? Non ci sono indicatori.

Ho lanciato un terminale vuoto in parallelo e l'ho provato. Non ho visto la stessa cosa.

Configurazione.
2020.09.15 20:35:42.481 Terminal        Windows 10 build 19042, Intel Core i7-2700 K  @ 3.50 GHz, 6 / 15 Gb memory, 20 / 29 Gb disk, IE 11, Admin, GMT+3

Forum sul trading, sistemi di trading automatico e test di strategia

MT5 e la velocità in azione

fxsaber, 2020.09.01 21:59

Installato Win10, LatencyMon mostra che tutto è a posto.

 
In generale, a causa del fatto che quasi ogni funzione regolare può causare frenate, il battle Expert Advisor esegue ogni OnTick per diverse decine di millisecondi. Questo importo è consumato dalla somma delle chiamate a Order*+SymbolInfoTick+Position*, ecc. Non ci sono calcoli matematici. Avete bisogno di istantanee gratuite. Senza di loro, HDI su MT5 non funziona.
 
fxsaber:
Comunque, a causa del fatto che quasi ogni funzione regolare può causare un rallentamento, il battle Expert Advisor esegue ogni OnTick per diverse decine di millisecondi. La somma delle chiamate Order*+SymbolInfoTick+Position*, ecc. mangia tanto. Non ci sono calcoli matematici. Avete bisogno di istantanee gratuite. Senza di loro, HDI su MT5 non funziona.

C'è qualcosa di sbagliato nell'approccio... Apparentemente, le funzioni OnTrade sono necessarie piuttosto che la scansione dello stato da zero su ogni tick.

 
Andrey Khatimlianskii:

C'è qualcosa di sbagliato nell'approccio... Apparentemente, le funzioni OnTrade sono necessarie, piuttosto che la scansione dello stato da zero su ogni tick.

Il paradigma OOP presuppone che ogni sub-TC esamini l'ambiente di negoziazione. Tuttavia, se volete davvero, potete rompere un po' l'indipendenza degli oggetti OOP.

Per esempio, fate un'istantanea completa all'inizio di OnTick. E deve essere ripetuto solo dopo la chiamata delle funzioni sincrone - OrderSend e CopyTicks.

Per quanto riguarda OnTrade*, le interruzioni di connessione rovinano lo schema quando le istantanee sono fatte solo nelle funzioni OnTrade. Altrimenti, ovviamente, ci sarebbe un grande risparmio.

 
fxsaber:

Il paradigma OOP presuppone che ogni sub-OS esamini l'ambiente di negoziazione. Tuttavia, se si vuole veramente, si può rompere un po' l'indipendenza degli oggetti OOP.

Per esempio, fate un'istantanea completa all'inizio di OnTick. E sarà ripetuto solo dopo la chiamata delle funzioni sincrone - OrderSend e CopyTicks.

Naturalmente, l'oggetto snapshot deve essere uno.


fxsaber:

Per quanto riguarda OnTrade*, le interruzioni dei collegamenti rovinano lo schema quando le istantanee sono fatte solo nelle funzioni OnTrade. Altrimenti, ovviamente, ci sarebbe un grande risparmio.

Rilevare un'interruzione della connessione e forzare l'aggiornamento dell'istantanea al prossimo tick, quindi tornare alla modalità economica?

Motivazione: