Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.

0

CrossAbove ve CrossBelow

Soruldu
Görüntülenme
987 görüntülenme
Durum
Çözüldü
Merhabalar,

Kendi yazdığım stratejimde 10 bar ve 40 bar için Ema indikatörünün CrossAbove ve CrossBelow fonksiyonu ile aşağı veya yukarı kesip kesmediğini kontrol ediyorum fakat her seferinde beklenen değeri döndürmüyor. Bazı hisselerde veriyor bazılarında vermiyor. Bazı hisselerde de bazen veriyor.

Kod yapım şöyledir :

ema1 = EMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, EmaPeriod1);   // EmaPeriod1 = 10 bar için

ema2 = EMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, EmaPeriod2); //EmaPeriod2 = 40 bar için

 

if (CrossBelow(ema1, ema2))

{

YukselenTrend = false;

}

else if (CrossAbove(ema1, ema2))

{

YukselenTrend = true;

}

 

Aynı şartı TradingView grafiklerinde de takip ediyorum. Orada yukarı kestiği halde CrossAbove(ema1, ema2) bana sürekli false sonucunu veriyor. Eğriler herhangi bir anda fiziksel olarak yukarı kestiğinde "true" sonucunu döndürmesi gerekir.

 

Ayrıca bu fonsiyonların ters sonuç verdilerini de gördüm. Örneğin şu yapıyı da kullanıyorum

tmov = TMOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, TillsonPeriod, TillsonA);

(CrossAbove(tmov, barData, OHLCType.Close, 0)

(CrossBelow(tmov, barData, OHLCType.Close, 0)

Burada CrossAbove fonsiyonu Tmov aşağı kırınca true sonucunu veriyor. CrossBelow da, Tmov yukarı kırınca true sonucu veriyor

Nerede hata yapıyor olabilirim?

Şimdiden teşekkürler
Paylaş

2 Cevap

1

Kabul edilen cevap

Merhaba

Kullandığınız örneklerde indikatörün hangi çizgisi olduğunu belirtmemişsiniz hata buradan kaynaklanıyor.

Doğru kullanım;

CrossAbove(ema1, ema2, 0, 0) yada

CrossBelow(ema1, ema2, 0, 0)

bu fonksiyonların indikatörün hangi çizgisini kullanacağı bilgisine ihtiyacı var ancak IQ ekibi bu parametreleri opsiyonel olarak işaretlemiş bu yüzden girmezseniz bu fonksiyon object olarak dönüş yapıyor ve if fonksiyonuda bunu false olarak algılıyor. diğer örnekte de muhtemel aynı sorun yaşanıyor

İyi günler.
BağlantıBayrakladüzenlendi · akucukdikerKendineMayonez263
1
İlk sorunuzda neden öyle oluyor anlayamadım ama orada cross yerine büyüktür küçüktür kullansanız belki sorununuz çözülür.

İkinci sorunuz için ise, cross fonksiyonunda yukarı veya aşağıya kesilecek değer ilk değerdir. Siz (CrossAbove(tmov, barData, OHLCType.Close, 0) kullanarak barların tmov'u yukarı kesmesini istiyorsunuz aslında, yani tmov'un aşağıda kalmasını, barların yukarıda olmasını yani yükleliş olan durumu istiyorsunuz. Dolayısıyla barData'yı tmov'dan önce yazmanız lazım. Veya above-below kısımlarını ters kullanmanız lazım. Yani barData tmov'u yukarı kesince demek yerine tmov barData'yı aşağı kesince diyerek yükselişi tanımlamış olursunuz.
BağlantıBayraklaPythius298

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol