![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Danke, das ist genau das Richtige. Gibt das Terminal wirklich einen 4066-Fehler aus, wenn es über iTime auf eine nicht aktualisierte Zeitreihe zugreift? Ich habe festgestellt, dass iClose nicht aktualisierte Informationen anstelle von Null anzeigt.
Das ist der springende Punkt, der Ihr Problem verursacht.
Fehler 4066 - wenn es keine Historie für diese TF gibt, ist sie nicht bereit, Sie müssen den Server kontaktieren.
Und wenn Sie bereits haben es, aber es ist nur aktualisiert, wenn Sie darauf zugreifen, dh nicht einen Fehler geben, nur geben Sie, was jetzt ist, und gleichzeitig mit der Anfrage beginnt, die Zeitreihen zu aktualisieren.
Wenn man nur selten und unregelmäßig darauf zugreift, bekommt man manchmal Schrott. Wenn Sie jede notwendige TF regelmäßig anfordern, bis hin zu jedem Häkchen - dann ist alles in Ordnung.
Wenn der Chart dieser TF geöffnet ist, wird er regelmäßig auf dem Chart aktualisiert. Übrigens, es ist wahrscheinlich möglich, Charts aller notwendigen TFs von EAs zu öffnen, wenn der Zugang nicht regelmäßig ist, aber es ist unzuverlässig, weil sie TFs manuell schließen/ändern können.
Warum 0 zu [i + 0] hinzufügen?
Anstelle von Null habe ich 1 und 2, 1 oder 2 eingesetzt. Ich habe 0, d.h. 1 bar gelassen. Ich habe den Code nicht bereinigt, er ist für die Logik nicht wichtig.
Das ist der springende Punkt, an dem Sie nicht weiterkommen.
Fehler 4066 bedeutet, dass es für diese TF keinen Verlauf gibt, sie ist nicht bereit, Sie müssen den Server kontaktieren.
Und wenn Sie bereits haben es, aber es ist nur aktualisiert, wenn Sie darauf zugreifen, dh nicht einen Fehler geben, nur geben Sie, was jetzt ist, und gleichzeitig mit der Anfrage beginnt, die Zeitreihen zu aktualisieren.
Wenn man nur selten und unregelmäßig darauf zugreift, bekommt man manchmal Schrott. Wenn Sie jede notwendige TF regelmäßig anfordern, bis hin zu jedem Häkchen - dann ist alles in Ordnung.
Wenn der Chart dieser TF geöffnet ist, wird er regelmäßig auf dem Chart aktualisiert. Übrigens, es ist wahrscheinlich möglich, Charts aller notwendigen TFs von EAs zu öffnen, wenn der Zugang nicht regelmäßig ist, aber es ist unzuverlässig, weil sie TFs manuell schließen/ändern können.
Wenn ein Fehler auftritt, werden die alten Daten wiederhergestellt, großartig. Dies ist einer der Gründe, warum Broker MT4 lieben und nicht auf MT5 umsteigen)).
D.h. fragen Sie bei jedem Tick oder Sleep nach dem richtigen Zeitrahmen, bis der Fehler 4066 auftritt. Habe ich es richtig verstanden?
Wenn ein Fehler auftritt, werden die alten Daten wiederhergestellt, großartig. Dies ist einer der Gründe, warum Broker MT4 bevorzugen und nicht auf MT5 umsteigen)).
D.h. fragen Sie bei jedem Tick oder Sleep nach dem richtigen Zeitrahmen, bis der Fehler 4066 auftritt. Habe ich es richtig verstanden?
Fast. Hier ist eine fertige Funktion:
Fügen Sie es in OnTick() ein, und wenn es true zurückgibt, kann auf den eTF-Zeitrahmen zugegriffen werden, die Daten sind gültig.Wenn ein Fehler auftritt, werden die alten Daten wiederhergestellt, großartig. Dies ist einer der Gründe, warum Broker MT4 bevorzugen und nicht auf MT5 umsteigen)).
D.h. fragen Sie bei jedem Tick oder Sleep nach dem richtigen Zeitrahmen, bis der Fehler 4066 auftritt. Habe ich es richtig verstanden?
Natürlich ist es besser, sleep nur in OnInit zu verwenden, und es ist nur in Indikatoren notwendig. In anderen Fällen ist OnTick, wie Igor oben erwähnt hat, ausreichend.
Je nach Aufgabe können Sie sich zur besten Option manövrieren. Normalerweise wird bei der Überprüfung, ob es einen neuen Balken gibt, bereits bei jedem Tick für alle verwendeten Zeitrahmen auf iTime zugegriffen, was ausreicht, um sie auf dem neuesten Stand zu halten.
s.w. Und wenn Sie die Funktion von Igor nicht bei jedem Tick, sondern nur unter bestimmten Bedingungen verwenden, kommt es ebenfalls zu einer Verzögerung.sleep wird natürlich besser nur in OnInit verwendet und wird nur in den Indikatoren benötigt. In anderen Fällen reicht es aus, OnTick zu verwenden, wie Igor oben erwähnt hat.
Je nach Aufgabe können Sie sich zur besten Option manövrieren. Wenn wir prüfen, ob es einen neuen Balken gibt, greifen wir normalerweise bei jedem Tick für alle verwendeten Zeitrahmen auf iTime zu, was ausreicht, um sie auf dem neuesten Stand zu halten.
s.e. Und wenn Igors Funktion nicht bei jedem Tick, sondern nur unter bestimmten Bedingungen verwendet wird, ist sie ebenfalls nicht synchron.Schlaf funktioniert nicht in Indikatoren
Fast. Hier ist eine vorgefertigte Funktion:
Fügen Sie es in OnTick() ein und wenn es true zurückgibt, können Sie auf den eTF-Zeitrahmen zugreifen, die Daten sind gültig.Es ist genial einfach. Ich danke Ihnen. Warum beschreiben die Entwickler dies nicht im Handbuch zu den iClose-Funktionen usw.oder korrigieren die Logik der MT4-Kursaktualisierungen, um keine Verschwörungstheorien aufkommen zu lassen.
Wenn ein Fehler auftritt, werden die alten Daten wiederhergestellt, großartig. Dies ist einer der Gründe, warum Broker MT4 bevorzugen und nicht auf MT5 umsteigen)).
D.h. fragen Sie bei jedem Tick oder Sleep nach dem richtigen Zeitrahmen, bis der Fehler 4066 auftritt. Habe ich es richtig verstanden?
Im MT5 ist das viel schwieriger.
In F4 genügt es, alle 2 Minuten iTime von allen verwendeten TFs abzufragen, und alle Daten sind aktuell.
Alles ist genial einfach. Ich danke Ihnen. Warum beschreiben die Entwickler dies nicht im Handbuch zu den iClose-Funktionen usw.oder korrigieren die Logik der MT4-Kursaktualisierungen, um keine Verschwörungstheorien aufkommen zu lassen.
Denn fast alle EAs prüfen bei jedem Tick auf die richtigen Bedingungen und aktualisieren sich von selbst.
Schlaf funktioniert nicht in Indikatoren
Es funktioniert, wenn man es wirklich braucht :)
Im MT5 ist es viel komplizierter.
In 4 reicht es aus, alle 2 Minuten iTime von allen verwendeten TFs abzufragen, und alle Daten sind aktuell.
Genau