Init() und DeInit() Ausführungsreihenfolge - Seite 17

 
fxsaber:

Es stellt sich heraus, dass die Dienste fast alle Ein-Funktionen haben werden: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...


Und wenn Sie keine Indikatorpuffer benötigen und sich nicht mit den Krücken der Indikatoren/Advisoren herumschlagen wollen, schreiben Sie einen neuen Programmtyp - Services - der nicht unter den (von den früheren MT-Versionen stammenden) Einschränkungen leidet.

Ganz genau.

Es wird kein OnCalculate geben.

Noch keine Lösung mit OnChartEvent

 
Slawa:

Das ist richtig.

Diese Krücken müssen für viele Menschen lästig sein

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Ich kann keine Indikatordaten von High TF erhalten

Sergey Dzyublik, 2017.04.14 10:55

Der Benutzer verfügte über einen Indikator, der die "Stärke" des Marktes maß.
Der Indikator arbeitet mit dem aktuellen Zeitrahmen und Währungspaar.

Die Aufgabe bestand darin, die Ergebnisse von 8 beliebten Währungen in einem Diagramm darzustellen, wobei die Möglichkeit bestand, eine unabhängige TF auszuwählen, die angezeigt werden sollte.
Es spielt keine Rolle, in welcher TF sich der Benutzer befindet - es sollten die Ergebnisse aus der TF angezeigt werden, die in den Parametern eingestellt wurde.

Das Problem des Ladens von Verkehr aus anderen Währungen um die erforderliche TF wurde mit folgender Krücke gelöst:

   for (int i = ArraySize(symbols_load) - 1; i >= 0; --i){
      int counter = 0;
      int max_count = 10;
      while(counter < max_count){
         RefreshRates();
         double tmp_arr[];
         int res = CopyClose(symbols_load[i] + Suffix, int(TF), 0, 3, tmp_arr);
         if (res == 3)
            break;
         RefreshRates();
         ++counter;
      }
   }

wo:

symbols_load- Liste der zu ladenden Währungen
Suffix- mögliches Präfix für den Namen von Währungspaaren
TF- erforderlicher Zeitrahmen

Ist es möglich, ein Abonnement/Abonnement für historische Daten (Balken und Ticks) für ein bestimmtes Volumen hinzuzufügen? Damit wäre immer ein Zwischenspeicher (frischer Balken und Ticks) einer bestimmten Größe beim Service für die gegebenen Symbole vorhanden.


Wie viel einfacher wäre es dann, z. B. Marktscreenings zu schreiben.

 
Slawa:

Indikatoren sollten für den ihnen zugedachten Zweck verwendet werden.

Mit anderen Worten, die Reihenfolge der Ausführung von OnInit und OnDeinit des Indikators bei der Änderung der Symbol-Periode desCharts sollte niemanden stören

Dieser Ansatz erklärt eine Menge.

Wir sollten es also so akzeptieren, wie es ist, Hauptsache, wir sind uns dessen bewusst.

 
Slawa:

Nein.

Lesen Sie noch einmal, was die Indikatoren sind. Akelis. Colby. Fragen Sie Yandex, was Marktindikatoren sind.

In MT3, als wir das Konzept der benutzerdefinierten Indikatoren eingeführt haben, konnten wir mit Objekten auf Charts arbeiten, weil es nur 2 Indikatorpuffer gab.

Lassen Sie uns ein wenig Geschichte schreiben. Zuerst gab es FXCharts, ich habe es nicht mitbekommen, da ich erst im Oktober 2002 in das Unternehmen eingetreten bin. Dann gab es MetaTrader. Ich trat in das Unternehmen ein, um MQL II zu entwickeln (FXCharts hatte bereits eine Sprache für Handelsstrategien). Als wir MQL II und EAs entwickelt haben, haben wir den Namen in MetaTrader 2 geändert. Als wir die Möglichkeit erhielten, eigene Indikatoren zu schreiben, wurde MetaTrader 3 zu MetaTrader 3.

Dann kamen MetaTrader 4 und MQL4. Benutzerdefinierte Indikatoren haben die Möglichkeit, mit 8 Indikatorpuffern zu arbeiten. Die Möglichkeit, mit Objekten auf dem Diagramm zu arbeiten, wurde beibehalten. Aber da die Indikatoren im Schnittstellen-Thread berechnet wurden, gab es nur wenige Leute, die die Arbeit mit den Objekten missbrauchten.

Und jetzt haben wir MT5. Die Architektur ist völlig anders, aber wir sind Geiseln von MT4 in Bezug auf die Möglichkeiten, mit grafischen Objekten auf dem Chart zu arbeiten. Ja, wir sind Stachanovites, wir haben auch, als Helden, fast unbegrenzte Möglichkeiten des Chartmanagements von Indikatoren hinzugefügt. Wir sind angekommen. Die Illustration - 16 Seiten Diskussionen über nichts.

