Ja, abgesehen von der Länge des Codes wären Hunderte von Indikatorpuffern eine schreckliche Verschwendung von Speicherplatz. Meine Variante verwendet ein Array mit der Dimension: Anzahl der Balken auf dem Bildschirm + maximale Periode.
Ein ultraschneller Indikator mit Hunderten von gleitenden Durchschnitten, implementiert auf Canvas.
100 MA-Zeilen (Periodenschritt 10) - Zeit der Berechnung und Anzeige auf dem Bildschirm - 4-7 Millisekunden
1000 MA-Zeilen (Periodenschritt 1) - Zeit für Berechnung und Anzeige - 20-30 Millisekunden.
Ich habe den Code nicht allzu sehr getestet. Es kann Fehler geben. Nur für einen Pixel dicken Balken implementiert (er wird zu diesem Maßstab gezwungen). Auch die Bildwiederholfrequenz ist nicht optimiert. Alle Zeilen werden berechnet und bei jedem Tick vollständig ausgegeben.
Wie verstanden ist der Durchschnitt einfach? Jetzt würde das gleiche für exponentielle tun.
Woher wissen Sie, dass der Durchschnitt einfach ist? Würden Sie das auch für einen Exponentialwert tun?
Dies ist nur ein Demo-Beispiel. Alle Arten von MA können implementiert werden. Alles, was Sie brauchen, ist Ihr Wunsch und Ihr Bedürfnis. Der Code wird mit Expotential etwas komplexer werden. Ich schlage vor, Sie versuchen es einmal.
Es gibt eine Einschränkung. Es können bis zu 512 Anzeigepuffer erstellt werden >>>https://www.mql5.com/ru/docs/indicators
Ein ultraschneller Indikator mit Hunderten von gleitenden Durchschnitten, implementiert auf Canvas.
100 MA-Zeilen (Periodenschritt 10) - Zeit der Berechnung und Anzeige auf dem Bildschirm - 4-7 Millisekunden
1000 MA-Zeilen (Periodenschritt 1) - Zeit für Berechnung und Anzeige - 20-30 Millisekunden.
Ich habe den Code nicht allzu sehr getestet. Es kann Fehler geben. Nur für einen Pixel dicken Balken implementiert (er wird zu diesem Maßstab gezwungen). Auch die Bildwiederholfrequenz ist nicht optimiert. Alle Zeilen werden berechnet und bei jedem Tick vollständig ausgegeben.
Wie verstanden ist der Durchschnitt einfach? Jetzt würde das gleiche für exponentielle tun.
Woher wissen Sie, dass der Durchschnitt einfach ist? Würden Sie das auch für einen Exponentialwert tun?
Zur Veranschaulichung der Geschwindigkeit...
Ändern von zwei Parametern über den Mauszeiger
X - Änderungen des maximalen MA-Zeitraums
Y - Schritt des MA-Periodenwechsels
Zur Veranschaulichung der Geschwindigkeit...
Ändern von zwei Parametern über den Mauszeiger
X - Änderungen des maximalen MA-Zeitraums
Y - Schrittweite der MA-Periode
Nett, aber der Compiler stürzt ab
Es ist schön, aber der Compiler kämpft
Die Bibliothek muss natürlich installiert werden. Es gibt einen Link zu dieser Bibliothek im Code.
Ich danke Ihnen! Es klappt alles!
Wie kann ich den Indikator neu zeichnen/verschieben, wenn das Diagramm neu gezeichnet/verschoben wird?
Ich danke Ihnen! Es klappt alles!
Wie bringe ich den Indikator dazu, sich neu zu zeichnen/zu verschieben, wenn das Diagramm neu gezeichnet/verschoben wird?
So funktioniert das Umzeichnen.
Meiner funktioniert nur, wenn sich die Maus bewegt.
Meine funktioniert nur, wenn ich die Maus bewege.
Ja, da war ein kleiner Fehler. Es wurde korrigiert.
Vielen Dank dafür.