MT5 und Geschwindigkeit in Aktion - Seite 40

 
Andrey Khatimlianskii:

Warum sollte man die Diagramme einklappen, wenn man das ganze Terminal einklappen kann?

Geprüft. Die CPU-Last ist höher, als wenn Sie Charts, Market Watch und Tools minimieren.


Ich könnte mich irren.

 
Bitte fügen Sie TERMINAL_IS_MINIMIZED analog zu CHART_IS_MINIMIZED hinzu. Bislang müssen wir eine DLL-Lösung verwenden.
user32::IsIconic(TerminalHandle)
Um zu verstehen, dass Sie die gleichen Mausabfragen entfernen können, zeichnen Sie keine Panels, usw.
 

Bitte teilen Sie uns die Ergebnisse mit, wenn Sie diesen EA von Ihrem VPS aus ausführen (nicht von Ihrem Heimcomputer).

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

const bool Init = EventSetTimer(1);

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


Auf diesem VPS

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


Ergebnis.

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.


Es ist wünschenswert, die VPS-Konfiguration zusammen mit dem Ergebnis zu liefern, wie oben gezeigt.


Mit der Tatsache konfrontiert, dass buchstäblich alle Funktionen langsam sind. Bevor ich den VPS wechsle, möchte ich mit anderen Lösungen vergleichen und verstehen, welche besser zu wählen ist. Machen Sie sich also bitte ein objektives Bild.


Ich kann jedes Terminal benutzen, MT4/MT5. Aber ich bin natürlich mehr an 5 interessiert.

 
Ich habe versucht, sie durch die WinAPI-Version zu ersetzen.
#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
Das Ergebnis ist identisch mit dem regulären Ergebnis. Offenbar ist die interne Umsetzung dieselbe. Gibt es eine andere Implementierung der Mikrosekundenzählung?
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.07.27
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

Bestimmt, ob ein Programm auf der gebremsten Maschine läuft oder nicht.

// Возвращает 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);
}
 

Scheint die GetMicrosecondsCount-Bremsen auf VPS-Maschinen umgangen zu haben. Es mag wie nichts erscheinen. Tatsächlich töteten die Kampf-EAs den VPS mit CPU-Last, da die Mikrosekundenzählung in den Snapshots der Handelsumgebung vollständig genutzt werden muss, die wiederum nicht darauf ausgelegt sind, die CPU zu belasten, sondern sie zu entlasten.


Wer ist sonst noch hier reingekommen? Schnappschüsse, und jetzt GetMicrosecondsCount...

 
fxsaber:

Bestimmt, ob ein Programm auf der gebremsten Maschine läuft oder nicht.

Ob der Unterschied Null ist oder nicht, ist eine Frage des Zufalls:

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

Ergebnis: 2000000:213579

 
A100:

Null oder nicht Null ist eine Frage des Zufalls:

Ergebnis: 2000000:213579

Ja, das ist der Grund, warum ich eine solche Bedingung in mqh verwende.

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

Ja, das ist der Grund, warum ich diese Bedingung in mqh verwende.

Es sind nur 5 Schecks. Ich habe einen langsamen Computer (Tablet), aber selbst ich habe nur bei jeder2000000/213579=10ten Prüfung einen Unterschied.Und dass ich einen langsamen habe, wird durch die Tatsache bestätigt, dass auch dieser nicht von jemand anderem reproduziertwird:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MT5 und Geschwindigkeit in Aktion

A100, 2020.09.05 00:13

Auch über Verspätungen

und alle manuellen Diagramme (Trend, Fibonacci, usw.) sind ebenfalls langsam

Die Einstellungen sind alle standardmäßig:

  • Server: MetaQuotes-Demo
  • Geschichte: verfügbar seit 01.01.1971
  • Genauer Zeitrahmen: keiner
  • Maximale Balken im Fenster: 100000
  • Diagrammtyp: Candlesticks
  • Verkleinerung des Diagramms: Maximum

Symbol, Punkt Bars Latenzzeit
EURUSD, Monatlich 597 gehen zu
EURUSD, Wöchentlich
2590 Überprüfen Sie
EURUSD, Täglich

12797

keine

Eine Art umgekehrte Abhängigkeit: je weniger Balken, desto langsamer

Auf Monats- und Wochencharts, z. B. EURGBP (wo es keine so tiefe Geschichte gibt) - keine Verzögerungen


 
A100:

Das sind nur 5 Schecks. Ich habe einen langsamen Computer (Tablet), aber selbst ich habe nur bei jeder2000000/213579=10ten Prüfung einen Unterschied.Und dass ich einen langsamen habe, wird durch die Tatsache bestätigt, dass auch dieser von niemandem sonst reproduziertwird:

Wenn fünf aufeinanderfolgende Prüfungen ein Ergebnis ungleich Null ergeben, handelt es sich um eine langsame GetMicrosecondsCount. Natürlich kann es auch andere (noch logischere) Möglichkeiten geben, um festzustellen, ob ein Problem vorliegt. Ich habe es vorerst so belassen.

Was die Arbeit mit der Balkenhistorie angeht - ich verwende sie nicht. Es ist immer M1+5000 bar. Die Aufgabe besteht darin, schnell zu handeln.

Grund der Beschwerde: