![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Die Linienkoeffizienten a und b werden in diesen Zeilen berechnet.
A = (SummeXY - N3*SummeY)*N4;
B = (N1*SummeY - SummeXY)*N2;
Zur Veranschaulichung füge ich die MovingLR_2-Version bei, die nur die aktuelle lineare Regression zeichnet. Vor allem, weil es in der vorherigen einen Fehler bei der Berechnung von N4 gab :)
MovingLR_2 liefert eine rein lineare Regression, und es ist ziemlich einfach, sich davon zu überzeugen. In at_LR0 gibt es eine Ungenauigkeit beim Wechsel von der Periode in Stunden zur Periode in Balken. Wenn Sie Close in at_LR0 auf (High+Low)/2 ändern und eine Periode von 1 nehmen, und die Periode in MovingLR_2 auf 61 statt 60 ändern und im Ein-Minuten-Chart anzeigen, sind die Ergebnisse dieselben.
Nun, dann ist MovingLR_2 ein guter Algorithmus, man muss nur das Layout des Codes anpassen und schon ist alles in Ordnung!
In at_LR0 wird die Verschiebung um einen Takt vorgenommen, um die lineare Regression aus dem MT4 Standard-Toolkit anzupassen. Vielleicht hätte das nicht getan werden müssen...
2 Zigan:
Für die lineare Regression lautet die Formel: LRMA = 3*LWMA - 2*MA
Für die quadratische Regression:
Quadratische Regression MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )
Dabei ist N die Periode der Durchschnittswerte,
QWMA( i; N ) = 6/( N*(N+1)(2*N+1) ) * sum( Close[i] * (N-i)^2; i = 0...N-1 ) (die Maschine mit den quadratischen Gewichten).
für kubisch: ups, ich kriege es immer noch nicht aus Trading Solutions raus, meine Formel ist dort zu wild.
2 Candid: Sie sind wirklich paranoid, daran hätte ich nicht gedacht...
Ich habe verschiedene Formeln.
wo ist
eine kleine Anpassung des Codelayouts, und alles ist in Ordnung!
2 Yurixx:
Es scheint, dass der Unterschied in den RMS-Werten für kleine N nicht auf die RMS-Korrektur zurückzuführen ist, sondern auf die Wahl des Starts und der Richtung X. Denn wenn man sie ändert, beginnt meine frühere Formel auch, unterschiedliche Ergebnisse zu liefern, und sie ist ohne jegliche Vorbehalte genau.
2 Yurixx:
Es sieht so aus, als ob der Unterschied in den RMS-Werten für kleine N nicht auf die RMS-Korrektur zurückzuführen ist, sondern auf die Wahl des Startpunkts und der Richtung X. Denn wenn man sie ändert, beginnt meine alte Formel auch andere Ergebnisse zu liefern, während sie ohne Vorbehalte genau ist.
Sie haben sicherlich Recht, dass die richtige Wahl des Koordinatensystems eine leistungsfähige Technik ist, um die Berechnungen und das Aussehen der endgültigen Formeln zu vereinfachen. Ich habe es nicht für die lineare Regression verwendet, es hat sich alles gut genug entwickelt. Aber bei der parabolischen Regression sind die endgültigen Ausdrücke bei einer bestimmten Wahl des Ursprungs doppelt so einfach, während die Wirksamkeit des Algorithmus um eine Größenordnung zunimmt. Darüber hinaus wird das Problem der Begrenzung der Genauigkeit der Berechnungen vollständig beseitigt.
In einem Punkt kann ich Ihnen jedoch nicht zustimmen. Die RMS-Werte wie auch die tatsächlichen Regressionswerte können nicht von der Wahl des Ursprungs der X-Achse abhängen. Vielleicht ist es nicht die Formel selbst, die zu unterschiedlichen Ergebnissen führt, sondern das Problem der Berechnungsgenauigkeit selbst wird deutlich. Da nur 15 signifikante Ziffern von double (geschweige denn int) gespeichert werden, kommt es bei Berechnungen schnell zu Fehlern. Dies gilt insbesondere, wenn X und Y unterschiedliche Größenordnungen haben. Ein Beispiel: X ist eine Balkenanzahl in der Größenordnung von Hunderttausenden, Y ist ein Preis in der Größenordnung von 1 und die Preisänderung liegt in der Größenordnung von 0,0001.
PS
Ich wollte verstehen, was diese Formel "schmackhaft" macht. Das ist natürlich viel einfacher - in einer Zeile. Allerdings verstehe ich nicht, warum Sie durch (N-2) und nicht durch (N-1) dividieren. Ich sollte noch anmerken, dass man für eine maximale Beschleunigung eine andere Formel verwenden müsste. Wenn Sie die Wahl des Ursprungs X in Bezug auf den aktuellen Kurswert festlegen, ist es vorteilhafter, Formeln ohne Summe(X*Y) zu verwenden. Dann müssen Sie nicht bei jedem Takt die Faltung berechnen. Die Aktualisierung von Summe(Y*Y) oder Summe(X*X) bei jedem Balken ist jedoch ein Operator.
Wenn Sie den aktuellen Wert der Koeffizienten A und B in einer linearen Regression kennen, können Sie den RMS berechnen
Hier sind die Formeln
Koeffizient A
Koeffizient B
Wenn Sie den aktuellen Wert der Koeffizienten A und B in einer linearen Regression kennen, können Sie den RMS berechnen
P.S. Mir ist gerade eingefallen, dass QWMA quadratisch durch X ist und ich einen Begriff brauche, der quadratisch durch Y ist. QWMA wird also nicht helfen.
Wenn Sie den aktuellen Wert der Koeffizienten A und B in einer linearen Regression kennen, können Sie den RMS berechnen
QWMA wird wahrscheinlich auch nicht ausreichen, da es Y nicht quadriert und daher die Varianz von Y nicht bestimmt.
In einem Punkt kann ich Ihnen jedoch nicht zustimmen. Die RMS-Werte sowie die Regressionswerte selbst können nicht von der Wahl des Ausgangspunktes für die X-Achse abhängen. Vielleicht ist es nicht die Formel selbst, die zu unterschiedlichen Ergebnissen führt, sondern genau dieses Problem der Rechengenauigkeit.
Allerdings verstehe ich nicht, warum Sie durch (N-2) und nicht durch (N-1) dividieren.
P.S. Für Summe(Y*Y) - habe ich auch drei Operationen, für Summe(X*X) - keine.
Quadratische Regression MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) ) - LWMA * ( 12 - 15/( N + 2 ) )
QWMA( i; N ) = 6/( N*(N+1)(2*N+1) ) * sum( Close[i] * (N-i)^2; i = 0...N-1 ) (der Assistent für die quadratische Gewichtung).
Ich habe andere Formeln.
wobei