MT5 e la velocità in azione - pagina 3

 
fxsaber:

Terminale 2460 vuoto.


ZS Eseguire su un conto vuoto.


Sembra che la velocità sia fortemente influenzata dal numero di scambi, non dagli ordini.

È possibile. Lo controllerò sicuramente.

Anche con uno spaventoso 20000ms / 100000 cicli è molto lontano dai 5-30ms per chiamata.

 

Non capisco come funziona.

- Ho un po' di questo.

Foto di

 
A100:

Nella sua forma più semplice:

Dovete solo cambiare il vostro approccio ai calcoli stessi (fare ritorni intermedi con la frequenza richiesta dal compito). Ma se è complicato, considerate al 1° stadio che OnMain non esiste per voi (spostate il codice principale non in OnMain, ma in OnTrade2XX), rispettivamente non dovete imparare nulla in OnMain

Come può esserci più di un evento nella coda di OnMain se ogni evento chiama OnMain per gestire la coda?

 
fxsaber:

Necessità di funzionare su un conto con un sacco di storia di trading.

Non è più il punto - qualcosa nel Regno di Danimarca .... qual è il resto del testo? ))

 

Test1
 
fxsaber:

Si prega di chiedere ai lettori di citare i loro risultati di questo script.

Esegui dal mio portatile non proprio nuovo.


 

Iniziato 3 volte su personaggi diversi. Questi sono i risultati:

2020.05.29 14:21:52.586 t2 (EURUSD,H1)  HistoryDealsTotal() = 4987
2020.05.29 14:21:52.588 t2 (EURUSD,H1)  HistoryOrdersTotal() = 4981
2020.05.29 14:21:52.757 t2 (EURUSD,H1)  100000 HistorySelect = 169.73 ms


2020.05.29 14:23:08.299 t2 (USDCHF,H4)  HistoryDealsTotal() = 4987
2020.05.29 14:23:08.299 t2 (USDCHF,H4)  HistoryOrdersTotal() = 4981
2020.05.29 14:23:08.480 t2 (USDCHF,H4)  100000 HistorySelect = 181.60 ms


2020.05.29 14:23:37.074 t2 (USDCAD,H1)  HistoryDealsTotal() = 4987
2020.05.29 14:23:37.074 t2 (USDCAD,H1)  HistoryOrdersTotal() = 4981
2020.05.29 14:23:37.238 t2 (USDCAD,H1)  100000 HistorySelect = 163.83 ms

Risorsa:

2020.05.29 14:25:26.874 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05.29 14:25:26.876 Terminal        Windows 10 build 17763, AMD Phenom II X3 720 Processor, 10 / 15 Gb memory, 597 / 930 Gb disk, IE 11, UAC, Admin, GMT+3


Il risultato, imho, è eccellente.

E ci sono molti processi diversi in esecuzione sul computer, attività media della CPU ~=50-65%.

 
fxsaber:


Si prega di chiedere ai lettori di citare i loro risultati di questo script.

2020.05.29 14:58:20.187 ddd (Si-6.20,M1)        HistoryDealsTotal() = 4267
2020.05.29 14:58:20.187 ddd (Si-6.20,M1)        HistoryOrdersTotal() = 43089
2020.05.29 14:58:24.777 ddd (Si-6.20,M1)        100000 HistorySelect = 4589.30 ms
 
Anton:

Anche uno spaventoso 20000ms / 100000 cicli è lontano da 5-30ms per chiamata.

#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

void OnStart()
{
  MqlTick Tick;

  if (SymbolInfoTick(_Symbol, Tick))
    for (int i = 0; i < 100000; i++)
      _B(HistorySelect(Tick.time, INT_MAX), 5);
}
        Alert: Time[Test6.mq5 9: HistorySelect(Tick.time,INT_MAX)] = 32 ms.
        Alert: Time[Test6.mq5 9: HistorySelect(Tick.time,INT_MAX)] = 6 ms.


Negli EA da combattimento, ho avvolto funzioni ovunque in luoghi sospetti in _B(FuncName(...), AlertTime). Ecco un breve estratto del registro dalle voci più recenti.

2020.05.29 15:08:41.806 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 20 ms.
2020.05.29 15:08:41.806 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 21 ms.
2020.05.29 15:08:42.793 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 8 ms.
2020.05.29 15:08:42.793 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 8 ms.
2020.05.29 15:08:42.925 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 6 ms.
2020.05.29 15:08:42.930 Alert: Time[NewTicks.mqh 247: NEWTICKS::IsHistoryDeals(Ticks[Size-1].time_msc)] = 7 ms.
2020.05.29 15:08:42.930 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 11 ms.
2020.05.29 15:08:42.952 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 6 ms.
2020.05.29 15:08:42.952 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 6 ms.
2020.05.29 15:08:44.557 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 7 ms.
2020.05.29 15:08:44.557 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 12 ms.
2020.05.29 15:08:44.557 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 12 ms.
2020.05.29 15:08:45.010 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 5 ms.
2020.05.29 15:08:45.010 Alert: Time[NewTicks.mqh 247: NEWTICKS::IsHistoryDeals(Ticks[Size-1].time_msc)] = 6 ms.
2020.05.29 15:08:46.303 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 24 ms.
2020.05.29 15:08:46.303 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 32 ms.
2020.05.29 15:08:46.303 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 32 ms.
2020.05.29 15:08:51.984 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 15 ms.
La colonna del tempo mostra la frequenza dei fregi.
File:
Benchmark.mqh  2 kb
 
2020.05.29 14:59:37.947    Test_HS (USDJPY,M15)    HistoryDealsTotal() = 5097
2020.05.29 14:59:37.948    Test_HS (USDJPY,M15)    HistoryOrdersTotal() = 5154
2020.05.29 14:59:37.961    Test_HS (USDJPY,M15)    100000 HistorySelect = 13.81 ms

Risorsa:

2020.05.29 14:49:51.173 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05.29 14:49:51.175 Terminal        Windows 10 build 19041, Intel Core i7-9700  @ 3.00 GHz, 54 / 63 Gb memory, 78 / 222 Gb disk, IE 11, UAC, GMT+3
Motivazione: