MT5 et la vitesse en action - page 3

 
fxsaber:

Terminal vide 2460.


ZS Exécuter sur un compte vide.


Il semble que la vitesse soit fortement influencée par le nombre de transactions, et non par les ordres.

C'est possible. Je vais certainement le vérifier.

Même à un niveau effrayant de 20000ms / 100000 cycles, on est loin des 5-30ms par appel.

 

Je ne comprends pas comment ça marche.

- J'ai un peu de ça.

Photo par

 
A100:

Dans sa forme la plus simple :

Il vous suffit de modifier votre approche des calculs eux-mêmes (effectuer des retours intermédiaires aussi souvent que la tâche l'exige). Mais si c'est compliqué, considérez à la 1ère étape que OnMain est absent pour vous (vous portez le code principal non pas à OnMain, mais à OnTrade2XX), respectivement vous n'avez pas besoin d'apprendre quoi que ce soit à OnMain.

Qu'est-ce que OnMain ? Comment peut-il y avoir plus d'un événement dans la file d'attente de OnMain si chaque événement appelle OnMain pour gérer la file d'attente ?

 
fxsaber:

Nécessité de fonctionner sur un compte avec beaucoup d'historique de transactions.

Ce n'est plus le sujet - quelque chose dans le Royaume du Danemark .... Quel est le reste du texte ? ))

 

Test1
 
fxsaber:

Veuillez demander aux lecteurs de citer leurs résultats de ce scénario.

Exécuté depuis mon ordinateur portable pas si récent.


 

J'ai commencé 3 fois sur des personnages différents. Voici les résultats :

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

Ressource :

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


Le résultat, à mon avis, est excellent.

Et il y a beaucoup de processus différents qui tournent sur l'ordinateur, l'activité moyenne du CPU ~=50-65%.

 
fxsaber:


Veuillez demander aux lecteurs de citer leurs résultats de ce 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:

Même un effrayant 20000ms / 100000 cycles est loin de 5-30ms par appel.

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


Dans les EA de combat, j'ai enveloppé des fonctions partout dans des endroits suspects dans _B(FuncName(...), AlertTime). Voici un court extrait du journal, tiré des entrées les plus récentes.

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 colonne de temps indique la fréquence à laquelle les frises se produisent.
Dossiers :
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

Ressource :

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