![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
Wir verwenden auch Radian
Das könnte eine Erklärung sein: In der MT4-Code multiplizieren wir alfa mit Preis
Ich nehme an, dies ist der Preis, ich périods vor, nicht ?
Und so müssen wir addieren, zum Beispiel mit einem len von 5
alfa*close[4]+alfa*close[3]+alfa*close[2]+alfa*close[1] and alfa*close
oder
alfa[4]*schließe[4]+alfa[3]*schließe[3]+alfa[2]*schließe[2]+alfa[1]*schließe[1] und alfa*schließe ?
Und es ist seltsam, denn mit einer Länge von 1 ist die len gleich 4 (4*1+0) und so kann das nonlagma nicht gleich close sein, weil wir den alfa*price der letzten 4 Perioden addieren
Vielen Dank für Ihre nächsten Kommentare![](https://c.mql5.com/forextsd/smiles/nerd.png)
Zilliq
Ich verwende Ihren Code, aber zum besseren Verständnis verwende ich den einfachsten Code des NonlagMav3
double pi = 3.1415926535;
double Coeff = 3*pi;
int Phase = Länge-1;
double Len = Länge*Zyklus + Phase;
if ( counted_bars > 0 ) limit=Bars-counted_bars;
wenn ( gezählte Balken < 0 ) return(0);
if ( gezählte_Balken ==0 ) limit=Balken-Len-1;
for(shift=limit;shift>=0;shift--)
{
Gewicht=0; Summe=0; t=0;
for (i=0;i<=Len-1;i++)
{
g = 1,0/(Coeff*t+1);
wenn (t <= 0,5 ) g = 1;
beta = MathCos(pi*t);
alfa = g * beta;
Preis = iMA(NULL,0,1,0,MODE_SMA,Preis,shift+i);
Summe += alfa*Preis;
Gewicht += alfa;
wenn ( t < 1 ) t += 1,0/(Phase-1);
sonst wenn ( t < Len-1 ) t += (2*Zyklus-1)/(Zyklus*Länge-1);
}
if (Gewicht > 0) MABuffer[shift] = Summe/Gewicht;Du solltest die Form alfa[4]*close[4]+alfa[3]*close[3]+alfa[2]*close[2]+alfa[1]*close[1] und alfa*close verwenden (alpha ist für jedes Element anders)
Warum machen Sie nicht eine einfache Version, die die Werte von alphas anzeigt und diese mit den Werten von alphas in metatrader 4 vergleicht?
Danke Mladen,
Ich werde dies versuchen
In der Tat auf MT4, ich habe den cfd Preis von meinem Broker (Activtrade), und auf Prorealtime ist dies ein anderer Fluss in Cash, so gibt es einige große Unterschiede
Vielen Dank und auf Wiedersehen
Zilliq
Nun, ich habe viele verschiedene Dinge ausprobiert, aber es funktioniert nicht, und ich weiß definitiv nicht, warum![](https://c.mql5.com/forextsd/smiles/cry_smile.png)
Mein Code scheint in Ordnung zu sein:
****************************
Gewicht=0
Summe=0
für i=0 bis Len
wenn i<=Phase-1 dann
t = 1,0*i/(Phase-1)
sonst
t = 1,0 + (i-Phase+1)*(2,0*Zyklus-1,0)/(Zyklus*Länge-1,0)
endif
beta = Cos(pi*t)
g = 1,0/(Coeff*t+1)
wenn t <= 0,5 dann
g = 1
endif
alfa = g * beta
sum=sum+alfa*close
Gewicht=Gewicht+Alfa
nächste
nonlagma=sum/weight
***************************
Und ähnlich wie bei Ihnen, aber wie Sie in meinem Diagramm sehen, ist das Nonlagma weit weg vom Close
Hast du eine Idee warum, und hast du den NonlagMa Code in Leichter Sprache (oft einfacher zu transkribieren)?
Vielen Dank Mladen, ich bin müde...
Siehe U
Zilliq
Nun, ich habe viele verschiedene Dinge ausprobiert, aber es funktioniert nicht, und ich weiß definitiv nicht, warum
Mein Code scheint in Ordnung zu sein:
****************************
Gewicht=0
Summe=0
für i=0 bis Len
wenn i<=Phase-1 dann
t = 1,0*i/(Phase-1)
sonst
t = 1,0 + (i-Phase+1)*(2,0*Zyklus-1,0)/(Zyklus*Länge-1,0)
endif
beta = Cos(pi*t)
g = 1,0/(Coeff*t+1)
wenn t <= 0,5 dann
g = 1
endif
alfa = g * beta
sum=sum+alfa*close
Gewicht=Gewicht+Alfa
nächste
nonlagma=sum/weight
***************************
Und ähnlich wie bei Ihnen, aber wie Sie in meinem Diagramm sehen, ist das Nonlagma weit weg vom Close
Hast du eine Idee warum, und hast du den NonlagMa Code in Leichter Sprache (oft einfacher zu transkribieren)?
Vielen Dank Mladen, ich bin müde...
Siehe U
Zilliq
Hier ist eine Version, die nur die Alphas berechnet: _nonlag_ma_alphas.mq4
Machen Sie etwas Ähnliches in protrader. Wenn sie einmal gleich sind, sollte es einfach sein, auch die Non-Lag-Ma gleich zu machen. Das Beispiel ist für den Zeitraum 50
Vielen Dank, Mladen,
Ich werde mit diesem ersten Schritt testen
Siehe U![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
Zilliq
Nun ja,
Erstens: Die gute Nachricht ist, dass ich denselben EUR/USD habe wie Sie, denn so ist es einfacher zu vergleichen.![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
Aber es gelingt mir nicht wirklich
Ihr Code zur Berechnung von Alpha lautet:
double Cycle = 4.0;
double Coeff = 3.0*Pi;
int Phase = NlmPeriod-1;
int len = NlmPeriod*4 + Phase;
if (ArraySize(alphas) != len) ArrayResize(alphas,len);
for (int k=0; k<len; k++)
{
if (k<=Phase-1)
double t = 1.0 * k/(Phase-1);
sonst t = 1,0 + (k-Phase+1)*(2,0*Zyklus-1,0)/(Zyklus*NlmPeriode-1,0);
double beta = MathCos(Pi*t);
double g = 1.0/(Coeff*t+1); if (t <= 0.5 ) g = 1;
alphas[k] = g * beta;
}
for(int i=len-1; i>=0; i--) nlm = alphas;
Also, wenn ich es richtig verstanden habe:
1/ Erster Schritt: Es werden alle Alphas von 0 bis len-1 berechnet.
Dies ist:
alphas[k] = g * beta;
2/ Zweiter Schritt: Addiert alle Alphas von 0 bis len-1
Dies ist
for(int i=len-1; i>=0; i--) nlm = alphas;
Das Problem ist, dass ich immer das gleiche Alpha in meinem Diagramm habe. Wie kann man bei jeder Kerze ein anderes Alpha haben, da k, t usw. bei jeder Kerze immer gleich sind und nicht vom Schlusskurs abhängen?
Der Code, den ich auf Prorealtime habe, scheint derselbe zu sein:
Pi=3.14159265358979323846264338327950288
Zyklus = 4,0
Koeff = 3.0*Pi
Phase = NlmPeriode-1
len = NlmPeriode*4 + Phase
alph=0
für k=0 bis len-1
t=0
wenn (k<=Phase-1) dann
t = 1,0 * k/(Phase-1)
sonst
t = 1,0 + (k-Phase+1)*(2,0*Zyklus-1,0)/(Zyklus*NlmPeriode-1,0)
endif
beta = Cos(Pi*t)
g = 1,0/(Coeff*t+1)
wenn (t <= 0,5 ) dann
g = 1
endif
alphas= g * beta
alph=alph+alphas
nächste
Nun,
Erstens: Die gute Nachricht ist, dass ich denselben EUR/USD wie Sie habe, denn so ist es einfacher zu vergleichen.![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
Aber es gelingt mir nicht wirklich
Ihr Code zur Berechnung von Alpha lautet:
double Cycle = 4.0;
double Coeff = 3.0*Pi;
int Phase = NlmPeriod-1;
int len = NlmPeriod*4 + Phase;
if (ArraySize(alphas) != len) ArrayResize(alphas,len);
for (int k=0; k<len; k++)
{
if (k<=Phase-1)
double t = 1.0 * k/(Phase-1);
sonst t = 1,0 + (k-Phase+1)*(2,0*Zyklus-1,0)/(Zyklus*NlmPeriode-1,0);
double beta = MathCos(Pi*t);
double g = 1.0/(Coeff*t+1); if (t <= 0.5 ) g = 1;
alphas[k] = g * beta;
}
for(int i=len-1; i>=0; i--) nlm = alphas;
Also, wenn ich es richtig verstanden habe:
1/ Erster Schritt: Es werden alle Alphas von 0 bis len-1 berechnet.
Dies ist:
alphas[k] = g * beta;
2/ Zweiter Schritt: Addiert alle Alphas von 0 bis len-1
Dies ist
for(int i=len-1; i>=0; i--) nlm = alphas;
Das Problem ist, dass ich immer das gleiche Alpha in meinem Diagramm habe. Wie kann man bei jeder Kerze ein anderes Alpha haben, da k, t usw. bei jeder Kerze immer gleich sind und nicht vom Schlusskurs abhängen?
Der Code, den ich auf Prorealtime habe, scheint derselbe zu sein:
Pi=3.14159265358979323846264338327950288
Zyklus = 4,0
Koeff = 3.0*Pi
Phase = NlmPeriode-1
len = NlmPeriode*4 + Phase
alph=0
für k=0 bis len-1
t=0
wenn (k<=Phase-1) dann
t = 1,0 * k/(Phase-1)
sonst
t = 1,0 + (k-Phase+1)*(2,0*Zyklus-1,0)/(Zyklus*NlmPeriode-1,0)
endif
beta = Cos(Pi*t)
g = 1,0/(Coeff*t+1)
wenn (t <= 0,5 ) dann
g = 1
endif
alphas= g * beta
alph=alph+alphas
nächsteZilliq
Wie ich schon sagte: es gibt ein Array von aplhas
Was ich dort angezeigt habe, ist ein Array von Alphas - lassen Sie die Zeitkomponente außer Acht. Das sind die Werte jedes einzelnen Alphawertes im Array der Alphas, das sind die Gewichte, die auf jedes Preiselement angewendet werden, das Sie zur Berechnung verwenden.
Wahrscheinlich verstehe ich nicht, was Sie Array von Alphas nennen (ich verstehe verschiedene Alphas für jede Kerze), sorry
Ich werde es noch einmal versuchen...
Ich verstehe wahrscheinlich nicht, was Sie Array von Alphas nennen (ich verstehe verschiedene Alphas für jede Kerze), sorry
Ich werde es noch einmal versuchen...Zilliq
Koeffizient (Alpha) für Preis 0 == 1
Koeffizient (Alpha) für Preis 1 == 0.9nnnnn
und so weiter (wie es vom Non-Lag-Ma-Alpha-Indikator angezeigt wird), und all das wird für die Len-Preise verwendet, um den aktuellen Non-Lag-Ma-Wert zu erhalten
Okay, ich glaube, ich verstehe Ihre Erklärungen (Sie sind großartig
) und ich machte verschiedene Tests auf MT4 mit Ihrem Code
die Alphas, die als verschiedene Werte von 1 bis len-1 den Preis abwägen und am Ende dividieren wir durch die Summe der Alphas
Das ist, warum der erste Wert der Alphas auf der rechten Seite ist immer 1 und das ist, warum evenv wenn wir ändern ne nlm Wert der Aspekt der Alphas auf dem Diagramm ist immer die gleiche Art von Schlange)
Nun, ich weiß, dass ich suchen muss, wie ich das in Prorealtime machen kann...![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)