MT5 ve iş başında hız - sayfa 3

 
fxsaber :

Boş Terminal 2460.


Tehdit Boş bir hesapta çalıştırın.


Siparişlerin değil , işlem sayısının hızı büyük ölçüde etkilediği görülüyor.

Belki. Kesinlikle kontrol edeceğiz.

Korkutucu 20000ms / 100000 döngülerde bile bu, arama başına 5-30ms'den çok uzaktır.

 

nasıl çalıştığını anlamıyorum

- benim için bir şey çıktı

enstantane fotoğraf

 
A100 :

En basit haliyle:

Sadece hesaplamalara yönelik yaklaşımı değiştirmeniz gerekir (görev gerektirdiği sıklıkta bir ara dönüş yapın). Ancak zorsa, 1. aşamada OnMain'in sizin için olmadığını düşünün (ana kodu OnMain'e değil, OnTrade2XX'e aktarırsınız), böylece OnMain'de hiçbir şey öğrenmenize gerek kalmaz

OnMine nedir? Her bir olay, kuyruğu işlemek için çevrimiçi çağrı yapıyorsa, çevrimiçi olarak sıraya alınmış birden fazla olay nasıl olabilir?

 
fxsaber :

Uzun bir ticaret geçmişine sahip bir hesapta çalışmanız gerekir.

Artık mesele bu değil - birisi Danimarka Krallığı'nda .... nasıl daha ileride? ))

 

Test1
 
fxsaber :

Okuyuculardan bu betiğin sonuçlarını sağlamaları istenir.

En yeni dizüstü bilgisayarımdan kaçmak.


 

Farklı karakterlerde 3 kez başlatıldı. Bu tür sonuçlar:

 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

Kaynak:

 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


Sonuç, IMHO, mükemmel.

Üstelik bilgisayarda birçok farklı işlem çalışıyor, ortalama CPU etkinliği ~= %50-65.

 
fxsaber :


Okuyuculardan bu betiğin sonuçlarını sağlamaları istenir.

 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 :

Korkutucu 20000ms / 100000 döngülerde bile bu, arama başına 5-30ms'den çok uzaktır.

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


Savaş danışmanlarında, şüpheli yerlerde her yerde _B(FuncName(...), AlertTime) işlevleri giydim. İşte en son girişlerden kısa bir günlük özeti.

 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.
Zaman sütunu, donmaların ne sıklıkla meydana geldiğini gösterir.
Dosyalar:
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

Kaynak:

 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