Vor langer Zeit schrieb ich lineare Regression Indikatoren in MQL3, begann sie in 4 neu zu schreiben, sie funktionieren nicht. Fachleute helfen mir bitte beim Schreiben oder korrigieren einen Fehler.
Und eine ähnliche: hyperbolische Regression (kann den Fehler auch nicht finden)
//+------------------------------------------------------------------+ //| гиперболическая регрессия.mq4 | //| Copyright © 2008, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //#property indicator_chart_window #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //---- input parameters extern int nn=21; //---- buffers double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- double barr, as, bs,cs,ds,e, f,k,LR,ExtMapBuffer1[]; int n,n1; // Индикатор Гиперболической Регресии for (barr=0;barr<=100;barr++){ for (n=1;n<=nn;n++){ n1=barr+n-1; as=as+1/n; bs=bs+1/(n*n); cs=cs+Close[n1]; ds=ds+Close[n1]/n; } e=nn*bs-as*as; f=cs*bs-ds*as; k=nn*ds-as*cs; f=f/e; k=k/e; LR = f+k/nn; as=0; bs=0; cs=0; ds=0; ExtMapBuffer1[n]=LR; } //---- return(0); } //+------------------------------------------------------------------+
Suche nach https://www.mql5.com/ru/code
https://forum.mql4.com/ru/10446/page13
Danke, interessant, aber wo habe ich den Indikator verwechselt?
kvn:
Danke, interessant, aber wo habe ich den Indikator verwechselt?
Das ist richtig -verpfuscht.
Danke, interessant, aber wo habe ich den Indikator verwechselt?
Rosh:
Das stimmt -ich habe es verm asselt.
kvn:
Danke, interessant, aber wo habe ich den Indikator verwechselt?
Danke, interessant, aber wo habe ich den Indikator verwechselt?
Das stimmt -ich habe es verm asselt.
Sie sind doch gebildet, oder? Dann sagen Sie mir, wo. Und vielen Dank.
kvn:
Dann sagen Sie mir, wo, und vielen Dank.
Es wurde hier schon viel zu diesem Thema gesagt. Ich kann Ihnen nur eine allgemeine Idee geben: die Gleichung der Summe der Standardabweichungen von der Näherungskurve mit beliebig vielen vorgegebenen Parametern. Anschließend werden die partiellen Ableitungen der einzelnen Parameter ermittelt und mit Null gleichgesetzt. Aus dem sich daraus ergebenden System linearer Gleichungen werden alle erforderlichen Parameter ermittelt. Der Algorithmus ist, wie Sie sehen können, einfach und überhaupt nicht kreativ.
Rosh:
Das ist richtig -verpfuscht.
kvn:
Danke, interessant, aber wo habe ich den Indikator verwechselt?
Danke, interessant, aber wo habe ich den Indikator verwechselt?
Das ist richtig -verpfuscht.
Dann sagen Sie mir, wo, und vielen Dank.
Was Sie sagen, ist nicht gerade eine lineare Regression. Die LR-Technik ist in meinem Indikator beschrieben.
//Der Indikator wird nach folgender Formel gebildet: LR = at+b
//wobei LR - prognostizierter "durchschnittlicher" Schlusskurs,
//t - Zeitpunkt,Pt - Schlusskurs der letzten n Perioden.
//a = (n*SUMM(t*Pt) -SUMM(t)*SUMM(Pt))/(n*SUMM(t^2) - (SUMM(t))^2) - Winkeltangente der Regressionsgeraden,
//b = 1/n*(SUMM(Pt) - a*SUMM(t)), - horizontale Verschiebung}
Aber wenn ich es ausführe, erhalte ich zuerst falsche Daten (wenn n=1-100,) und dann n=22 und die richtigen Werte kommen heraus. Es gibt irgendwo einen kleinen Fehler, den ich nicht finden kann.
Ich vermute, dass der Fehler im Schleifenoperator liegt.
//Der Indikator wird nach folgender Formel gebildet: LR = at+b
//wobei LR - prognostizierter "durchschnittlicher" Schlusskurs,
//t - Zeitpunkt,Pt - Schlusskurs der letzten n Perioden.
//a = (n*SUMM(t*Pt) -SUMM(t)*SUMM(Pt))/(n*SUMM(t^2) - (SUMM(t))^2) - Winkeltangente der Regressionsgeraden,
//b = 1/n*(SUMM(Pt) - a*SUMM(t)), - horizontale Verschiebung}
Aber wenn ich es ausführe, erhalte ich zuerst falsche Daten (wenn n=1-100,) und dann n=22 und die richtigen Werte kommen heraus. Es gibt irgendwo einen kleinen Fehler, den ich nicht finden kann.
Ich vermute, dass der Fehler im Schleifenoperator liegt.
Obwohl ich wikipedia nicht mag, gebe ich einen Link zum Thema lineare Regression an. Dies habe ich auch in einem bestimmten Blog gefunden - http://cmacfm.mazoo.net/archives/000936.html
Ich werde mich nicht über LR streiten. WO LIEGT ALSO DER FEHLER IM INDIKATOR CODE???????

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