Kommen wir zu den Dienstleistungen

Der Ordner Services ist im MQL5-Editor aufgetaucht, aber es ist noch nicht klar, wie dieses Tool zu verwenden ist. https://www.mql5.com/ru/forum/190129


Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
  • www.mql5.com
Хотелось бы подробней с примерами использования обсудить новый функционал...
 
Slawa:

Indikatoren sollten für den ihnen zugedachten Zweck verwendet werden.

Mit anderen Worten, die Abfolge von OnInit und OnDeinit des Indikators beim Wechsel der Symbolperiode desCharts sollte niemanden stören

Und warum haben sich alle Argumente auf die grafischen Objekte verlagert? Es gibt andere globale Ressourcen wie globale Variablen, Dateien usw. (können sie in Indikatoren entsprechend ihrem Zweck verwendet werden?), die die Quelle von Fehlern sein werden, wenn"die Reihenfolge der Ausführung von OnInit und OnDeinit des Indikators beim Wechsel derDiagrammsymbol-Periode niemanden stören sollte". Noch einmal, beachten Sie, dass der Kernel jetzt so implementiert ist, dass die Reihenfolge den MQL-Programmierer beunruhigen sollte, um den Ärger zu vermeiden, der durch die Ungewissheit der Reihenfolge der OnInit/Deinit-Aufrufe entsteht. Um MQL nicht zu beunruhigen, brauchen Sie einen Kernel, der sich intern um die Behebung der Unsicherheit kümmert.
 
Stanislav Korotky:
Warum fällt das ganze Argument auf grafische Objekte? Es gibt andere globale Ressourcen wie globale Variablen, Dateien usw. (können sie in Indikatoren verwendet werden? (können sie in Indikatoren entsprechend ihrem Zweck verwendet werden?), die die Quelle von Fehlern sein werden, wenn"die Reihenfolge der Ausführung von OnInit und OnDeinit des Indikators beim Wechsel derDiagrammsymbol-Periode niemanden stört". Noch einmal, beachten Sie, dass der Kernel jetzt so implementiert ist, dass die Reihenfolge den MQL-Programmierer beunruhigen sollte, um den Ärger zu vermeiden, der durch die Ungewissheit der Reihenfolge der OnInit/Deinit-Aufrufe entsteht. Um MQL nicht zu beunruhigen, brauchen Sie einen Kernel, der sich intern um die Behebung der Unsicherheit kümmert.
Hier ist eine gute Frage zu Dateien. Wenn etwas bei der Deinitialisierung zurückgesetzt und bei der nächsten Initialisierung gelesen werden muss, könnte es zu Problemen kommen.
 
Stanislav Korotky:

Wie können Dienste oder die Möglichkeit, mehrere EAs auf einem einzigen Diagramm laufen zu lassen, die Probleme, die wir hier diskutieren, nicht vollständig abdecken?

Stellen Sie sich vor, anstelle der im Thread genannten Indikatoren würde ein Service laufen, der einen vollständig berechneten Teil des Indikators enthält. Der Indikator wird in das Diagramm eingefügt, um die vom Dienst berechneten Daten in den Indikatorpuffern zu visualisieren.


Die Indikatoren sollten ihrem Zweck entsprechend verwendet werden und nicht zu etwas Allgemeingültigem werden, nur weil es mehrere Indikatoren in einem Diagramm gibt. Auf diese Weise können Sie anfangen, sich über das Verbot von OrderSend in Indikatoren zu beschweren.

 
fxsaber:

Wie können Dienste oder die Möglichkeit, mehrere EAs auf einem einzigen Diagramm laufen zu lassen, die Probleme, die wir diskutieren, nicht vollständig abdecken?

Stellen Sie sich vor, anstelle der im Thread genannten Indikatoren würde ein Service laufen, der einen vollständig berechneten Teil des Indikators enthält. Der Indikator wird in das Diagramm eingefügt, das die vom Dienst berechneten Daten in Indikatorpuffern anzeigt.

D.h. wird es möglich sein, einen Indikator über den Dienst zu erstellen?
 
Alexey Kozitsyn:
D.h. wird es möglich sein, einen Indikator über den Dienst zu erstellen?
Dies ist bereits mit einem EA möglich (mit einigen Einschränkungen).
 
fxsaber:
Dies ist über den EA immer noch möglich (mit einigen Einschränkungen).
Sie meinen, mit Krücken? Darf ich Ihnen ein Beispiel nennen?