Dialog des Autors. Alexander Smirnow. - Seite 41

 
lna01:
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...

 
Mathemat:

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

 
Hmm, für RMS ist das Ergebnis sogar noch schmackhafter als das von Yurixx:

RMS^2 = (Summe(Y*Y) - A*Summe(X*Y) - B*Summe(Y))/(N-2)

Ähnlich wie bei Yurixx ist die Einfachheit des Ausdrucks auf die Wahl des Ursprungs und der Richtung der X-Achse zurückzuführen. Wenn niemand Fehler findet, ist das das Ende der Annäherung an den Algorithmus. Damit berechnete A und RMS nicht verschwinden, habe ich die LR-Linienzeichnung im Indikator gelassen und den RMS-Kanal hinzugefügt :)

ANG3110:

eine kleine Anpassung des Codelayouts, und alles ist in Ordnung!

Ich glaube nicht, dass ich genau diesen Indikator verwenden werde, ich werde einen Algorithmus verwenden.

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.
Dateien:
 
lna01:

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

 
Prival:

Wenn Sie den aktuellen Wert der Koeffizienten A und B in einer linearen Regression kennen, können Sie den RMS berechnen

Mit einem quadratischen Term wie QWMA ist dies wahrscheinlich möglich. Aber der Algorithmus über Dummies ist von Natur aus nicht optimal. Es bestand die Möglichkeit, nativen Code für eingebaute Bindestriche zu verwenden, aber das scheint gescheitert zu sein.
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.
 
Prival:

Wenn Sie den aktuellen Wert der Koeffizienten A und B in einer linearen Regression kennen, können Sie den RMS berechnen


Ich glaube nicht, dass Sie das können. Die Regressionsgerade wird durch zwei Konstanten, A und B, definiert. Wenn A und B gleich sind, kann die Abweichung von dieser Geraden beliebig sein. Zur Berechnung des Effektivwerts benötigen Sie auch die Varianz von X und Y. Wahrscheinlich wird auch QWMA nicht ausreichen, da es keine Y-Quadrate enthält und daher die Varianz von Y nicht bestimmt.
 
Yurixx:
QWMA wird wahrscheinlich auch nicht ausreichen, da es Y nicht quadriert und daher die Varianz von Y nicht bestimmt.
Ja, ich hatte nur vergessen, dass QWMA überhaupt nicht Y-quadratisch ist. Als ich mich daran erinnerte, fügte ich ein Postskriptum hinzu.
 
Yurixx:

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.

Das ist genau das, was ich mit Berechnungsergebnissen meinte.

Allerdings verstehe ich nicht, warum Sie durch (N-2) und nicht durch (N-1) dividieren.

Denn die Regression hat einen zusätzlichen Freiheitsgrad. Yandex kann mit Details helfen, z.B. http://cmacfm.mazoo.net/archives/000936.html
Ich möchte noch anmerken, dass Sie, um eine maximale Beschleunigung zu erreichen, eine andere Formel hätten verwenden sollen. 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) für jeden Balken ist jedoch ein Operator.
Wir haben bereits Summe(X*Y) - ohne sie kann man weder A noch B berechnen. Sie wird immer wieder in drei Operationen berechnet. Schauen Sie sich_LR0 oder MovingLRv3 genauer an.

P.S. Für Summe(Y*Y) - habe ich auch drei Operationen, für Summe(X*X) - keine.
 
Prival:
Mathemat:

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

Genau die gleichen Formeln, danke, Prival. Nennen Sie mir ähnliche Beispiele in Bezug auf Mash-ups.
Grund der Beschwerde: