[SERVICE DESK] Fehler beim Abrufen der Zeit der älteren TF im Timer! - Seite 8
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
3. interessanter Punkt der Analyse, was gibt CopyClose() zurück, ich habe es selbst überprüft, wenn es keine .hst-Datei für die angeforderte TF gibt, CopyClose() gibt nie mehr als 2048 zurück - d.h. dies ist der maximale Wert, der heruntergeladen werden kann?
Nr. 2048 ist der Teil der Daten, der vom Server heruntergeladen wird, wenn auf dem Client keine Datei vorhanden ist.
Nein. 2048 ist ein Datenpaket, das vom Server heruntergeladen wird, wenn auf dem Client keine Daten vorhanden sind.
Hm, ich mache schon seit langem MQLs, aber es ist immer noch unerwartet für mich
OK, hier ist ein Beispiel aus der Hilfe:https://www.mql5.com/ru/docs/series/timeseries_access
heißt es:
Die nächste wichtige Prüfung ist die Überprüfung des Programmtyps, aus dem die Funktion aufgerufen wird. Es sei daran erinnert, dass es höchst unerwünscht ist, eine Aktualisierungsanforderung für eine Zeitreihe mit demselben Zeitraum zu senden wie der Indikator, der die Aktualisierung aufruft. Dass es unerwünscht ist, Daten aus demselben Zeitraum wie der Indikator anzufordern, liegt daran, dass die Aktualisierung der historischen Daten in demselben Thread erfolgt, in dem auch der Indikator arbeitet. Daher ist die Wahrscheinlichkeit eines Zusammenstoßes hoch. Um dies zu überprüfen, verwenden wir die FunktionMQL5InfoInteger() mit dem ModifikatorMQL5_PROGRAM_TYPE.
z. B. https://www.mql5.com/ru/code/449
es ist nicht geeignet für das Laden von Verlaufsdaten in MT4-Indikatoren, und wie kann ich den gesamten Verlauf durch den Indikator herunterladen, wenn es keine vorbereitete .hst-Datei gibt, d.h. der Indikator initialisiert das Laden des Verlaufs durch sein eigenes Symbol
wie kann ich wissen, dass ich hier die gesamte Historie gleich iBars(Symbol(),PERIOD_CURRENT) "heruntergeladen" habe;
iBars() auch einen falschen Wert zurückgibt? - es gibt noch keine Historie, also gibt es auch kein iBars()
es scheint, dass in MT5 die Geschichte ohne Probleme heruntergeladen wird, müssen Sie nur warten und überprüfen Sie den Status der historischen Daten, aber in MT4?
PS: in kodobase gestern war ich auf der Suche nach einem korrekt funktionierenden Multicurrency-Indikatoren für MT4, aber die Codes sind nicht Gegenstand der Nachahmung, in vielen Beispielen von kodobase, in der Regel gibt es keine Geschichte paging in den Indikator
Bei Vierlingen wurde die "Home-Taste gedrückt". Es gibt keinen anderen Weg. Wenn Sie sich schon eine Weile mit dem Thema befassen, sollten Sie sich an den Ausdruck "brick on the keyboard" erinnern
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Sie können meinen kostenlosen Downloader ausprobieren.
Sie können meinen kostenlosen Downloader sehen.
Ich weiß, wie man den Verlauf herunterlädt, aber ich weiß nicht, wie ich den Download-Indikator überprüfen kann.
In vierfacher Ausführung "Drücken Sie die Home-Taste". Es gibt keinen anderen Weg. Wenn Sie sich schon lange mit dem Thema befassen, sollten Sie sich an den Ausdruck "brick on the keyboard" erinnern.
https://www.mql5.com/ru/code/9968
https://www.mql5.com/ru/code/9153
https://www.mql5.com/ru/code/9888
Als ich in den letzten Jahren anfing, MQL zu benutzen, lernte ich MQL überhaupt nicht, seit diesem Jahr bin ich wirklich überrascht, dass die Entwickler die Kompatibilität zwischen MT5 und MT4 so weit wie möglich hergestellt und die Leistung von MQL4 verbessert haben - obwohl uns vorher gesagt wurde, dass MT4 als Projekt nicht mehr weiterentwickelt wird, es gibt nur noch Bugs zu beheben
und hier war die Hoffnung, dass ich keine Informationen über das automatische Laden der Historie im MT4-Indikator gefunden habe
Grundsätzlich, wenn Sie garantiert die gesamte Historie in MT4 und ohne zusätzliche Prüfungen herunterladen wollen, dann ist es einfacher, dfix Code zu verwenden - schreiben Sie die bar datetime t=0 in .hst Datei;
Was schlagen Sie also vor, wie ich mir Ihren Code ansehen soll?
Ich dachte, Sie bräuchten nur den Verlauf, der automatisch geladen wird...
Zu meinem großen Bedauern muss ich noch einmal auf das Thema des Erhalts von Senior-TF-Daten im MT4 zurückkommen. Diesmal, weil die hier vorgeschlagenen Techniken nicht funktioniert haben.
Hier ist der von uns verwendete Code:
Es implementiert das Paging von Daten, wie mir geraten wurde:
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
[SERVICESDESK] Fehler beim Abrufen der Zeit der älteren TF im Timer!
Slawa, 2018.09.27 06:20
Darüber wurde bereits mehrfach diskutiert. 12 Seiten zu "Fehler 4066".
Und es wurde Ihnen richtig geraten, die Anfrage in OnInit zu senden und in OnCalculate zu analysieren.
Wozu brauchen Sie einen Millisekunden-Timer? Sie verhindern, dass das Client-Terminal normal gestartet werden kann. Es sind nicht die Windmeldungen, die Ihren Timer stören, es ist Ihr Timer, der alle stört. Noch einmal: Die Indikatoren im MT4-Terminal des Kunden arbeiten im Schnittstellen-Potenzial.
Die Implementierung ist genau so: Die erste Datenabfrage erfolgt in OnInit(). Dann warten wir, bis die Verbindung mit dem Handelsserver hergestellt ist, und in OnCalculate()! erhalten wir die Daten des hohen TF. Das Ergebnis erhalten wir heute beim ersten Start:
Wie wir aus dem Protokoll ersehen können, haben wir falsche Werte für die Uhrzeit und die Tageszeit erhalten.
Ja, die Entwickler(@Slava) haben vielleicht bemerkt, dass ich nicht alle Ratschläge, die mir gegeben wurden, befolgt habe. Das heißt, ich führe immer noch einen schnellen Timer in OnInit() aus, obwohl mir ursprünglich geraten wurde, einen langsamen Timer auszuführen. In diesem Fall ist es jedoch Absicht. Wenn der schnelle Timer im Schnittstellen-Thread gestartet wird und den Abruf von Daten aus anderen Indikatoren verlangsamen kann, ist dies ein großes Problem. In der Dokumentation wird nicht davor gewarnt, dass ein Programm mit einem schnellen Timer zu einer Art "Virus" werden kann, der andere Programme zum Absturz bringt.
In Anbetracht der obigen Ausführungen bin ich der Meinung, dass wir entweder Beschränkungen für den Millisekunden-Timer einführen oder in der Dokumentation zu EventSetMillisecondTimer() angeben sollten, dass die Funktion nicht in OnInit() gestartet werden kann, damit das Terminal beim Start normal ansteigen kann.
Jetzt kommt der lustige Teil. Der Code ist ohne Zeitschaltuhren:
Und Sie können immer noch nicht das gewünschte Ergebnis erzielen. Die Entwickler(@Slava), bitte kommentieren. Es ist unmöglich, korrekte Daten zu erhalten, wenn das Terminal von mehreren höheren TFs geladen wird. Obligatorische Bedingung ist, dass das Terminal mehr als eine Stunde nach dem Abschalten ausgeschaltet sein muss (da wir Daten für einen Stundenbalken erhalten). Und natürlich die Inbetriebnahme von TF in weniger als einer Stunde.
Es stellte sich heraus, dass der Timer nicht beteiligt war.