MT5 e la velocità in azione - pagina 14

 

Non so se era qui o no.

C'è davvero bisogno di alberi delle scatole e di hashmap. Per i multivolumi, l'hashmap software è molto lento per ulteriori test.

E C++17 :)

 

Prova la beta build 2577, per favore.

Abbiamo migliorato con il campionamento delle storie e continueremo a rivederlo drasticamente.

 
Renat Fatkhullin:

Prova la beta build 2577, per favore.

Migliorato con il campionamento delle storie e continuerà a ridisegnare drasticamente.

Sembra essere peggiorato:

2020.08.19 03:41:43.173         Time[MT4Orders.mqh 434: ::HistorySelect(this.LastTime,D'31.12.3000 23:59:59')] = 11 ms.
2020.08.19 03:41:43.174         Time[MT4Orders.mqh 622: this.RefreshHistory()] = 12 ms.

Non c'erano questi numeri su 2573 il giorno precedente.

 
Andrey Pogoreltsev:

Non so se era qui o no.

C'è davvero bisogno di alberi delle scatole e di hashmap. Per i multivolumi, l'hashmap software è molto lento per ulteriori test.

E C++17 :)

L'hashmap fornita è la più veloce di tutte le implementazioni, ho controllato. Ci sono altre due varianti in giro in CB e c'è un articolo su una di esse, sono un ordine di grandezza più lente. E di che tipo di hashmap avete bisogno,non di un software? Non volete un hashmap hardware su FPGA? )) Che ne dici, Elon Musk!

Cosa c'è di sbagliato nei plus? MQL5 non supporta più il caricamento di DLL a 64 bit? Scrivete immediatamente a Renate di questo oltraggio! Ho anche C++ 20 supportato! Devo solo impararlo ))

------------------

Microsoft Visual Studio Enterprise 2019 Anteprima

Versione 16.7.0 Anteprima 4.0

Versione installata: Enterprise

Microsoft Visual C++ 2019

 
Andrey Khatimlianskii:

Sembra essere peggiorato:

Non c'erano questi numeri su 2573 il giorno precedente.

Sembra che siano state le prime richieste di freddo. Non una sola stampa da allora.

 
Renat Fatkhullin:

Prova la beta build 2577, per favore.

Abbiamo migliorato con il campionamento delle storie e continueremo a rivederlo drasticamente.

2020.08.19 09:30:06.512 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 17: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,0,1)] = 1 ms.
2020.08.19 09:30:08.035 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 4 ms.
2020.08.19 09:30:08.038 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 13: SymbolInfoTick(Symb,Tick)] = 7 ms.
2020.08.19 09:30:08.042 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 13: SymbolInfoTick(Symb,Tick)] = 10 ms.
2020.08.19 09:30:08.044 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 13 ms.
2020.08.19 09:30:08.046 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 4 ms.
2020.08.19 09:30:08.046 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 7 ms.
2020.08.19 09:30:08.047 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 75: SymbolName(0,true)] = 3 ms.
2020.08.19 09:30:08.048 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 2 ms.
2020.08.19 09:30:08.052 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 13: SymbolInfoTick(Symb,Tick)] = 2 ms.
2020.08.19 09:30:08.053 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 41: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 5 ms.
2020.08.19 09:30:08.055 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 3 ms.
2020.08.19 09:30:08.060 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 5 ms.
2020.08.19 09:30:08.071 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 25 ms.
2020.08.19 09:30:24.489 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 1 ms.
2020.08.19 09:30:25.857 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:30:26.092 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:30:26.119 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:30:29.279 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 17: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,0,1)] = 1 ms.
2020.08.19 09:30:31.931 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 2 ms.
2020.08.19 09:30:31.931 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 1 ms.
2020.08.19 09:30:33.402 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 34: HistoryOrderSelect(0)] = 7 ms.
2020.08.19 09:30:35.686 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 2 ms.
2020.08.19 09:30:37.810 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 1 ms.
2020.08.19 09:30:52.415 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms.
2020.08.19 09:31:10.903 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:31:11.414 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 5 ms.
2020.08.19 09:31:11.414 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 9 ms.
2020.08.19 09:31:32.694 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 2 ms.
2020.08.19 09:31:51.245 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:31:53.989 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 17: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,0,1)] = 2 ms.
2020.08.19 09:32:11.871 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:32:20.310 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 3 ms.
2020.08.19 09:32:47.513 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms.
2020.08.19 09:32:49.367 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:32:56.358 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:33:05.424 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 75: SymbolName(0,true)] = 2 ms.
2020.08.19 09:33:16.537 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 5 ms.
2020.08.19 09:33:16.551 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 13 ms.
2020.08.19 09:33:47.303 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 7 ms.
2020.08.19 09:33:50.587 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms.
2020.08.19 09:33:56.181 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 41: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 1 ms.
2020.08.19 09:33:59.244 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 1 ms.
2020.08.19 09:34:03.255 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 41: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 2 ms.
2020.08.19 09:34:47.388 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 28: HistoryDealSelect(0)] = 1 ms.
2020.08.19 09:34:47.498 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:35:06.001 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 3 ms.
2020.08.19 09:35:06.005 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 75: SymbolName(0,true)] = 1 ms.
2020.08.19 09:35:06.017 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:35:06.022 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 3 ms.
2020.08.19 09:35:06.046 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 28: HistoryDealSelect(0)] = 12 ms.
2020.08.19 09:35:29.014 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:36:30.289 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 1 ms.
2020.08.19 09:36:55.946 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 2 ms.
2020.08.19 09:36:55.950 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 3 ms.

