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

 
Andrey Khatimlianskii :

Tüm terminali daraltabilecekken neden çizelgeleri daraltasınız?

Kontrol. CPU yükü, çizelgeleri, Piyasa İzlemeyi ve Araçları daralttığınızdan daha fazladır.


ZY Belki yanılıyorum.

 
Lütfen CHART_IS_MINIMIZED'e benzer şekilde TERMINAL_IS_MINIMIZED ekleyin. DLL çözümünü kullanmak gerekli olsa da.
user32::IsIconic(TerminalHandle)
Aynı farenin anketlerini kaldırabileceğinizi anlamak için paneller çizmeyin, vb.
 

Lütfen bu EA'yı VPS'nizden çalıştırmanın sonuçlarını paylaşın (ev makinenizden değil).

 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

const bool Init = EventSetTimer ( 1 );

void OnTimer ()
{  
  _B( GetMicrosecondCount (), 1 ); // Замеряем длительность выполнения GetMicrosecondCount()
}


Böyle bir VPS'de

 2020.10 . 03 20 : 21 : 49.222 Terminal        MetaTrader 5 x64 build 2629 started for MetaQuotes Software Corp.
2020.10 . 03 20 : 21 : 49.222 Terminal        Windows Server 2012 R2 build 9600 on KVM, Intel Xeon E3- 12 xx v2 (Ivy Bridge, IBRS), 4 / 5 Gb memory, 7 / 38 Gb disk, IE 11 , RDP, UAC, Admin, GMT+ 3


sonuç.

 2020.10 . 04 12 : 01 : 22.763 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 26 mсs.
2020.10 . 04 12 : 01 : 23.747 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 33 mсs.
2020.10 . 04 12 : 01 : 24.747 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 36 mсs.
2020.10 . 04 12 : 01 : 25.748 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 32 mсs.
2020.10 . 04 12 : 01 : 26.762 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 23 mсs.


Yukarıda gösterildiği gibi, sonuçla birlikte VPS konfigürasyonunun sağlanması tavsiye edilir.


Kelimenin tam anlamıyla tüm fonksiyonların yavaşladığı gerçeğiyle karşı karşıya. VPS'yi değiştirmeden önce, diğer çözümlerle karşılaştırmak ve hangisini seçmenin daha iyi olduğunu anlamak istiyorum. Bu nedenle objektif bir resim için paylaşmanızı rica ediyorum.


ZY Herhangi bir Terminalde mümkündür: MT4/MT5. Ama daha endişeli, elbette, beş.

 
WinAPI sürümüyle değiştirmeye çalıştım.
 #import "kernel32.dll"
   int QueryPerformanceCounter( ulong &lpPerformanceCount);
   int QueryPerformanceFrequency( ulong &lpFrequency);
#import

ulong QueryPerfomanceCounter() { ulong value;   if (QueryPerformanceCounter(value)) return value;   return 0 ; } 

ulong QueryPerformanceFrequency() { ulong freq = 0 ;   if (kernel32::QueryPerformanceFrequency(freq)) return freq;   return 0 ; }  


// https://www.mql5.com/ru/forum/170952/page89#comment_8203859
ulong GetPerfomanceCount_mcs()
{ 
   static ulong freq= QueryPerformanceFrequency();
   return freq ? QueryPerfomanceCounter()* 1000000 /freq : 0 ;
}

#define GetMicrosecondCount GetPerfomanceCount_mcs
Sonuç, normal olanla aynıdır. Görünüşe göre, iç uygulama aynıdır. Mikrosaniye cinsinden ölçmenin başka bir uygulaması var mı?
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.07.27
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

Fren makinesinde bir programın çalışıp çalışmadığını belirler.

 // Возвращает true, если тормозной VPS.
bool IsFreezeVPS()
{
   static bool FirstRun = true ;
   static bool Res;
  
   if (FirstRun)
  {
     if (Res = :: GetMicrosecondCount () - :: GetMicrosecondCount ())
      :: Alert ( "Warning: FreezeVPS - https://www.mql5.com/ru/forum/342090/page40#comment_18579094" );
    
    FirstRun = false ;
  }
  
   return (Res);
}
 

VPS makinelerinde GetMicrosecondsCount frenlerini atlamış görünüyor. Saçmalık gibi görünebilir. Aslında, savaş danışmanları VPS'yi CPU yüküyle öldürdü, çünkü. mikrosaniye ölçümleri, sırayla, yüklenmek için değil, CPU'nun yükünü hafifletmek için tasarlanmış ticaret ortamının anlık görüntüleri için tamamen kullanılmalıdır.


Başka kim geldi? Anlık görüntüler, şimdi de GetMicrosecondsCount...

 
fxsaber :

Fren makinesinde bir programın çalışıp çalışmadığını belirler.

Sıfır fark olup olmaması şans meselesidir:

 void OnStart ()
{
         const int max = 2000000 ;
         int count = 0 ;
         for ( int i = 0 ; i < max; i++ )
                 if ( GetMicrosecondCount () != GetMicrosecondCount () )
                        count++;
         Print ( max, ":" ,count );
}

Sonuç: 2000000:213579

 
A100 :

Sıfır veya sıfır olmaması bir şans meselesidir:

Sonuç: 2000000:213579

Evet, bu yüzden mqh'de bu koşulu kullanıyorum.

     // Несколько проверок - от ложных срабатываний.
     bool Res = ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ());
 
fxsaber :

Evet, bu yüzden mqh'de bu koşulu kullanıyorum.

Sadece 5 kontrol. Yavaş bir bilgisayarım (tabletim) var ama benim bile sadece her 2000000/213579=10. kontrolde bir fark var. Ve benim yavaş bir hastalığım olduğu gerçeği, bunun bile kimse tarafından yeniden üretilmemesi gerçeğiyle doğrulanıyor:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MT5 ve iş başında hız

A100 , 2020.09.05 00:13

Gecikmeler için aynı.

ve tüm manuel grafik yapılar (trend, Fibonacci, vb.) de yavaştır

Ayarların tümü varsayılandır:

  • Sunucu: MetaQuotes-Demo
  • Geçmiş: 01/01/1971 tarihinden itibaren mevcuttur
  • doğru zaman ölçeği: hayır
  • Pencere başına maksimum çubuk: 100000
  • Grafik türü: Japon şamdanları
  • grafik uzaklaştırma: maksimum

Sembol, nokta Barlar gecikme
EURUSD 597 orada
EURUSD Haftalık
2590 orada
EURUSD Günlük

12797

Numara

Bir tür ters ilişki: çubuklar ne kadar azsa, o kadar yavaş

Aylık ve haftalık EURGBP çizelgelerinde (bu kadar derin bir geçmişin olmadığı yerlerde) - gecikme olmaz


 
A100 :

Sadece 5 kontrol. Yavaş bir bilgisayarım (tabletim) var ama benim bile sadece her 2000000/213579=10. kontrolde bir fark var. Ve benim yavaş bir hastalığım olduğu gerçeği, bunun bile kimse tarafından yeniden üretilmemesi gerçeğiyle doğrulanıyor:

Arka arkaya beş kontrol sıfırdan farklı bir sonuç verirse, bu GetMicrosecondsCount frenidir. Elbette, bir sorun olup olmadığını belirlemenin başka (hatta daha mantıklı) yolları da olabilir. Böyle bıraktı.

Bar geçmişiyle çalışmaya gelince, onu kullanmıyorum. Her zaman M1+5000 bar değerindedir. Görev hızlı ticaret yapmaktır.