Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1461

 
In MT4 im Tester, wie man einen Stop-Knopfdruck für einen Indikator verfolgt. OnDeanit wird nicht aufgerufen, obwohl der Test beendet ist. Oder wie man geöffnete Dateien schließt, wenn die Stopptaste im Prüfgerät gedrückt wird.
 
Valeriy Yastremskiy:
In MT4 im Tester, wie man einen Stop-Knopfdruck für einen Indikator verfolgt. OnDeinit wird nicht aufgerufen, obwohl der Test beendet ist. Oder wie man geöffnete Dateien schließt, wenn die Stopptaste im Prüfgerät gedrückt wird.

offene Dateien sollten ohnehin automatisch geschlossen werden

wenn nicht, versuchen Sie, Dateien mit SB zu erstellen, es gibt CFile, CFileTxt als OOP - Objekte werden bei der Deinitialisierung zerstört und Destruktoren schließen die Dateien

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: Warum wird OnDeinit() Ihrer Meinung nach nicht aufgerufen? - versuchen, eine Datei darin zu öffnen und zu schreiben

 
Igor Makanu:

offene Dateien sollten ohnehin automatisch geschlossen werden

wenn nicht, versuchen Sie, Dateien mit SB zu erstellen, es gibt CFile, CFileTxt als OOP - Objekte werden bei der Deinitialisierung zerstört und Destruktoren schließen die Dateien

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: Warum wird OnDeinit() Ihrer Meinung nach nicht aufgerufen? - Versuchen Sie, eine Datei darin zu öffnen und zu schreiben.

Aus Erfahrung. Ich war selbst überrascht. Obwohl dies logisch korrekt ist, handelt es sich um einen Indikator, der nicht wie ein Expert Advisor entladen werden sollte. Ich muss den Indikator manuell aus dem Testchart löschen oder das Fenster schließen. Und erst dann sehe ich die Warnungen nach dem Schließen von Dateien)))

Die Tests sind einfach, ich möchte keine Bibeln verwenden. Ja, und ich denke, es gibt noch etwas anderes als Mausereignisse auf der Stopp-Schaltfläche im Indikator-Tester. Oberflächliche Suchschnitte hat es leider nicht gegeben.

Zy, die Dateien, wenn nicht geschlossen, keinen Zugriff auf sie, und wenn OnDeinit() plötzlich nicht funktioniert, werden sie nur durch Schließen des Terminals geschlossen werden.

Erfahrene Weise, vergessen, die Schließung von Dateien zu erfassen)))

 
Valeriy Yastremskiy:

Erfahrene. Ich war selbst überrascht. Obwohl logisch alles richtig ist, handelt es sich um einen Indikator, der nicht als Expert Advisor entladen werden sollte. Ich muss den Indikator manuell aus dem Testdiagramm löschen oder das Fenster schließen. Und erst dann sehe ich die Warnungen nach dem Schließen von Dateien)))

Die Tests sind einfach, ich möchte keine Bibeln verwenden. Ja, und ich denke, es gibt noch etwas anderes als Mausereignisse auf der Stopp-Schaltfläche im Indikator-Tester. Oberflächliche Suchschnitte hat es leider nicht gegeben.

Zy, die Dateien, wenn nicht geschlossen, keinen Zugriff auf sie, und wenn OnDeinit() plötzlich nicht funktioniert, werden sie nur durch Schließen des Terminals geschlossen werden.

Versehentlich vergessen, die Datei zu schließen)))

Sie haben den gesamten Prozess der Prüfung des Indikators noch nicht beschrieben

Soweit ich verstanden habe, führen Sie den Indikator im Tester von MT4 im visuellen Modus aus, obwohl Sie den Indikator..... im Visualizer von MT4 hinzufügen können

Ich habe noch nie einen Indikator in MT4 getestet, ich prüfe ihn nur in EA im TS-Code


als Alternative, setzen Sie das Datum im Indikator, wenn Sie den Test als Variable beenden und nach Erreichen dieses Datums, speichern Sie die Datei und beenden OnCalculate() - der Code ist ein paar Zeilen, aber es wird definitiv funktionieren

 
Igor Makanu:

Sie haben den gesamten Prozess der Prüfung des Indikators noch nicht beschrieben

Soweit ich verstanden habe, führen Sie den Indikator im MT4-Tester im visuellen Modus aus, aber Sie können ihn auch in MT4 im Visualizer mit indicator..... füllen.

Ich habe noch nie einen Indikator in MT4 getestet, ich prüfe ihn nur in EA im TS-Code


als Alternative, setzen Sie das Datum im Indikator, wenn Sie den Test als Variable beenden und nach Erreichen dieses Datums, speichern Sie die Datei und beenden OnCalculate() - der Code ist ein paar Zeilen, aber es wird definitiv funktionieren

Ja, für das Tester-Fenster ist es unerheblich, ob der Indikator gerade getestet wird oder ob der Indikator das Tester-Fenster überlagert.

Danke für diese nicht so offensichtliche Krücke)

boolIsTesting();

Ich werde es ausprobieren müssen, ich glaube, es soll durch eine Haltestellenlüge zurückkommen)
 
Valeriy Yastremskiy:

Ja, für das Tester-Fenster ist es unerheblich, ob der Indikator gerade getestet wird oder ob der Indikator das Tester-Fenster überlagert.

Danke für diese nicht so offensichtliche Krücke)

boolIsTesting();

ich sollte es ausprobieren, es scheint, dass es bei Stopp false zurückgeben sollte)

Nein, das hat es nicht.

Ich habe eine offene Frage, wie man das Ereignis 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Tester: Stopptaste gedrückt

tat dies)

int OnInit()
{
if(IsTesting()) FlagTest=true;
....
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

if(!IsTesting() && FlagTest) { Print("Окончание тестирования"); OnDeinit(1);}
....
}

 
Igor Makanu:

Suche nach Artikeln von Metacquot :"Cloud"

vor langer Zeit gelesen haben, sollten Remote-Agenten den Verlauf von Ihrem PC herunterladen oder - wenn sie mit demselben Broker verbunden sind - echte Ticks vom Broker übernehmen


aber ich kann mich irren, ich habe es nicht benutzt.


einen der Artikel von Metacquot zu diesem Thema, vielleicht gibt es dort Informationenhttps://www.mql5.com/ru/articles/2612

Igor, danke. Dokumentation, Forum, Artikel - ich habe noch keine Antwort gefunden.

Im Protokoll steht:

"REGRES_EURGBP: Ticks bereits synchronisiert [57 Bytes]".

Ich hoffe, das ist, was ich brauche.

 
Valeriy Yastremskiy:

Nein, das hat sie nicht.

Wie auch immer, die Frage ist offen, wie man im Indikatorentest das Ereignis 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Tester: Stopptaste gedrückt

tat dies)


müssen Sie etwas in dieser Art schreiben:

datetime t_stop=D'20.04.2021'; 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
if(time[0]>=t_stop)
{
        if(f_handle<0) return;
        FileClose(f_handle);
        f_handle = -1;
}
kann mich nicht erinnern MT4 lässt Test letzten Tag (heute) - müssen abholen t_stop
 
HimOrik:

Igor, ich danke dir. Dokumentation, Forum, Artikel - ich habe die Antwort noch nicht gefunden.

Im Protokoll steht:

"REGRES_EURGBP: Ticks bereits synchronisiert [57 Bytes]".

Ich hoffe, das ist, was ich brauche.

die Moderatoren schweigen, es gibt nur wenige aktive Nutzer

Erstellen Sie ein Thema mit Ihrer Frage in der allgemeinen Diskussion, ich denke, Sie werden Ihr Problem schneller lösen

 
Igor Makanu:

müssen Sie etwas in dieser Art schreiben:

Ich erinnere mich nicht MT4 lässt mich testen letzten Tag (heute) - Ich brauche, um t_stop wählen

Ich verstehe diese Idee, sie ist nützlich, aber in diesem Fall funktioniert sie für mich nicht. Ich muss die Zeit des Testers messen : Stopptaste in der Anzeige gedrückt