Nicht-nacheilende Werkzeuge - Seite 48

 
zilliq:
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

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

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

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

Dateien:
 

Vielen Dank, Mladen,

Ich werde mit diesem ersten Schritt testen

Siehe U

Zilliq

 

Nun ja,

Erstens: Die gute Nachricht ist, dass ich denselben EUR/USD habe wie Sie, denn so ist es einfacher zu vergleichen.

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

 
zilliq:
Nun,

Erstens: Die gute Nachricht ist, dass ich denselben EUR/USD wie Sie habe, denn so ist es einfacher zu vergleichen.

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

Zilliq

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

 
zilliq:

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