Fehler, Irrtümer, Fragen - Seite 3029
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
sollte dies in Indikatoren nicht korrekt funktionieren:
Wenn ich mich nicht irre, gibt es in der Hilfe eine Aufschlüsselung des Skripts für das Paging von Daten für alle TFs, und es sollte eine Warnung geben, dass historische Daten nicht auf diese Weise vom Indikator angefordert werden können, da der Indikator asynchron arbeitet
und es wird empfohlen, BarsCalculated() einmal zu verwenden, nachdem Sie den Handle gebunden haben
UPD: Skript für History Paging und Erklärung, warum es in Indikatoren nicht funktioniert:https://www.mql5.com/ru/docs/series/timeseries_access
In diesem Artikel wird nur darauf hingewiesen, dass es unerwünscht ist, Daten von Zeitreihen (oder SeriesInfoInteger in einer Schleife) in einem indica
"Erinnern Sie sich daran, dass es höchst unerwünscht ist, eine Anfrage zur Aktualisierung einer Zeitreihe mit demselben Zeitraum wie derIndikator zu senden, der die Aktualisierung aufruft. Die Unerwünschtheit der Anfrage, die dieselbe Symbolperiode wie der Indikator verwendet, ist auf die Tatsache zurückzuführen, dass die Aktualisierung der historischen Daten in demselben Thread erfolgt, in dem auch der Indikator arbeitet. Daher besteht eine hohe Wahrscheinlichkeit eines Keils."
Wenn wir einfach SeriesInfoInteger abfragen und im Falle von false OnCalculate beenden, wie kann dann der Keil entstehen?
Frage an alle:
sagt die Hilfe auf https://www.mql5.com/ru/docs/series/timeseries_access:
"Beim Aufruf von Funktionen, die beliebige Daten aus Zeitreihen kopieren, sollten Sie darauf achten, dass der Startparameter (Nummer des Balkens, ab dem mit dem Kopieren der Preisdaten begonnen wird) immer innerhalb der verfügbaren Terminal-Historie liegen muss. Wenn wir nur 100 Balken haben, macht es keinen Sinn, 300 Balken zu kopieren, beginnend mit dem Balken mit dem Index 500. Diese Anfrage wird als ungültig betrachtet und nicht bearbeitet, d.h. es wird keine Historie vom Handelsserver geladen.
Dass CopyTime -1 ausgibt, ist klar, aber - wird es den Prozess selbst initiieren, um eine Zeitreihe / Paging von den Server-Balken bis zum 800sten (500 + 300) zu erstellen oder nicht?
Bitte beraten Sie mich.
1. Dieser Artikel sagt nur, dass es nicht wünschenswert ist, Daten aus Zeitreihen (oder SeriesInfoInteger in einer Schleife) in indica
"Erinnern Sie sich daran, dass das Senden einer Anfrage zur Aktualisierung einer Zeitreihe mit demselben Zeitraum wie derIndikator, der die Aktualisierung verursacht, höchst unerwünscht ist. Die Unerwünschtheit der Anforderung von Daten der gleichen Symbolperiode, wie sie der Indikator hat, da die Aktualisierung der historischen Daten im gleichen Thread durchgeführt wird, in dem der Indikator arbeitet. Daher besteht eine hohe Wahrscheinlichkeit eines Keils."
2. Wenn Sie einfach die SeriesInfoInteger anfordern und die OnCalculate im Fall von false lassen, wie wird der Keil auftreten?
1. Ja, denn Sie können den Thread des Indikators nicht verlangsamen, da die Abfrage des Synchronisationsstatus dazu führt, dass der Verlauf ausgetauscht wird, und Sie können nicht warten.
2. Richtig. Wenn die Daten nicht bereit sind, wird der oncalc einfach verlassen und das Synchronisationsterminal wird gestartet, aber der Fluss des Indikators wird nicht unterbrochen. Das nächste oncalc wird erst dann vollständig und ungebremst ausgeführt, wenn die Daten bereit sind und der angeforderte Indikator vollständig gezählt ist. Der oben hinzugefügte Ausdruck zeigt, dass der angeforderte Indikator nicht immer bereit ist, aber wir können zulassen, dass ein neuer Balken nur einmal verarbeitet wird, nicht bei jedem Tick für die schnellste Berechnung aller Indikatoren.
Ich danke Ihnen.
Siehe auch meine Frage:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528
Andrey Dik:
siehe den obigen Code,
Reparieren Sie Ihren Code, fügen Sie einen Ausdruck hinzu
und wenn du deine Kakerlaken siehst, rollst du deinen Monitor zusammen und schiebst ihn... du weißt schon wohin.
Ich danke Ihnen.
siehe auch meine Frage:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528
Ich bin mir nicht 100%ig sicher (muss ich überprüfen), aber sobald Sie sicherstellen, dass das angeforderte Datum frischer ist als das allererste in der Historie auf dem Server, können Sie die Daten anfordern und die Historie wird ausgetauscht.
Ich bin mir nicht 100%ig sicher (muss ich überprüfen), aber wenn Sie sicherstellen, dass das angeforderte Datum frischer ist als das allererste Datum in der Historie auf dem Server, können Sie die Daten anfordern und die Historie wird ausgetauscht.
Danke,
Ich habe nach meinem anderen Beitrag gefragt, hier noch einmal der Link: https: //www.mql5.com/ru/forum/1111/page3028#comment_22557528
Korrigieren Sie Ihren Code, fügen Sie einen Ausdruck hinzu
und wenn du deine Kakerlaken siehst, rollst du deinen Monitor zusammen und schiebst ihn... du weißt schon wohin.
Du beweist, dass ich Recht habe, Genosse.
Ich danke Ihnen,
Ich habe nach meinem anderen Beitrag gefragt, hier noch einmal der Link: https: //www.mql5.com/ru/forum/1111/page3028#comment_22557528
Wir geben 0 zurück und sagen damit, dass wir noch nichts berechnet haben und der prev kalk beim nächsten Takt nicht um 1 erhöht wird.
d.h. wir bleiben an dem Balken, an dem wir mit der Abfrage der Daten aus dem olderf begonnen haben, bis wir zurückkehren (rates_total)
Du beweist, dass ich Recht habe, Genosse.
1. Vielen Dank an alle - ich habe mein Wissen über Indikatoren ein wenig erweitert ))))
2) Andrew, wenn jemand deine Ideen nicht versteht (mich eingeschlossen), kann das nur eines bedeuten - du hast das Bild nicht richtig gezeichnet! Genauer gesagt - du zeichnest sie so, dass viele Leute sie nicht verstehen ...