1) "Warum wird hier der Wert 0 zurückgegeben?"
Wenn:
BarsCalculated(ma_handle)<rates_total
wurde nicht alles korrekt berechnet, zB. weil noch nicht alle Daten da sind (Stichwort threadrace), und da Indikatoren kein Sleep(..) kennen, ist das die einzige Möglichkeit etwas zu warten!
2) "In welchem Fall ist es möglich, dass prev_calculated größer ist, als rates_total?"
Was ist wenn auf Seiten des Servers etwas passiert und die Werte neu gesetzt werden?
3) "Warum wird to_copy hier noch einmal inkrementiert"
Ich denke das ist das leidige Problem mit der Null: Wenn prev_calculated == als rates_total dann ist to_copy == 0, dann würde nix kopiert werden
Vielen Dank für die Antwort!
Was mir selbst noch zu 3) eingefallen ist:
Es kann ja sein, dass ein neuer Tick stattgefunden hat, ohne das eine neue Bar angebrochen ist.
Für diesen Fall muss natürlich der aktuelle Wert der aktuellsten Bar neu kopiert werden, was
durch das Inkrementieren von to_copy erreicht wird (genau die Sache mit der Null eben).
- 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.
Guten Tag,
in der Dokumentation zur Funktion CopyBuffer (Link: https://www.mql5.com/de/docs/series/copybuffer) wurde unten ein Codebeispiel
eingefügt, welches das Kopieren eines Buffers veranschaulichen soll. Ich habe ein paar Fragen zu dem Teil, der sich in der OnCalculate Funktion
abspielt und wäre für jede Antwort mehr als dankbar.
Zunächst wird im Beispiel folgende Abfrage durchgeführt:
Nun meine erste Frage:
Warum wird hier der Wert 0 zurückgegeben? Aus meiner Sicht wäre es doch sinnvoller, den Wert von prev_calculated zurückzugeben, damit die
bisher berechneten Bars nicht doppelt berechnet werden, oder? Bei 0 müsste dann ja im nächsten Durchlauf alles neu berechnet werden.
Meine nächsten beiden Fragen beziehen sich auf das folgende Fragment:
In welchem Fall ist es möglich, dass prev_calculated größer ist, als rates_total? Muss dieser Fall überhaupt abgefangen werden?
Was verbirgt sich hinter "last value is always copied"? Warum wird to_copy hier noch einmal inkrementiert? Beinhaltet to_copy zu diesem Zeitpunkt nicht
schon die Anzahl an Bars, die berechnet werden müssen?
Ich bedanke mich jetzt schon für eure Zeit, diesen Post zu lesen und würde mich über jede Antwort freuen!
Viele Grüße
Chris