Gecikmesiz Araçlar - sayfa 48

 
zilliq:
biz de radyan kullanıyoruz

Bir açıklama olabilir: MT4 kodunda alfayı fiyatla çarpıyoruz

Sanırım bu fiyat, önceki dönemler, değil mi?

Ve bu yüzden örneğin 5'lik bir len ile eklememiz gerekiyor

alfa*kapat[4]+alfa*kapat[3]+alfa*kapat[2]+alfa*kapat[1] ve alfa*kapat

veya

alfa[4]*kapat[4]+alfa[3]*kapat[3]+alfa[2]*kapat[2]+alfa[1]*kapat[1] ve alfa*kapat ?

Ve bu garip, çünkü 1 uzunluğunda len 4'e (4*1+0) eşittir ve bu nedenle son 4 periyodun alfa* fiyatını eklediğimiz için nonlagma kapanışa eşit olamaz.

sonraki yorumlarınız için teşekkürler

Zilliq

Kodunuzu kullanın, ancak daha iyi anlamak için NonlagMav3'ün en basit kodunu kullanıyorum

çift pi = 3.1415926535;

çift Katsayı = 3*pi;

int Faz = Uzunluk-1;

double Len = Uzunluk*Döngü + Faz;

if (counted_bars > 0 ) limit=Bars-counted_bars;

if ( counted_bars < 0 ) return(0);

if ( counted_bars ==0 ) limit=Bars-Len-1;

for(shift=limit;shift>=0;shift--)

{

Ağırlık=0; Toplam = 0; t=0;

(i=0;i<=Len-1;i++) için

{

g = 1.0/(Kats*t+1);

eğer (t <= 0.5 ) g = 1;

beta = MathCos(pi*t);

alfa = g * beta;

fiyat = iMA(BOŞ,0,1,0,MODE_SMA,Fiyat,shift+i);

Toplam += alfa*fiyatı;

Ağırlık += alfa;

if ( t < 1 ) t += 1.0/(Aşama-1);

else if ( t < Len-1 ) t += (2*Döngü-1)/(Döngü*Uzunluk-1);

}

if (Ağırlık > 0) MABuffer[shift] = Toplam/Ağırlık;

alfa[4]*close[4]+alfa[3]*close[3]+alfa[2]*close[2]+alfa[1]*close[1] ve alfa*close formunu (alfa her eleman için farklıdır)

Neden alfa değerlerini görüntüleyen ve bunları metatrader 4'teki alfa değerleriyle karşılaştıran basit bir sürüm yapmıyorsunuz?

 

Teşekkürler Mladen,

bunu deneyeceğim

Aslında MT4'te aracımın (Activtrade) cfd fiyatına sahibim ve Prorealtime'da bu Nakit'te başka bir akıştır, bu nedenle bazı büyük farklar var

Çok teşekkürler ve sonra görüşürüz

Zilliq

 

Pek çok farklı şey deniyorum ama işe yaramıyor ve kesinlikle nedenini bilmiyorum

Kodum tamam gibi görünüyor:

******************************

ağırlık=0

toplam=0

i=0 için Len'e

eğer i<=Aşama-1 ise

t = 1.0*i/(Aşama-1)

başka

t = 1.0 + (i-Faz+1)*(2.0*Döngü-1.0)/(Döngü*Uzunluk-1.0)

endif

beta = Cos(pi*t)

g = 1.0/(Kats*t+1)

t <= 0,5 ise

g = 1

endif

alfa = g * beta

toplam=toplam+alfa*kapat

ağırlık=ağırlık+alfa

sonraki

nonlagma=toplam/ağırlık

******************************

Ve sizinkine benzer, ancak grafiğimde gördüğünüz gibi, lagma olmayan yakınlıktan çok uzakta

Nedeni hakkında bir fikriniz var mı ve Easy dilinde NonlagMa kodunuz var mı (çoğunlukla transkripsiyonu daha kolay) ???

Çok teşekkürler Mladen, yoruldum...

Görüşürüz

Zilliq

Dosyalar:
 
zilliq:
Pek çok farklı şey deniyorum ama işe yaramıyor ve kesinlikle nedenini bilmiyorum

Kodum tamam gibi görünüyor:

******************************

ağırlık=0

toplam=0

i=0 için Len'e

eğer i<=Aşama-1 ise

t = 1.0*i/(Aşama-1)

başka

t = 1.0 + (i-Faz+1)*(2.0*Döngü-1.0)/(Döngü*Uzunluk-1.0)

endif

beta = Cos(pi*t)

g = 1.0/(Kats*t+1)

t <= 0,5 ise

g = 1

endif

alfa = g * beta

toplam=toplam+alfa*kapat

ağırlık=ağırlık+alfa

sonraki

nonlagma=toplam/ağırlık

******************************

Ve sizinkine benzer, ancak grafiğimde gördüğünüz gibi, lagma olmayan yakınlıktan çok uzakta

Nedeni hakkında bir fikriniz var mı ve Easy dilinde NonlagMa kodunuz var mı (çoğunlukla transkripsiyonu daha kolay) ???

Çok teşekkürler Mladen, yoruldum...

Görüşürüz

Zilliq

İşte yalnızca alfaları hesaplayan bir sürüm: _nonlag_ma_alphas.mq4

Protrader'da böyle bir şey yapın. Bir kez aynı olduklarında, bundan sonra gecikmesiz ma'yı da aynı yapmak kolay olmalıdır. Örnek 50. dönem içindir

Dosyalar:
 

Çok teşekkürler Mladen,

Bu ilk adımla test edeceğim

Görüşürüz

Zilliq

 

İyi,

Birincisi: iyi haber bende sizinle aynı EUR/USD'ye sahibim çünkü karşılaştırmak daha kolay olacak

Ama aslında başarılı değilim

Alfayı hesaplamak için kodunuz:

çift Döngü = 4.0;

çift Katsayı = 3.0*Pi;

int Faz = NlmPeriod-1;

int len = NlmPeriod*4 + Faz;

if (ArraySize(alphas) !=len) ArrayResize(alphas,len);

için (int k=0; k<len; k++)

{

if (k<=Faz-1)

çift t = 1.0 * k/(Aşama-1);

başka t = 1.0 + (k-Faz+1)*(2.0*Döngü-1.0)/(Döngü*NlmPeriod-1.0);

çift beta = MathCos(Pi*t);

çift g = 1.0/(Kats*t+1); eğer (t <= 0.5 ) g = 1;

alphas[k] = g * beta;

}

for(int i=len-1; i>=0; i--) nlm = alfalar;

Yani, eğer iyi anladıysam:

1/ İlk adım: 0'dan len-1'e kadar tüm alfaları hesaplar

Bu:

alphas[k] = g * beta;

2/ İkinci adım, 0'dan len-1'e tüm alfaları ekler

Bu

for(int i=len-1; i>=0; i--) nlm = alfalar;

Sorun, grafiğimde her zaman aynı alfaya sahip olmam mı? Her mumda k, t ve benzerleri her mumda her zaman aynı olduğu ve kapanışa bağlı olmadığı için nasıl farklı bir alfaya sahip olabilirsiniz?

Prorealtime'da sahip olduğum kod aynı görünüyor:

Pi=3.14159265358979323846264338327950288

Döngü = 4.0

Katsayı = 3.0*Pi

Faz = NlmPeriod-1

len = NlmPeriod*4 + Faz

alfa=0

k=0 için len-1

t=0

eğer (k<=Faz-1) o zaman

t = 1.0 * k/(Aşama-1)

başka

t = 1.0 + (k-Faz+1)*(2.0*Döngü-1.0)/(Döngü*NlmPeriod-1.0)

endif

beta = Cos(Pi*t)

g = 1.0/(Kats*t+1)

eğer (t <= 0.5 ) o zaman

g = 1

endif

alfalar= g * beta

alfa=alf+alfa

sonraki

 
zilliq:
İyi,

Birincisi: iyi haber bende sizinle aynı EUR/USD'ye sahibim çünkü karşılaştırmak daha kolay olacak

Ama aslında başarılı değilim

Alfayı hesaplamak için kodunuz:

çift Döngü = 4.0;

çift Katsayı = 3.0*Pi;

int Faz = NlmPeriod-1;

int len = NlmPeriod*4 + Faz;

if (ArraySize(alphas) !=len) ArrayResize(alphas,len);

için (int k=0; k<len; k++)

{

if (k<=Faz-1)

çift t = 1.0 * k/(Aşama-1);

başka t = 1.0 + (k-Faz+1)*(2.0*Döngü-1.0)/(Döngü*NlmPeriod-1.0);

çift beta = MathCos(Pi*t);

çift g = 1.0/(Kats*t+1); eğer (t <= 0.5 ) g = 1;

alphas[k] = g * beta;

}

for(int i=len-1; i>=0; i--) nlm = alfalar;

Yani, eğer iyi anladıysam:

1/ İlk adım: 0'dan len-1'e kadar tüm alfaları hesaplar

Bu:

alphas[k] = g * beta;

2/ İkinci adım, 0'dan len-1'e tüm alfaları ekler

Bu

for(int i=len-1; i>=0; i--) nlm = alfalar;

Sorun, grafiğimde her zaman aynı alfaya sahip olmam mı? Her mumda k, t ve benzerleri her mumda her zaman aynı olduğu ve kapanışa bağlı olmadığı için nasıl farklı bir alfaya sahip olabilirsiniz?

Prorealtime'da sahip olduğum kod aynı görünüyor:

Pi=3.14159265358979323846264338327950288

Döngü = 4.0

Katsayı = 3.0*Pi

Faz = NlmPeriod-1

len = NlmPeriod*4 + Faz

alfa=0

k=0 için len-1

t=0

eğer (k<=Faz-1) o zaman

t = 1.0 * k/(Aşama-1)

başka

t = 1.0 + (k-Faz+1)*(2.0*Döngü-1.0)/(Döngü*NlmPeriod-1.0)

endif

beta = Cos(Pi*t)

g = 1.0/(Kats*t+1)

eğer (t <= 0.5 ) o zaman

g = 1

endif

alfalar= g * beta

alfa=alf+alfa

sonraki

Zilliq

Dediğim gibi: bir dizi aplhas var

Orada görüntülediğim şey bir dizi alfa - zaman bileşenini dikkate almayın. Bunlar, alfa dizisindeki her bir alfa değerinin değerleridir, Bunlar, hesaplama için kullandığınız her bir fiyat öğesine uygulanan ağırlıklardır.

 

Muhtemelen alfa dizisi dediğiniz şeyi anlamıyorum (her mumda farklı alfalar anlıyorum), üzgünüm

Bir kez daha deneyeceğim...

 
zilliq:

Muhtemelen alfa dizisi dediğiniz şeyi anlamıyorum (her mumda farklı alfalar anlıyorum), üzgünüm

Bir kez daha deneyeceğim...

Zilliq

Fiyat katsayısı (alfa) 0 == 1

Fiyat 1 için katsayı (alfa) == 0.9nnnnn

ve benzeri (gecikmesiz ma alfa göstergesi tarafından gösterildiği gibi) ve mevcut gecikmesiz ma değerini almak için len fiyatları için kullanılan her şey

 

Tamam, sanırım açıklamalarını anlıyorum (harikasın ) ve kodunuzla MT4 üzerinde farklı testler yaptım

1'den len-1'e farklı bir değer olarak fiyatı düşünen alfa ve sonunda alfaların toplamına böleriz

Bu nedenle, sağdaki alfaların ilk değeri her zaman 1'dir ve bu nedenle ne nlm değerini değiştirsek bile, grafikteki alfaların görünümü her zaman aynı tür yılandır)

Pekala, bunu Prorealtime'da nasıl yapabileceğimi araştırmam gerektiğini biliyorum...