6. Grades Poly Hilfe! - Seite 2

 
gooly:

Hallo dennisj2,

sind Sie sicher, dass Sie Ihre Formel wirklich brauchen?

Vielleicht versuchen Sie zunächst, nach anderen Filtern wie Kalman, Ehlers, Gauss, Jurik (JMA), DEMA zu suchen. Die meisten von ihnen sind von Tiefpassfiltern (physikalischen) Frequenzfiltern abgeleitet und haben ihren Weg in den mt4-Code gefunden.

Vielleicht erfüllt ein JMA (es gibt viele Variationen) mit einer längeren Periode das, wonach Sie suchen?



Haben Sie irgendwelche Links, die ich recherchieren kann?

 
dennisj2:



SDC - Sie sind jetzt auf dem gleichen Stand wie ich - die lineare Regressionsformel, die ich gefunden habe, funktioniert - und es gibt zwei deutlich unterschiedliche Formeln, die ich gefunden habe, die identische Ergebnisse liefern. Diese Formeln sind großartig, wenn lineare Regression (eine gerade Trendlinie) das ist, was wir suchen.

Zunächst etwas Referenzmaterial:

Microsoft: http://office.microsoft.com/en-us/excel-help/linest-HP005209155.aspx

IntegralCalc: https://www.youtube.com/watch?v=1pawL_5QYxE&noredirect=1


Gegeben sei die lineare Regressionsgleichung y = mx + b:

Wobei y = Preis, (z.B. Close[x])

und x = Index (z. B. Bar[x])

und m = Steigung (der auf jedes (x,y)-Paar angewandte Koeffizient)

und b = Y-Achsenabschnitt (der Basiswert des Y-Achsenabschnitts, der auf jedes (x,y)-Paar angewendet wird)


Methode A: Von IntegralCalcMethode B: Von Microsoft (wobei x(overbar) und y(overbar) Mittelwerte sind)


Auch die Trendlinienformel der polynomialen Regression bis zum n-ten Grad ist relativ einfach anzuwenden:

Gegeben sei die Formel: y = m1*x1 + m2*x2 + m3*x3 + ... + b

Dabei haben die Variablen x, y, m und b die gleiche Definition wie in der linearen Gleichung beschrieben.

Es scheint, als hätte ich alles, was fehlt also noch?

Was fehlt, ist die Berechnung von m (Steigung) und b (Y-Achsenabschnitt) für eine polynomiale Regression; die lineare Gleichung zur Berechnung dieser Werte gilt nicht für eine polynomiale Regression. Nach dem, was ich gelernt habe, erfordert die polynomiale Regression eine Formel, die die kleinsten Quadrate auf der Grundlage eines Systems von Polynomgleichungen unter Verwendung einer Matrix berechnet. Sehen Sie sich die obigen Beispielgrafiken an. Im ersten Diagramm sind die Poly(6)-Linien absolut makellos - Ober- und Untergrenzen sind deutlich zu erkennen. Mit diesen Daten werde ich in der Lage sein, Trades länger zu halten, als ich es heute tue, und letztlich meine durchschnittlichen Pips pro Trade zu verdoppeln, möglicherweise sogar zu verdreifachen.

In der zweiten Grafik zeige ich die Ergebnisse der Poly(6)- und der i-regr-Methode, die eine Gauß-Matrix zur Lösung der Steigungskoeffizienten verwendet - und die natürlich aufgrund der erheblichen Latenzzeit der Methode ziemlich nutzlos ist. Andererseits ist ein einfacher gleitender Durchschnitt noch schlechter - der SMA ist viel zu empfindlich bei zwischenzeitlichen Marktkorrekturen, die eine Überreaktion meines EA verursachen könnten.

Ich bin bereit, jemanden dafür zu bezahlen, dass er einen echten polynomialen Regressionsindikator entwickelt - aber die Ergebnisse müssen unbedingt die Ergebnisse widerspiegeln, die Excel erzeugt. Die Funktion LINEST() ist eine Blackbox, in der viel Voodoo zur Berechnung der Koeffizienten verwendet wird. Ich muss dieses Voodoo ganz einfach verstehen.

Update: Ich habe eine Datei beigefügt, die die in Excel implementierte Methode zeigt.


Ich habe vor einiger Zeit eine lineare Regression kodiert - hier ist der Link zu meinem Code: Lineare Regression Ich garantiere nicht, dass sie zu 100 % korrekt ist. Ich glaube, ich habe ein Problem mit der Verwendung des Index Null x in den Berechnungen festgestellt, das ich einige Zeit später behoben habe.

Ich habe auch eine gleitende Version davon kodiert. Die gleitende Version erzeugt eine Parabel, die einem geglätteten gleitenden Durchschnitt ähnelt, weil sie bei jedem Balken nur die letzte Koordinate der linearen Regressionslinie zeichnet.

Ich habe versucht zu lernen, wie man ein Poly-Nominal 2. Ich dachte mir, wenn wir es mit einer quadratischen Linie schaffen, können wir das auch mit einer Linie 6.

Ich werde Ihre Links lesen und sehen, ob ich etwas lernen kann,

 
SDC:

Ich habe vor einiger Zeit eine lineare Regression kodiert, hier ist der Link zu meinem Code: Lineare Regression Ich garantiere nicht, dass sie zu 100% korrekt ist. Ich glaube, ich habe ein Problem mit der Verwendung des Null-X-Index in den Berechnungen gefunden, das ich einige Zeit später behoben habe.

Ich habe auch eine gleitende Version davon kodiert. Die gleitende Version erzeugt eine Parabel, die einem geglätteten gleitenden Durchschnitt ähnelt, weil sie bei jedem Balken nur die letzte Koordinate der linearen Regression zeichnet.

Ich habe versucht zu lernen, wie man ein Poly-Nominal 2. Ich dachte mir, wenn wir das mit einer quadratischen Regression können, können wir das auch mit einer 6.

Ich werde Ihre Links lesen und sehen, ob ich etwas lernen kann,


SDC: Ich stimme zu - eine Quadratische könnte nicht genug sein, aber ich neige dazu zu glauben, dass eine Kubische genug sein könnte, um auf höhere Grade zu erweitern.
 
dennisj2:


Haben Sie irgendwelche Links, die ich recherchieren kann?

Einfach googeln: mt4 Indikator

und dann einer der Namen..

Vielleicht fügen Sie (Tiefpass-)Filter hinzu.

Einige sind in der mt4-Code-Basis - einige nur nicht und wir sollten nicht posten externe Links.

 
SDC: Ich habe einen weiteren Link - könnte genau das sein, was wir brauchen
 
Denken Sie daran, dass Regression eine Kurvenanpassung ist, und wie bereits gesagt wurde, werden Regressionen neu gemalt. Ich bin mir nicht sicher, welchen Vorhersagewert eine reine Kurvenanpassung hat. Bei meinen eigenen Experimenten war ihr Vorhersagewert nicht sehr gut.
 
rocketman99:
Denken Sie nur daran, dass Regression Kurvenanpassung ist, und wie schon jemand gesagt hat, malen Regressionen neu. Ich bin mir nicht sicher, welchen Vorhersagewert die reine Kurvenanpassung hat. Bei meinen eigenen Experimenten war ihr Vorhersagewert nicht sehr gut.



Rocketman,

Ich stimme Ihnen teilweise zu, dass die Regressionsmodelle dazu neigen, historische Trends nachzubilden und nicht sehr zuverlässig sind. Dies ist eindeutig der Fall des i-regr-Indikators - ich habe diesen Indikator in den letzten Tagen live beobachtet, und ich kann ehrlich sagen, dass dieser Indikator aus drei Gründen keinen Wert bietet: 1) er reagiert überempfindlich auf kurzfristige Korrekturen, und 2) seine starke Latenz (mit dem e-regr EA), bis der Indikator den unteren Einstiegspunkt für Long-Positionen oder den oberen Einstiegspunkt für Short-Positionen markiert, hat sich der Markt schon weit über die Einstiegspunkte hinaus bewegt und ist in den meisten Fällen gegen den Markttrend gerichtet, und 3) allein aus der Beobachtung heraus, wenn der Markt nach oben ging, zeigte der Indikator nach unten und umgekehrt, so dass seine Verwendung als Trendindikator bestenfalls 50% zuverlässig ist.

Letzte Woche schwebte der USDJPY im Bereich 102,35-102,50, i-regr zeigte einen Markttrend nach unten an (er hatte sich nach unten gekrümmt und bewegte sich nach unten), e-regr gab eine Verkaufsempfehlung aus, dann wechselte der Indikator nur 5 Perioden später auf "long" und malte wieder so, als wäre er schon immer "long" gewesen, als der USDJPY auf 104,20 stieg)

Zur Untermauerung des Standpunkts, dass Indikatoren des Typs Re-Paint keinen Wert bieten und nicht zuverlässig sind - angesichts dessen, was ich in den verfügbaren MQL4-Bibliotheken gesehen habe, versichere ich Ihnen, dass ich die Frustration derjenigen verstehe, die mit diesen Indikatoren gearbeitet haben - angesichts dessen, was wir haben, funktioniert nichts. Abgesehen davon habe ich noch keinen zuverlässigen polynomialen Regressionsindikator gesehen, der bis zum 6. Grad berechnet. Ich versichere Ihnen auch, dass die Ergebnisse spektakulär sein werden, sobald wir eine zuverlässige polynomiale Regression haben.

 
dennisj2:



Raketenmann,

Ich stimme Ihnen teilweise zu, dass die Regressionsmodelle dazu neigen, historische Trends nachzubilden und nicht sehr zuverlässig sind. Dies ist eindeutig der Fall des i-regr-Indikators - ich habe diesen Indikator in den letzten Tagen live beobachtet und ich kann ehrlich sagen, dass dieser Indikator aus drei Gründen keinen Wert bietet: 1) er reagiert überempfindlich auf kurzfristige Korrekturen, und 2) seine starke Latenz (mit dem e-regr EA), bis der Indikator den unteren Einstiegspunkt für Long-Positionen oder den oberen Einstiegspunkt für Short-Positionen markiert, hat sich der Markt schon weit über die Einstiegspunkte hinaus bewegt und ist in den meisten Fällen gegen den Markttrend gerichtet, und 3) allein aus der Beobachtung heraus, wenn der Markt nach oben ging, zeigte der Indikator nach unten und umgekehrt, so dass seine Verwendung als Trendindikator bestenfalls 50% zuverlässig ist.

Letzte Woche schwebte der USDJPY im Bereich 102,35-102,50, i-regr zeigte einen Markttrend nach unten an (er hatte sich nach unten gekrümmt und bewegte sich nach unten), e-regr gab eine Verkaufsempfehlung aus, dann wechselte der Indikator nur 5 Perioden später auf "long" und malte wieder so, als wäre er schon immer "long" gewesen, als der USDJPY auf 104,20 stieg)

Zur Untermauerung des Standpunkts, dass Indikatoren des Typs Re-Paint keinen Wert bieten und nicht zuverlässig sind - angesichts dessen, was ich in den verfügbaren MQL4-Bibliotheken gesehen habe, versichere ich Ihnen, dass ich die Frustration derjenigen verstehe, die mit diesen Indikatoren gearbeitet haben - angesichts dessen, was wir haben, funktioniert nichts. Abgesehen davon habe ich noch keinen zuverlässigen polynomialen Regressionsindikator gesehen, der bis zum 6. Grad berechnet. Ich versichere Ihnen auch, dass die Ergebnisse spektakulär sein werden, sobald wir eine zuverlässige polynomiale Regression haben.




Ich bin kein Mathematiker, aber meine Erfahrungen mit jeder Form von Regression waren nicht sehr gut. Wie Sie bemerken, gibt es viele Möglichkeiten, Regressionen durchzuführen, die letztendlich zu einer besseren statistischen Kurvenanpassung führen können. Aber die Frage nach der Vorhersagekraft bleibt.

Wenn Sie sich wirklich intensiv mit dieser Materie befassen wollen, müssen Sie sich mit R beschäftigen und einige der verfügbaren fortgeschrittenen Regressionen ausprobieren (googeln Sie nach ARIMA, ARCH/GARCH usw.): http://talksonmarkets.files.wordpress.com/2012/09/time-series-analysis-with-arima-e28093-arch013.pdf

Ich habe Wochen damit verbracht und auch die Kointegration untersucht, aber mein Erfolg war gleich Null.

Ich glaube nicht, dass die MQL4-Codierung für diese fortgeschrittene statistische Analyse geeignet ist.

 

Nun, hmmm hmmm.....

I don't think MQL4 coding is up to the task for this advanced statistical analysis.

In MQL kann alles gemacht werden, das ist nicht der limitierende Faktor. Es sieht so aus, als würde die Portierung einer dieserQuellen ausreichen:
http://rosettacode.org/wiki/Polynomial_regression

Das Lösen einer P6 (Polynom 6. Grades) Regression ist das Lösen eines Systems von 6 Gleichungen mit 6 Variablen auf einer diskreten numerischen Funktion, was vielleicht nicht einfach, aber auch nicht unmöglich ist.

Ich kann später nachsehen, welche Methode genau in i_regr.mq4 verwendet wird.

meine Erfahrungen mit jeder Form der Regression waren nicht sehr gut

Ich muss zustimmen, das war der Punkt meines ersten Kommentars. Denn ... was tun wir hier? Wir passen einen Teil der Zufallskurve (die aktuelle PA (Price Action)) an P6 an, in diesem Fall. Und dann erwarten wir, dass der nächste Punkt der PA sich so verhält, als sei er eine Fortsetzung dieser Kurve?

OK, es scheint, dass Dennis diese Kurve als Transformationsfunktion der PA mit geringer Latenz verwendet, und das hat einen gewissen Sinn, aber wie gut kann das sein? Dies muss auf höheren TF wegen der Rauschfilterung durchgeführt werden, und ich glaube nicht, dass es möglich sein wird, die Verluste zu vermeiden, wenn PA in den Bereich bekommt, die das Problem mit dieser Art von Handelsstrategie ist.


dieser Indikator bietet keinen Wert aus drei Gründen: 1) er reagiert überempfindlich auf kurzfristige Korrekturen, und 2) seine starke Latenz (mit dem e-regr EA), bis der Indikator den unteren Einstiegspunkt für Long-Positionen oder den oberen Einstiegspunkt für Short-Positionen markiert, hat sich der Markt bereits weit über die Einstiegspunkte hinaus bewegt und ist in den meisten Fällen gegen den Markttrend gerichtet, und 3) allein aus der Beobachtung heraus, wenn der Markt nach oben ging, zeigte der Indikator nach unten und umgekehrt, so dass seine Verwendung als direktionaler Trendindikator bestenfalls 50% zuverlässig ist

Nun, der i-regr funktioniert gar nicht so schlecht. Um ihn in Aktion zu sehen, verwenden Sie einfach den visuellen Modus des Backtests von e-regr.mq4 und lassen Sie den Indikator im Testfenster fallen.
Ich vermute, dass er eine Art von schneller Regression oder Interpolation verwendet, aber seine Ergebnisse sind nicht so schlecht. Er folgt der PA und passt sich an die Kurve an.

Ihre Punkte:
1) alle Indikatoren sind. dies ist in der Regel mit dem Hinzufügen einer anderen Art von Indikator als Filter, oder höhere TF gelöst.
2) Nun, mit einer besseren Kurvenanpassung wird sich die Latenz verbessern. Aber das Hauptproblem ist nicht die Latenz, sondern die Einstiegskriterien von e-regr. Gegen den Trend an den Rändern eines Kanals mit konstanter Größe auslösen? ohne adäquate Erholung bei einem Trendwechsel? ohne echtes Geldmanagement? lächerlich.
Meine primäre Idee wäre der Einstieg/Ausstieg bei einer Richtungsänderung der Regressionskurve, aber ich bin mir immer noch nicht sicher, wie ein kompletter Repaint-Indikator dafür geeignet wäre.

Jedenfalls hatte ich den Eindruck, dass Sie den Schnittpunkt zweier Regressionskurven mit unterschiedlichem Bestimmtheitsmaß für den Einstieg/Ausstieg verwenden

 
T

Ja, wie Graziani sagte, können wir alles in mql4 codieren, es kommt nur darauf an, wie gut wir verstehen, wie man diese Mathematik implementiert.

Wie für repainting, das wird nicht ein Problem sein, die einzige Bar, die wir interessieren, ist die Null-Bar, der aktuelle Preis Handel bar. Die Art und Weise, wie ich dies codieren würde (vorausgesetzt, wir können die Mathematik herausfinden), ist die Gleichung wird auf die Preise der letzten n Bars durchgeführt werden, wird der resultierende Wert für die Null-Bar gezeichnet werden, die Linie auf allen vorherigen Bars wird gelassen werden, wie es von der vorherigen Berechnung war. Zum einen ist es nicht notwendig, die gesamte Linie an die Chart-Historie anzupassen, wenn wir nur mit dem Null-Balken handeln können, und zum anderen würde es eine echte Historie zeigen, wie die Linie auf jeden Balken angewandt wurde, wenn es der Live-Preisbalken war.

Aus dem Link Dennis Posted Polynominal Regression fand ich dies sehr interessant aus der Sicht eines adaptiven Indikators.

"Bei der polynomialen Regression werden verschiedene Potenzen der X-Variablen (X, X2, X3...) zu einer Gleichung hinzugefügt, um zu sehen, ob sie das r2 signifikant erhöhen. Zunächst wird eine lineare Regression durchgeführt, bei der eine Gleichung der Form Y=a+bX an die Daten angepasst wird. Dann wird eine Gleichung der Form Y=a+b1X+b2X2, die eine Parabel ergibt, an die Daten angepasst. Der r2-Wert erhöht sich immer, wenn man einen Term höherer Ordnung hinzufügt, aber die Frage ist, ob der Anstieg des r2-Wertes signifikant größer ist als durch Zufall erwartet. Als nächstes wird eine Gleichung der Form Y=a+b1X+b2X2+b3X3, die eine S-förmige Linie ergibt, angepasst und der Anstieg von r2 getestet. Dies kann so lange fortgesetzt werden, bis das Hinzufügen eines weiteren Terms r2 nicht mehr signifikant erhöht.

Das könnte alles sein, was wir wissen müssen, um es zu kodieren. Beachten Sie, dass der Autor y=a+b1X+b2X2 anstelle von y=ax2+bx+c schreibt? Das hat mich verwirrt, ich dachte, dass c ein ganz anderer Koeffizient sein müsste. Aus diesem Artikel geht hervor, dass die Koeffizienten c,d,e,f,g in y=ax6+bx5+cx4+dx3+ex2+fx+g in direktem Zusammenhang mit b stehen, das wir bereits aus der linearen Regression kennen, nämlich der Steigung.

Dennoch fällt es mir schwer zu glauben, dass es wirklich so einfach ist. Warum sollten sie a,b,c,d,e,f,g, Koeffizienten schreiben, wenn es wirklich als y=a+b1X+b2X2+b3X3+b4X4+b5X5+b6X6 geschrieben werden kann? Wie Dennis schon sagte, scheinen andere Artikel darauf hinzudeuten, dass der Steigungsabschnitt wie bei einer linearen Regression nicht für die Polyregression gilt. Manchmal frage ich mich, ob sie sich diese Dinge nicht einfach nur ausdenken, während sie sie tun.

Abgesehen davon scheint der Artikel zu implizieren, dass r2 verwendet werden kann, um zu messen, wie gut die Linie an die Datenkurve passt, während wir Erhöhungen der Polyliniengleichung nach Grad testen,

Ich denke, r2 könnte etwas mit der Varianz zu tun haben? Kann jemand mit Sicherheit sagen, was r2 ist?