MT5 und Geschwindigkeit in Aktion - Seite 70

 
Bitte fügen Sie die gewünschte Funktionalität hinzu.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Neue Version von MetaTrader 5 build 2650: Laden von Charts im Hintergrund und Verbesserungen im MQL5 Code Profiler

fxsaber, 2020.11.04 16:50

Leider wurden keine Funktionen zum Minimieren der Fenster von Charts, Terminal, Market Watch usw. hinzugefügt. Es wurde bereits früher nachgewiesen, dass die Minimierung dieser Fenster die CPU-Belastung verringert.

Und stoppen Sie die Anzeige von Daten im Market Watch-Fenster und anderen Fenstern, wenn das Terminal-Fenster nicht sichtbar ist. Zum Beispiel, wenn die aktuelle Anwendung (z. B. der Browser) aktiv und maximiert ist.


Das Bärtige muss feststellen, welche Karte gerade ausgewählt ist. Die Menschen sind gezwungen, verkrustete WinAPI-Lösungen zu verwenden.

Активный график (ID активного графика)
Активный график (ID активного графика)
  • 2014.10.20
  • www.mql5.com
Доброго времени суток! Нужно элементарно определить ID активного графика (того что выбран в данный момент...
 

Ja, MetaTrader VPS hat um Größenordnungen weniger Latenz (Emissionen von Latenz) und viele Male mehr alle Ressourcen im Vergleich zu regulären VPS von Hosting-Anbietern.

Es wurde schon oft erklärt, warum.

Eine garantierte Null-Latenzzeit bei der Ausführung von Threads kann es bei den derzeitigen (allen) Prozessorarchitekturen nicht geben. Geschichten über"Echtzeitsystem-Betriebssysteme " bleiben Mythen, man muss sie nicht erwähnen.

 
fxsaber:

Ich verstehe, was es mit den einzelnen Auswürfen auf sich hat, danke für die ausführlichen Erläuterungen. An dieser Stelle geht es jedoch nicht um SymbolInfoTick, sondern um Verzögerungen anderer Art, die bei fast jedem Tick auftreten.

Hier geht es nur um Ihre einzelnen Emissionsmessungen - sie werden nicht mehr akzeptiert oder berücksichtigt. Ihre gesamte Analyse stützt sich ausschließlich auf Emissionen.

Andere Themen können nur dann berücksichtigt werden, wenn das Szenario klar und vollständig in einem Kommentar beschrieben wird, ohne dass "eigentlich andere Kommentare gemeint sind" und ohne dass es zu einer Einzelbefehlszählung kommt.

 
Renat Fatkhullin:

Andere Themen können nur dann berücksichtigt werden, wenn das Szenario klar und vollständig in einem einzigen Kommentar beschrieben wird, ohne dass "eigentlich andere Kommentare gemeint sind" und ohne dass es zu einer Einzelbefehlszählung kommt.

Hier bei den Links sind die Details, einschließlich der Kommentare im Quellcode.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MT5 und Geschwindigkeit in Aktion

fxsaber, 2020.11.05 07:42

Wer VPS von MQ nutzt, möge bitte die Ergebnisse der folgenden Programme dort mitteilen.

  1. Expert Advisor, der OnTick/OnBook-Verzögerungen abfängt.
  2. Expert Advisor, der mit der Zeit Ticks einfängt.
  3. EinSkript, das die durchschnittliche Ausführungszeit von Sleep(1) misst.
 

Es gibt eine Plattform namens deltix (ich will keine Werbung dafür machen). Als ich mit den Entwicklern sprach (ich wollte es vor einiger Zeit für Arbitragezwecke anschließen), erklärten sie mir dasselbe über einzelne Verzögerungen, dass dies normal sei und man den Durchschnitt betrachten müsse

Dies ist übrigens, ohne dass jemandem Steine in den Weg gelegt werden

 

Da es zwangsläufig zu einzelnen Ausreißern kommt, ist es logisch, regelmäßige Funktionen zu haben, die ein Array des gesamten Market Watch und ein Array aller aktuellen Positionen/Aufträge zurückgeben. Ähnlich wie MarketBookGet.

Im Moment müssen Zyklen gefahren werden. Das ist SEHR teuer.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MT5 und Geschwindigkeit in Aktion

fxsaber, 2020.10.07 12:41

Die praktische Notwendigkeit zwingt Sie, es so zu schreiben.

// Возвращает время Обзора рынка в миллисекундах.
long TimeCurrentMsc()
{
  long Res = 0;
  
  MqlTick Tick;
  
  for (int i = SymbolsTotal(true); i >= 0; i--) 
  {
    const string Symb = SymbolName(i, true);
    
    if (SymbolInfoTick(Symb, Tick) && (Tick.time_msc > Res))
      Res = Tick.time_msc;
  }

  return(Res);
}

Ich bin mir nicht sicher, warum ich versucht habe, den EA in MQL5 einzugeben, obwohl ich wiederholt dazu aufgefordert wurde.

 
Slava:

Es wird keine Beschleunigung geben. Stellen Sie Ihre Berechnungen, zumindest in groben Zahlen, zum Nachweis der Mehrfachbeschleunigung vor.

Ein Wettlauf um Ressourcen? Unkontrollierte Erzeugung neuer Datenströme? Konflikte wegen nichts?

Wollen Sie unerklärliche Verlangsamungen?

Bei dem ereignisbasierten Modell sind alle Ereignisse immer in Formation aufgetreten, eines nach dem anderen. Zerkaut - zerkaut.

Keine Beschleunigung der Ereignisverarbeitung, in einer asynchronen Architektur? Ist das Ihr Ernst?
Beschleunigte Verarbeitung von Benutzerprogrammen, insbesondere ihrer Handler. Das ist es, wovon ich spreche.

Ich verstehe, dass Sie versuchen, die Verwendung von Fäden zu minimieren. Eine der Alternativen ist jedoch, jeden Handler in einem separaten Thread laufen zu lassen.
Keine unkontrollierte Erstellung von Threads. In einem Benutzerprogramm gibt es nur wenige Handler, von denen jeder in einem eigenen Thread beim Programmstart gestartet werden sollte.
Und Sie synchronisieren die Ereignisse zwischen den Handlern mit Mutexen oder was auch immer.

Aber wenn Threads ein Problem für Sie sind, wie Sie erwähnt haben, gibt es ein Ereignismodell, mit dem Sie in einem einzigen Thread arbeiten können.Ereignisbehandlung in einer Ereignisschleife mit Aufgabenauslösern.
Die Ereignisschleife läuft zwar sequentiell, aber die Aufgaben in dieser Schleife werden parallel behandelt!
Das ist es, was ich meine, alle Handler im Programm laufen in dieser Ereignisschleife, dann werden alle Ereignisse asynchron sein und gleichzeitig in Echtzeit eintreffen.
Das heißt, die gleichen Ereignisse in OnTrade undOnBookwerden übereinstimmen.
Bitte fragen Sie, wie eine Ereignisschleife in anderen Sprachen funktioniert.
Wenn die Ereignisschleife bereits im Terminal vorhanden ist, wenden Sie sie einfach auf Handler in Programmen an. Das ist alles.
 
Roman:
Jeder Handler sollte in einem separaten Thread ausgeführt werden.

Das Problem ist in keiner Weise gelöst. MQL-Programme werden sehr viel komplizierter, wenn beispielsweise verschiedene Threads den Zugriff auf interne Variablen lesen und schreiben.

 
fxsaber:

Das Problem ist in keiner Weise gelöst. MQL-Programme werden um eine Größenordnung komplizierter, wenn z. B. der Zugriff auf interne Variablen von verschiedenen Threads aus gelesen und geschrieben wird.

Die MQL-Programme werden dadurch nicht komplizierter, sondern bereiten den Entwicklern nur Kopfschmerzen bei der Synchronisation. Die sie natürlich nicht zu lösen bereit sind.
Oder eine festgefahrene Anfangsarchitektur des Projekts, die nicht für dieses Modell ausgelegt ist.
Und natürlich wird niemand das Projekt für ein neues Modell umschreiben.
Das Ereignisschleifenmodell ist besser für Handler geeignet. Das ist es, was ich zu sagen versuchte.
Und dieses Modell gibt es höchstwahrscheinlich schon seit einiger Zeit im Terminal, es wurde nur noch nicht auf die Handler angewandt.

 
Roman:

MQL-Programme werden nicht mehr komplizierter...

Ich schlage vor, dass dies das Ende der Theorien ist, die sich hier nie mit der Praxis überschneiden werden.