MT4 iMAOnArray und iBandsOnArray Auswirkungen der Anzahl der Elemente auf die Berechnungen - Seite 3
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
Nein, Vladimir. Das ist ein bisschen falsch.
In diesem Fall sollten Sie ArraySetAsSeries(array, false); auf ein Array mit dreihundert Elementen anwenden, bei dem iMAOnArray() berücksichtigt wird. Aber wir sollten besser CopyOpen() anstelle der Füllschleife des Arrays verwenden.
Nach meinem Verständnis ist es bei dieser Variante besser, wenn
Nein, Vladimir. Das ist ein bisschen falsch.
In diesem Fall sollten Sie ArraySetAsSeries(array, false); auf ein Array mit dreihundert Elementen anwenden, bei dem iMAOnArray() berücksichtigt wird. Aber wir sollten besser CopyOpen() anstelle der Füllschleife des Arrays verwenden.
Nach meinem Verständnis ist es bei dieser Variante besser, wenn
Das ist die Frage. Wenn ich nicht das gesamte Array, sondern nur die letzten N Elemente berechnen muss.
Ich verstehe die Logik der Berechnung dieser Funktionen bei der Begrenzung nicht ganz. Ich habe eine Zeitreihe Array (einer der Indikatorpuffer), wenn ich die Anzahl der Elemente gleich 0, keine Fragen, alles wird gezählt und berechnet, aber wenn ich die Anzahl der Elemente in der Berechnung durch die gleichen Verschiebungen beteiligt verringern, bekomme ich nur die primären. Einfach gesagt gibt es ein Array 5000 Elemente (Balken auf dem Diagramm), um Zeit zu sparen, muss ich nur die letzten 300 berechnen, aber wenn ich den Wert 300 im zweiten Parameter angegeben habe, habe ich primär 5000-4700 Elemente, aber auf Offset 300-0, und weitere Werte bei einem Aufruf ändern sich nicht. Welchen Sinn hat die Verwendung dieses Parameters?
Weiß der Teufel. Vergessen Sie es einfach. Wenn Sie die Berechnungen beschleun igen müssen, reduzieren Sie die Anzahl der zu berechnenden Elemente in Ihrer Schleife.
Es gibt zwei Möglichkeiten: Entweder ist es unmöglich, oder man braucht eine geheime Kombination von Zeitreihen, nicht Zeitreihen, Berechnungsrichtungen.
Weiß der Teufel. Vergessen Sie es einfach. Wenn Sie die Berechnungen beschleunigen wollen, reduzieren Sie die Anzahl der zu berechnenden Elemente in Ihrem Zyklus.
Entweder ist es unmöglich oder man braucht eine geheime Kombination von Zeitreihen, nicht Zeitreihen, Berechnungsrichtung.
Ja, wie ich schon etwas früher geschrieben habe, gibt es nur eine Möglichkeit - eigene Analogien zu den obigen Funktionen zu verwenden, mit denen man mindestens ein Element berechnen kann.
Das Paradoxe an der Situation ist, dass, wenn wir eine ähnliche Vorlage, die Überlagerung der Durchschnitt oder Bollinger Bars auf jeden Indikator (Preis-Linie), gibt es keine solche verlangsamt die anfängliche Berechnung aller Geschichte Bars, wie bei der Verwendung dieser Funktionen in den Code, beim Neustart des Terminals oder Umschalten der TF, so ist es unklar, was dauert so lange, um in diesen Funktionen berechnet werden.
Weiß der Teufel. Vergessen Sie es einfach. Wenn Sie die Berechnungen beschleunigen wollen, reduzieren Sie die Anzahl der zu berechnenden Elemente in Ihrem Zyklus.
Es gibt zwei Möglichkeiten: Entweder ist es unmöglich, oder man braucht eine geheime Kombination von Zeitreihen, nicht Zeitreihen, Berechnungsrichtungen.
Auch ich habe eine solche Konstruktion verwendet.
Übrigensist "MovingAverages.mqh" doppelt so schnell wie"iMAOnArray", sogar die alte Version.
https://www.mql5.com/ru/forum/79988
Ja, wie ich bereits geschrieben habe, gibt es nur eine Möglichkeit - unsere eigenen Analoga der genannten Funktionen zu verwenden, bei denen es möglich ist, mindestens ein Element zu berechnen.
Das Paradoxe an der Situation ist, dass, wenn wir eine ähnliche Vorlage machen, indem wir die MA und Bollinger-Bänder an einen beliebigen Indikator (Preislinie) anhängen, wir nicht eine solche Verlangsamung der anfänglichen Berechnung aller Verlaufsbalken sehen, wie bei der Verwendung dieser Funktionen im Code, beim Neustart des Terminals oder beim Umschalten der TF, so dass es unklar ist, was so lange dauert, in diesen Funktionen zu berechnen.
Wird er auch bei Verwendung von iMAOnArray verlangsamt? So etwas sollte es nicht geben. Wie Sie waren, gab es Verzögerungen von StdOnArray (oder BandsOnArray, ich erinnere mich nicht) die Entwickler nicht zugeben, die Existenz des Fehlers für eine lange Zeit. Dann war das Problem plötzlich behoben und es funktionierte schnell. Wer weiß, vielleicht ist der Fehler ja zurückgekehrt. Wenn iMAOnArray() ebenfalls spürbare Verlangsamungen verursacht, handelt es sich um einen Fehler. Es scheint, dass es vor einigen Monaten Gespräche darüber gab... Aber anscheinend gibt es sie noch.
Die Verlangsamung auch bei Verwendung von iMAOnArray? So sollte es nicht sein. Wie Sie waren zu einer Zeit, gab es eine Verlangsamung von StdOnArray, die Entwickler nicht bestätigen, den Fehler für eine lange Zeit. Dann haben sie es plötzlich repariert und es funktionierte schnell. Wer weiß, vielleicht ist der Fehler ja zurückgekehrt. Wenn iMAOnArray() auch spürbare Verlangsamungen verursacht, handelt es sich um einen Fehler. Es scheint, dass es vor einigen Monaten Gespräche darüber gab... Aber anscheinend gibt es sie noch.
Es ist schwer zu beurteilen, ob es zu langsam ist oder nicht, weil alles von der Länge des Diagramms (Anzahl der Balken) abhängt. Das Problem ist, dass man für die Optimierung nur einen kleinen Teil berechnen muss und man die Länge der Berechnung nicht durch die tatsächliche Berechnung begrenzen kann.
Führen Sie die Berechnung mitMovingAverages.mqh durch und sie wird sehr schnell berechnet.
Zeigen Sie mir also die "funktionierende" Variante des Codes, der ursprüngliche Code ist hier, den Sie versuchen, auf 12 angezeigte Elemente anstelle der von mir geforderten dreihundert zu reduzieren, und sollte mit 3 Indikatorpuffern mit den angegebenen Daten enden, so dass mindestens 300 Elemente im Keller angezeigt wurden, Und dann, wenn ein neuer Balken kommt, bzw. 301 und dann wird der Wert gezeichnet, aber vergessen Sie nicht, dass in diesem Fall, wenn Sie 0 als Berechnungsgrenze verwenden, nur der neue Balken neu berechnet wird, und die Art des Durchschnitts (Glättung) für den zweiten Puffer ist nicht unbedingt SMA, sondern kann jede der 4 verfügbaren sein.
Hier ist es.