Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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
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
Ç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
İ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
sonrakiZilliq
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...
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...