- Unterstützungs-/Widerstandsniveaus. Wie kann ich sie identifizieren?
- Wann ist es sinnvoll, einen Teil des Robotercodes in einem Indikator zu behalten?
- Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6.
Das Problem ist nämlich, dass der Indikator , der die Linie zeichnet, wenn er die TF ändert, bei der die Historie noch nicht geladen ist, die Daten berechnet, dann werden die Balken zum Diagramm hinzugefügt, und er berechnet erneut die Daten, bzw. die vorherigen werden auch ausgelassen.
Es liegt also ein Fehler in der Logik des Indikators vor. Beim Laden der Historie ist die ideale Option des Indikators, seinen Zustand zum Zeitpunkt des letzten Balkens, der sich in der Historie nicht verändert hat, zu berechnen und die Daten auf dem aktualisierten Teil der Historie neu zu berechnen.
In der Realität ist diese Option nicht immer möglich, da die Rückgabe der Umgebung des Indikators bei einem bestimmten Balken bedeuten würde, dass die Berechnung vom Anfang der Historie an durchgeführt werden müsste. Daher wird bei komplexen Algorithmen des Indikators eine vollständige Neuberechnung der Historie durchgeführt, wenn auch nur ein Balken geladen wird (nicht zu verwechseln mit der Eröffnung eines neuen Balkens).
Eigentlich ist das Problem, dass der Indikator , der die Linie an der Änderung der TF, auf die die Geschichte noch nicht geladen ist, berechnet die Daten, dann die Balken in das Diagramm hinzugefügt werden, und es wieder berechnet die Daten, bzw., die vorherigen sind auch links + Überspringen.
Im Indikator sollte in OnCalculate() eine Überprüfung vorgenommen werden:
if(prev_calculated==0) // значит история изменилась или это первый проход
Der Indikator in OnCalculate() muss prüfen, ob:
Ich danke Ihnen.
Ich war nur durch die Tatsache verwirrt, dass die Warnmeldungen mir anzeigten, dass die Geschichte in Stücken geladen wurde.
Ja, das ist richtig.
Es liegt also ein Fehler in der Logik des Indikators vor. Beim Laden der Historie ist die ideale Option des Indikators, seinen Zustand zum Zeitpunkt des letzten Balkens, der sich in der Historie nicht verändert hat, zu berechnen und die Daten auf dem aktualisierten Teil der Historie neu zu berechnen.
In der Realität ist diese Option nicht immer möglich, da die Rückgabe der Umgebung des Indikators bei einem bestimmten Balken bedeuten würde, dass die Berechnung vom Beginn der Historie an durchgeführt werden müsste. Daher wird bei komplexen Algorithmen des Indikators eine vollständige Neuberechnung der Historie durchgeführt, wenn auch nur ein Balken geladen wird (nicht zu verwechseln mit der Eröffnung eines neuen Balkens).
Die einzige praktikable Lösung ist also nur?
for(int i=Raten_Gesamt-vorher_berechnet;i>=0;i--)
Die einzige Lösung, die funktioniert, ist also?
for(int i=Raten_Gesamt-vorher_berechnet;i>=0;i--)
Und wenn ich die Neuberechnung nicht nur für den aktuellen Balken benötige (z. B. 4)?
for(int i=rates_total-prev_calculated+4;i>=0;i--) { if(i>Bars) i=Bars;
Ja, es funktioniert.
Wenn Takte in Abschnitten geladen werden, werden sie in Abschnitten neu berechnet.
Das richtige Stück ist nur das letzte, das weiter nach links geladen wird, haha.
Es ist an der Zeit zu lernen, wie man Indikatoren schreibt
Unterrichte mich.
Und ich sage, dass die Entwickler bei den ersten Berechnungen des Indikators Anpassungen vornehmen sollten.
Zeit zu lernen, wie man Indikatoren schreibt
Sie wollen einen Trick? Raten Sie mal, was Alert zurückgegeben hat?
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(prev_calculated!=0) Alert(prev_calculated," M:",Period()); return(rates_total); }
Sie wollen einen Trick? Raten Sie mal, was Alert zurückgegeben hat?
Ich verwende keine Warnmeldungen in Indikatoren. Sehen Sie eine vollständige Neuberechnung vor, wenn eine Historie heruntergeladen wurde. Es ist leicht zu kontrollieren.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.