È diventato molto meglio. In combattimento, non hanno ancora testato.


I log della versione di ZZY Combat mostrano che c'è ancora molto da sistemare...

 
Alexey Volchanskiy:

L'hashmap fornita è la più veloce di tutte le implementazioni, ho controllato. Ci sono altre due varianti nel CB, e c'è un articolo su una di esse, sono un ordine di grandezza più lente. Di che tipo di hashmap avete bisogno,non di un software? Non volete un hashmap hardware su FPGA? )) Che ne dici, Ilon Musk!

Intendo std:: senza implementazione nel linguaggio eseguibile mql5, perché è significativamente più lento dell'implementazione nativa su plus.


Cosa c'è di sbagliato nei plus? MQL5 non supporta più il caricamento di DLL a 64 bit? Scrivete immediatamente a Renate di questo oltraggio! Ho anche C++ 20 supportato! Ho solo bisogno di prenderci la mano ))!

L'opzione DLL nativa è bella, ma ha molti svantaggi:

  1. Non supportato dal tester di strategia
  2. Non può rimanere nello stesso negozio.
  3. Non tutti gli utenti amano eseguire l'EA con la loro DLL
  4. Per quanto ho capito (correggetemi se sbaglio) - la DLL è caricata/scaricata ad ogni chiamata
E MQL5 stesso è un analogo di C++, solo C99, quindi è di questo che stiamo parlando.


PS. Proverò a tradurre il mio robot in DLL - potrebbe essere più veloce per passare i test e lavorare in generale

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
b2579.
File:
2579_lags.txt  653 kb
 
fxsaber:
In OnTick richiedo la cronologia dei tick dal tick precedente.

Non proprio sul tema dei ritardi, ma lo chiederò comunque. A cosa serve la storia? Si possono perdere le zecche? MT4 ha praticato questo, ma MT5 non dovrebbe farlo, vero?

 
traveller00:

Non proprio sul tema dei ritardi, ma lo chiederò comunque. A cosa serve la storia? Si possono perdere le zecche? MT4 l'ha praticato, e MT5 non dovrebbe farlo, no?

L'eventoNewTick viene generato quando arrivano nuove quotazioni ed è gestito daOnTick() negli EA collegati. Se all'arrivo di una nuova quotazione viene eseguita la funzione OnTick in esecuzione sulla quotazione precedente, la quotazione in arrivo sarà ignorata dall'Expert Advisor, perché l'evento corrispondente non viene messo nella coda degli eventi EA.

https://www.mql5.com/ru/docs/runtime/event_fire#newtick