Indikatoren: Ping - Seite 2

 
fxsaber:

Es ist eigentlich nicht klein ~ 5 ms. Ein Stein im Garten von denen, die von Null Ping leiden.

Auf Build 1703 die durchschnittliche Verzögerung ist die gleiche. Aber Überspannungen wurde viel weniger.

Führte ein Experiment durch. Startete ein torrent auf einer Maschine mit MT5, das ist die Situation

Das bedeutet, dass die Verzögerung des Terminals bis zu 2 Sekunden betragen kann, wenn jemand das Netzwerk aktiv nutzt. Dies ist besonders wichtig für diejenigen, die VPS verwenden, wo der Netzwerkkanal nicht von einem, sondern von vielen Clients abhängt, zu verstehen. Und wenn man zum Beispiel einen News-TS auf einen solchen VPS setzt, ist das sehr riskant.

 
fxsaber:


Und in der Tat wurde ursprünglich festgestellt, dass Indikatoren in Expert Advisors einen Engpass darstellen, da alle Indikatoren im Gegensatz zu Expert Advisors in einem Thread ausgeführt werden. Verzögerungen in Expert Advisors erfordern eine separate Studie. Die Funktion zum Abrufen von Lags ist in der Beschreibung enthalten, es ist also nicht schwierig.

Könnten Sie mir sagen, wo es heißt, dass die im Expert Advisor aufgerufenen Indikatoren in einem Thread ausgeführt werden und dass der Expert Advisor in irgendeiner Weise mit den Aufgaben selbst parallel läuft?

Ich hatte den Eindruck, dass genau das Gegenteil der Fall ist - der Indikator ist ein separates Programm und kann problemlos in einem parallelen Thread berechnet werden, aber die Berechnung muss warten, wenn sie aus irgendeinem Grund nicht abgeschlossen ist. Ich weiß, dass im Strategietester alles in einem Thread läuft.

 
Aleksey Vyazmikin:

Könnten Sie mir sagen, wo gesagt wurde, dass die Indikatoren, die im Expert Advisor aufgerufen werden, in einem Thread ausgeführt werden und der Expert Advisor irgendwie parallel zu den Aufgaben selbst läuft?

Forum über Trading, automatisierte Handelssysteme und das Testen von Handelsstrategien

Kann mir jemand die Bedeutung der Anwendung in Expert Advisors erklären :....

Renat Fatkhullin, 2010.02.06 13:06

Ein Indikator ist eine berechnete Einheit, die strenge Anforderungen zu erfüllen hat. Er hat kein Recht, sich zu verlangsamen und keine Daten zu produzieren (und Daten werden von ihm bedingungslos verlangt).

Indikatoren arbeiten in ihrem eigenen Fluss, verarbeiten jeden Preistick, und jede Verzögerung führt zur Blockierung des gesamten Systems (die Folgen sind sehr unterschiedlich).

Wir hatten die Befürchtung, dass die Arbeit mit Objekten zu schwerwiegenden Bremsen der Indikatoren führen würde (die Arbeit mit Objekten läuft über eine spezielle asynchrone Warteschlange von Nachrichten). Experimente haben gezeigt, dass Objekte, wenn sie vernünftig verwendet werden (ohne Hunderte und Tausende von Objekten gleichzeitig zu bewegen), die Berechnungen nicht wesentlich beeinträchtigen. Aus diesem Grund haben wir die Verwendung von Objektverwaltungsfunktionen in benutzerdefinierten Indikatoren erlaubt. Aber wenn Sie wollen, können Sie leicht Bremsen im Terminal durch unintelligente Arbeit mit Objekten im Indikator schaffen.


Um zu verstehen, was ein Indikator ist, müssen wir tiefer blicken - auf den Zugriff auf historische Daten. Wenn ein Indikator über OnCalculate aufgerufen wird, erhält er die verfügbare Historie.

Wenn Sie sich das Volumen ansehen (indem Sie die Zähler in den Protokollen anzeigen lassen), werden Sie feststellen, dass pro Tick Dutzende und Hunderte von Megabytes zur Verfügung gestellt werden:

  1. Woher kommen diese Arrays?

    Vom globalen Verlaufsmanager, der auf Tick-by-Tick-Basis aktualisiert, zwischenspeichert und bei Bedarf Zeitrahmen neu erstellt.

  2. Wer stellt sie zur Verfügung?

    Sie sind zum Lesen gesperrt und werden vom Terminal nacheinander für jeden Indikator bereitgestellt.

  3. Wie viele Indikatoren werden mitgeliefert?

    Theoretisch eine unbegrenzte Anzahl von Indikatoren, aber einer nach dem anderen.

  4. Woher soll man so viel Speicherplatz bekommen, um jedem Indikator Unabhängigkeit bei den Berechnungen zu geben?

    Der Speicherplatz ist katastrophal knapp, also gibt es nur die Möglichkeit, dass die Indikatoren einzeln arbeiten.


Die Besonderheit von MetaTrader 5 im Vergleich zu MetaTrader 4 besteht darin, dass sich das Volumen der Historie um ein Vielfaches erhöht hat und wir ein sehr schwieriges Problem der schnellen Neuberechnung von Indikatoren gelöst haben (ohne Dutzende von Megabytes der Historie für jeden Indikator einzeln zu kopieren). Selbst zwei (oder mehr) identische Indikatoren auf identischen Zeitrahmen werden in einer Berechnungskopie zusammengefasst und einmal gezählt.

Nun schlagen Sie vor, den gesamten Mechanismus auszuschalten und zu verlangsamen, indem Sie aus den Indikatoren reine Experten machen. Es ist völlig klar, dass dies technisch unvernünftig ist. Die Hinzufügung von Interaktivität zu den Indikatoren wird sofort den Arbeitsmechanismus der Arbeit mit dem Terminal-Kern zerstören - den Zugang zu den Daten.

Als Ergebnis werden wir ein "langsames Terminal bekommen, die können nicht einmal einen Indikator zeichnen, und Charts werden mit einer Verzögerung gezeichnet!", und niemand wird sagen "ja, es ist mein schicker Indikator, der funktioniert, es ist seine Schuld". Und selbst in diesem Fall wird man uns vorwerfen, dass wir "keine vernünftige Trennung bieten, nicht wissen, wie man Multithreading-Software schreibt, usw.".

Daher wird es keine grundlegende Änderung im Verhalten und in den Prinzipien der Arbeit von Indikatoren geben.


 
fxsaber:

Ich danke Ihnen für die Informationen, die Sie gefunden haben.

Das Jahr 2010 fällt mir sofort ins Auge, da man ja bekanntlich "nie nie" sagt, wäre es interessant zu wissen, was jetzt los ist, ob es wirklich keine Änderungen gibt.

Außerdem geht aus der Antwort von Renat hervor, dass jeder Indikator in einem eigenen Thread arbeitet. Folgt daraus nicht, dass mindestens zwei Threads für einen Expert Advisor und einen Indikator gleichzeitig existieren können?

Renat behauptet, dass die Verzögerung durch die Notwendigkeit verursacht wird, die Indikatoren mit einer großen Datenmenge zu versorgen(in der Tat werden Dutzende und Hunderte von Megabytes pro Tickgegeben ), aber nach den heutigen Gegebenheiten ist dies keine so große Datenmenge, und es ist durchaus möglich, dass für die Arbeit der gleichen Indikatoren mit den gleichen Instrumenten ein gemeinsamer Strom historischer Daten organisiert wird, aber ein anderer Strom für die Berechnung der Indikatoren selbst, was teilweise bereits 2010 organisiert wurde"Wir haben sogar zwei (oder mehr) identische Indikatoren auf den gleichen Zeitrahmen in einem einzigen Stromverschmelzen.

Selbst wenn das stimmt, ist es durchaus möglich, Indikatoren in einem Cluster zusammenzufassen und dort OpenCL anzuwenden (ich habe es selbst noch nie angewandt, weil es kaum Informationen für Dummies über die Organisation gibt).

 
Aleksey Vyazmikin:

Mich würde interessieren, was jetzt los ist.

Eins, zwei, drei, vier.

 
fxsaber:

Eins, zwei, drei, vier.

Danke, ich habe mir die Suchergebnisse genau angeschaut. Es ist meistens dasselbe alte Zeug.

Das Ergebnis ist, dass wir einen Thread pro Symbol für alle Indikatoren dieses Symbols haben. Und wir haben einen Thread für jeden (?) EA. Wenn wir also Informationen zur Entscheidungsfindung aus verschiedenen Charts verwenden, ist die Verwendung von Indikatoren vorzuziehen?

Indikatoren haben einen Vorteil - bequemes Arbeiten mit der Geschichte der Berechnungen.

Vielleicht, wenn Sie Berechnungen auf jedem Tick machen, kann der Indikator ein Engpass werden, weil er versuchen wird, die relevantesten Daten zu geben, aber wenn die Berechnung auf OHLC basiert, dann sollte die parallele Berechnung einen Vorteil bieten. Solange der Expert Advisor Informationen von Indikatoren anfordert, nachdem er die Situation mit der aktuellen Position überprüft hat, stehen diese Daten bereits zum Empfang bereit. Und ja, ich führe Berechnungen in Indikatoren nur bei der Eröffnung eines neuen Balkens durch. Und wenn die Logik der Indikatoren kombiniert wird, geht es noch schneller, oder haben Sie eine andere Meinung?

 

Aleksey Vyazmikin:

oder haben Sie eine andere Meinung?

Ändern Sie das Thema.

 
Hallo, ist die Maßeinheit für den Ping in Sekunden?
 
Manoel Calixto Da Silva Neto:
Hallo, ist die Maßeinheit für den Ping in Sekunden?

Sie ist beschrieben. Haben Sie es nicht gelesen?

"Die Verzögerung der Zitate wird in Millisekunden berechnet;"

 

Ich habe mich an diesen tollen Indikator erinnert.

Dies ist ein Bild von einem Rechner mit Null-Ping. Es stellt sich heraus, dass die interne Verzögerung des Terminals im Durchschnitt ~2 ms beträgt. Er springt im Bereich von 0-9 ms.


Zum Beispiel kamen zwei Ticks auf dem Server: die erste, in 10 ms - die zweite. Im Terminal kommt der zweite Tick also nicht 10 ms nach dem ersten, sondern in 10-19 ms. Im Durchschnitt in 12 ms.