![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
Jupp... ich weiß nicht, wie geistesabwesend ich bin. Dank Ihrer rechtzeitigen Beratung werden die Zahlen von TB_TotalCount und VACount korrekt und absolut vernünftig. Aber meine Ziele der Suche nach VA High/Low immer noch in Schwierigkeiten, mein PC wieder mit diesem Teil der Codierung abgestürzt. Ich versuche jetzt wieder zu verstehen, warum.
Vielen Dank Mladen! Dein Rat gibt mir ein teilweises Lächeln nach einer ganzen weißen Nacht![](https://c.mql5.com/forextsd/smiles/smile.png)
Hallo Mladen,
ich wollte nur mitteilen, dass ich endlich den Rest meines Problems gelöst habe. Ich versuche, es weiter zu verbessern.
Obwohl du mir in diesem Fall so wenig Hilfe gegeben hast, wie du nur konntest, habe ich herausgefunden, dass das manchmal die beste Methode ist, jemandem etwas beizubringen, der auf seinem eigenen Fuß steht.
Vielen Dank von ganzem Herzen, Mladen!
Ich wünsche dir noch viele schöne Tage,
fareastol
Hallo Mladen,
Ich habe Erfolg mit dem relativen und absoluten Momentum![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
Vielen Dank für Ihre Hilfe, jetzt muss ich das Momentum für den rsx glätten
Zilliq
Ps: Wenn es jemandem helfen kann:
//Relatives Momentum bei Schlusskurs
ind1= close-close[1]
// Absolutes Momentum
ind2=abs(ind1)
ind3=wilderDurchschnitt[rs](ind1)
ind4=wilderDurchschnitt[rs](ind2)
ind3=(50*(ind3+ind4))/ind4
return ind3 as "RSI",0, 30, 70, 100Zilliq
Werfen Sie einen Blick auf diesen Beitrag: https: //www.mql5.com/en/forum/178733/page36
Dort gibt es ein Beispiel, wie die Glättung durchgeführt werden kann
Danke Mladen, das werde ich sehen.
Einen schönen Tag und tausend Dank für all Ihre Hilfe und Arbeit![](https://c.mql5.com/forextsd/smiles/emoticon01.png)
Zilliq
Nun, wenn ich in Ihrem Indikator rsi smoother 2 gut verstanden habe, ändern Sie einfach den wilderen Durchschnitt durch die Funktion ismooth
Und Sie "glätten" das relative und absolute Momentum
Ich mache dasselbe mit dem Hull-Durchschnitt, aber das Ergebnis ist nicht dasselbe, wie Sie auf meinem Bild sehen
Haben Sie eine Idee warum, oder mache ich einen Fehler?
Danke Mladen
Und der Code RSI14 und RSIsmoother 45
//Relatives Momentum auf Schlusskurs
ind1= close-close[1]
// Absolutes Momentum
ind2=abs(ind1)
// Relatives Momentum mit Hull-Durchschnitt glätten
v =(2*GewichteterDurchschnitt[Rund(rs/2)](ind1))-GewichteterDurchschnitt[rs](ind1)
ind3 = gewichteterDurchschnitt[Round(Sqrt(rs))](v)
// Glätten des absoluten Impulses mit Hull-Durchschnitt
v2 =(2*GewichteterDurchschnitt[Rund(rs/2)](ind2))-GewichteterDurchschnitt[rs](ind2)
ind4 = gewichteterDurchschnitt[Round(Sqrt(rs))](v2)
ind5=(50*(ind3+ind4))/ind4
ind5 als "RSI glatt" zurückgeben
Ich ersetze den wilderen Durchschnitt durch einen T3 Tillson für beide (relatives und absolutes Momentum), mit dem gleichen Problem
Dies ist einfach ein Ergebnis der Verwendung unterschiedlicher Glättungsmethoden. Unterschiedliche Glättungen führen zu unterschiedlichen Ergebnissen
Wenn Sie Ergebnisse erzielen wollen, die mit dem rsi im rsi-Thread vergleichbar sind, müssen Sie die Glättungsmethode verwenden, die in diesem Indikator verwendet wird.
Danke Mladen für deine Antwort![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
Es ist seltsam, dass eine Glättung des relativen und absoluten Momentums ein solches Ergebnis mit einigen Übertreibungen mit dem Hull-Durchschnitt und dem T3 ergibt
Können Sie mit einer mathematischen Formel (wenn möglich) erklären, wie die Glättung der ismooth-Funktion von MT4 funktioniert, um einen glatten RSI zu erhalten, der mit dem RSI vergleichbar ist, bitte, und ich werde es danach codieren
Vielen Dank und einen schönen Tag
Zilliq
Ihr MT4-Code und meine Interpretation:
//relatives Momentum
double mom = iMA(NULL,0,1,0,MODE_SMA,Price,i)-iMA(NULL,0,1,0,MODE_SMA,Price,i+1);
//absolutes Momentum
double moa = MathAbs(mom);
//Glätten des relativen Impulses mit der "ismooth-Funktion"
double tmom = iSmooth(mom,Länge,SmoothSpeed,i,0);
//Glätten des absoluten Impulses mit der "ismooth function"
double tmoa = iSmooth(moa,Length,SmoothSpeed,i,1);
if (tmoa != 0)
//And das Verhältnis 50*(RM+AM)(AM)
rsi = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00);
sonst rsi = 50;
Zilliq
Sie haben den Quellcode in diesem Indikator. Konvertieren Sie ihn einfach in Prorealtime
Autsch, es ist nicht wirklich einfach für mich, die ismooth-Funktion zu interpretieren
(MT4 ist so kompliziert im Vergleich zu PRT)
Ich versuche, den MT4-Code in mathematischen Code zu übersetzen, um ihn anschließend in PRT zu codieren.
Bitte können Sie meine Interpretation der verschiedenen Zeilen unter jeder Zeile bestätigen, bevor ich sie in PRT codiere.
Vielen Dank Mladen
Zilliq
double iSmooth(double price,int length, double speed, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1;
if(r<=2) { workSmooth[r] = Preis; workSmooth[r] = Preis; workSmooth[r] = Preis; return(Preis); }
//
//
//
//
//
_______________________________________________________________________
double beta = 0,45*(Länge-1,0)/(0,45*(Länge-1,0)+2,0);
beta = 0,45*(Länge-1,0)/(0,45*(Länge-1,0)+2,0)
_______________________________________________________________________
double alpha = MathPow(beta,Geschwindigkeit);
alpha = beta^Geschwindigkeit
_______________________________________________________________________
workSmooth[r] = price+alpha*(workSmooth[r-1]-price);
Filt0 = Preis+alpha*(Filt0[1]-Preis);
_______________________________________________________________________
workSmooth[r] = (Preis - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1];
Filt1 = (Preis - Filt0 )*(1-alpha)+alpha*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r];
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1];
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1];
Filt4=Filt3+Filt4[1]
_______________________________________________________________________
return(workSmooth[r]);
return Filt4
Autsch, es ist nicht wirklich einfach für mich, die ismooth-Funktion zu interpretieren
Ich versuche, den MT4-Code in mathematischen Code zu übersetzen, um ihn anschließend auf PRT zu codieren.
Bitte können Sie meine Interpretation der verschiedenen Zeilen unter jeder Zeile bestätigen, bevor ich sie in PRT codiere.
Vielen Dank Mladen
Zilliq
double iSmooth(double price,int length, double speed, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars); instanceNo *= 5; r = Bars-r-1;
if(r<=2) { workSmooth[r] = Preis; workSmooth[r] = Preis; workSmooth[r] = Preis; return(Preis); }
//
//
//
//
//
_______________________________________________________________________
double beta = 0,45*(Länge-1,0)/(0,45*(Länge-1,0)+2,0);
beta = 0,45*(Länge-1,0)/(0,45*(Länge-1,0)+2,0)
_______________________________________________________________________
double alpha = MathPow(beta,Geschwindigkeit);
alpha = beta^Geschwindigkeit
_______________________________________________________________________
workSmooth[r] = price+alpha*(workSmooth[r-1]-price);
Filt0 = Preis+alpha*(Filt0[1]-Preis);
_______________________________________________________________________
workSmooth[r] = (Preis - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1];
Filt1 = (Preis - Filt0 )*(1-alpha)+alpha*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r];
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1];
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1];
Filt4=Filt3+Filt4[1]
_______________________________________________________________________
return(workSmooth[r]);
Rückgabe Filt4Soweit ich das sehe, sollte das alles sein, aber bedenke, dass ich noch nie mit prorealtime gearbeitet habe