Kodlama yardımı - sayfa 170

 

Evet... ne kadar dalgın olduğumu bilmiyorum. Doğru zaman tavsiyeniz sayesinde TB_TotalCount ve VACount sayıları doğru ve kesinlikle makul hale geliyor. Ancak VA High/Low'u bulma hedeflerim hala sorunlu, bilgisayarım kodlamanın bu kısmıyla tekrar çöküyor. Şimdi nedenini anlamaya çalışıyorum.

Çok teşekkürler Mladen! Tavsiyen bana bütün beyaz geceden sonra kısmi bir gülümseme veriyor

 

Merhaba Mladen,

Sonunda sorunumun geri kalanını çözdüğümü bildirmek için. Daha da geliştirmeye çalışıyor.

Bana bu durumda elinden geldiğince az yardım etmene rağmen, bazen ayakları üzerinde durarak öğrenenlere öğretmenin en iyi yönteminin bu olduğunu görüyorum.

Kalbimin derinliklerinden teşekkürler, Mladen!

Mutlu güzel günler önünüzde

uzakdoğu

 
zilliq:
Merhaba Mladen,

Göreceli ve mutlak momentumu kullanmayı başardım

Yardımın için çok teşekkürler, şimdi rsx için ivmeyi düzeltmem gerekiyor

Zilliq

Not: Birine yardımcı olabilecekse:

// Kapanışta Göreli Momentum

ind1= kapat-kapa[1]

// Mutlak momentum

ind2=abs(ind1)

ind3=wilderAverage[rs](ind1)

ind4=wilderAverage[rs](ind2)

ind3=(50*(ind3+ind4))/ind4

ind3'ü "RSI",0, 30, 70, 100 olarak döndür

Zilliq

Bu gönderiye bir göz atın: https://www.mql5.com/en/forum/178733/page36

Orada (yumuşatma) nasıl yapılabileceğine dair bir örneğiniz var.

 

Teşekkürler Mladen, bunu göreceğim

İyi günler ve tüm yardımlarınız ve çalışmalarınız için binlerce teşekkürler

Zilliq

 

Peki, göstergenizde rsi smoother 2'yi iyi anladıysam, daha vahşi ortalamayı ismooth işleviyle değiştirmeniz yeterlidir.

Ve sen göreli ve mutlak momentumu "düzeltiyorsun"

Aynısını Hull ortalama ile yapıyorum ama sonuç benim resmimde gördüğünüzle aynı değil

Neden olduğu hakkında bir fikriniz var mı, yoksa bir hata mı yapıyorum?

Teşekkürler Mladen

Ve RSI14 ve RSIsmoother 45 kodu

// Kapanışta Göreli Momentum

ind1= kapat-kapa[1]

// Mutlak momentum

ind2=abs(ind1)

// Gövde ortalaması ile Pürüzsüz Bağıl momentum

v =(2*weightedAverage[round(rs/2)](ind1))-weightedAverage[rs](ind1)

ind3 = ağırlıklıOrtalama[Yuvarlak(Sqrt(rs))](v)

// Gövde ortalaması ile Pürüzsüz Mutlak momentum

v2 =(2*weightedAverage[yuvarlak(rs/2)](ind2))-weightedAverage[rs](ind2)

ind4 = ağırlıklıOrtalama[Yuvarlak(Sqrt(rs))](v2)

ind5=(50*(ind3+ind4))/ind4

ind5'i "RSI düzgün" olarak döndür

Aynı problemle, daha vahşi ortalamayı her ikisinde de (göreceli ve mutlak momentum) bir T3 Tillson ile değiştiriyorum

Dosyalar:
 

Sadece farklı yumuşatma yöntemleri kullanmanın bir sonucudur. Farklı yumuşatma farklı sonuçlar verecektir

rsi başlığında yayınlanan rsi ile karşılaştırılabilir sonuçlar istiyorsanız, o göstergede kullanılan bu tür yumuşatma kullanmanız gerekir.

 

Cevabınız için teşekkürler Mladen

Göreceli ve mutlak momentumun düzgünlüğünün, Gövde ortalaması ve T3 ile bazı abartılarla böyle bir sonuç vermesi garip.

Matematiksel bir formülle (mümkünse) açıklayabilir misiniz (mümkünse) lütfen RSI ile karşılaştırılabilir pürüzsüz bir RSI elde etmek için MT4'ün düz fonksiyonunun düzgünlüğünün nasıl çalıştığını lütfen sonra kodlayacağım.

Çok teşekkürler ve iyi günler

Zilliq

MT4 kodunuz ve benim yorumum:

//bağıl momentum

double mom = iMA(NULL,0,1,0,MODE_SMA,Fiyat,i)-iMA(NULL,0,1,0,MODE_SMA,Fiyat,i+1);

//mutlak momentum

çift moa = MathAbs(anne);

//"İsmooth işlevi" ile düzgün bağıl momentum

double tmom = iSmooth(mom,Length,SmoothSpeed,i,0);

// "İsmooth işlevi" ile pürüzsüz mutlak momentum

double tmoa = iSmooth(moa,Length,SmoothSpeed,i,1);

eğer (tmoa != 0)

//Ve 50*(RM+AM)(AM) oranı

rsi = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00);

başka rsi = 50;

 

Zilliq

Bu göstergede kaynak koduna sahipsiniz. Sadece prorealtime dönüştürün

 

Ah, düzgün işlevi yorumlamak benim için gerçekten kolay değil (MT4, PRT ile karşılaştırıldığında çok karmaşıktır)

MT4 kodunu PRT'de sonra kodlamak için matematiksel koda çevirmeye çalışıyorum

Lütfen, PRT'de kodlamadan önce, her satırın altındaki farklı satırla ilgili yorumumu onaylayabilir misiniz?

Çok teşekkürler Mladen

Zilliq

double iSmooth(çift fiyat,int uzunluk, çift hız, int r, int örnekNo=0)

{

if (ArrayRange(workSmooth,0)!=Barlar) ArrayResize(workSmooth,Barlar); örnekNo *= 5; r = Çubuklar-r-1;

if(r<=2) { workSmooth[r] = fiyat; workSmooth[r] = fiyat; workSmooth[r] = fiyat; iade(fiyat); }

//

//

//

//

//

__________________________________________________________

çift beta = 0.45*(uzunluk-1.0)/(0.45*(uzunluk-1.0)+2.0);

beta = 0.45*(uzunluk-1.0)/(0.45*(uzunluk-1.0)+2.0)

__________________________________________________________

çift alfa = MathPow(beta,hız);

alfa = beta^hız

__________________________________________________________

workSmooth[r] = fiyat+alfa*(workSmooth[r-1]-fiyat);

Filt0 = fiyat+alfa*(Filt0[1]-fiyat);

__________________________________________________________

workSmooth[r] = (fiyat - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1];

Filt1 = (fiyat - Filt0 )*(1-alpha)+alpha*Filt1[1]

__________________________________________________________

workSmooth[r] = workSmooth[r] + workSmooth[r];

Filt2 = Filtre0 + Filtre1

__________________________________________________________

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]

__________________________________________________________

dönüş(workSmooth[r]);

dönüş Filt4

 
zilliq:
Ah, düzgün işlevi yorumlamak benim için gerçekten kolay değil (MT4, PRT ile karşılaştırıldığında çok karmaşıktır)

MT4 kodunu PRT'de sonra kodlamak için matematiksel koda çevirmeye çalışıyorum

Lütfen, PRT'de kodlamadan önce, her satırın altındaki farklı satırla ilgili yorumumu onaylayabilir misiniz?

Çok teşekkürler Mladen

Zilliq

double iSmooth(çift fiyat,int uzunluk, çift hız, int r, int örnekNo=0)

{

if (ArrayRange(workSmooth,0)!=Barlar) ArrayResize(workSmooth,Barlar); örnekNo *= 5; r = Çubuklar-r-1;

if(r<=2) { workSmooth[r] = fiyat; workSmooth[r] = fiyat; workSmooth[r] = fiyat; iade(fiyat); }

//

//

//

//

//

__________________________________________________________

çift beta = 0.45*(uzunluk-1.0)/(0.45*(uzunluk-1.0)+2.0);

beta = 0.45*(uzunluk-1.0)/(0.45*(uzunluk-1.0)+2.0)

__________________________________________________________

çift alfa = MathPow(beta,hız);

alfa = beta^hız

__________________________________________________________

workSmooth[r] = fiyat+alfa*(workSmooth[r-1]-fiyat);

Filt0 = fiyat+alfa*(Filt0[1]-fiyat);

__________________________________________________________

workSmooth[r] = (fiyat - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1];

Filt1 = (fiyat - Filt0 )*(1-alpha)+alpha*Filt1[1]

__________________________________________________________

workSmooth[r] = workSmooth[r] + workSmooth[r];

Filt2 = Filtre0 + Filtre1

__________________________________________________________

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]

__________________________________________________________

dönüş(workSmooth[r]);

dönüş Filt4

Gördüğüm kadarıyla öyle olmalı, ancak prorealtime ile hiç çalışmadığımı unutmayın.