Untitled
unknown
plain_text
9 days ago
2.6 kB
1
Indexable
Never
//@version=5 indicator("Agirlikli EMA ve Ayarlanabilir Band", overlay=true, max_bars_back=1000) // Bant genişliğini yüzde olarak belirlemek için input band_genisligi_yuzde = input.float(1.0, title="Bant Genişliği (%)", minval=0.01, step=0.01) // Kullanıcının kaç bar geriye bakacağını belirleyebileceği input lookback_input = input.int(1000, title="Geriye Bakılacak Bar Sayısı", minval=1) lookback = math.min(lookback_input, bar_index) // Temasları saymak için fonksiyon (hem low hem de high değerlerini kullanarak) temasSay(src, geriye_bak) => var float toplam_temas = 0.0 // Bant genişliği hesaplama band_genisligi = (band_genisligi_yuzde / 100) * src // Eğer low veya high değeri src'nin bandı içindeyse temas say temas = ((low <= src + band_genisligi) and (low >= src - band_genisligi)) or ((high <= src + band_genisligi) and (high >= src - band_genisligi)) ? 1 : 0 toplam_temas := toplam_temas + temas bar_index >= geriye_bak ? toplam_temas - nz(toplam_temas[geriye_bak]) : na // EMA'ları tanımla ema13 = ta.ema(close, 13) ema21 = ta.ema(close, 21) ema34 = ta.ema(close, 34) ema55 = ta.ema(close, 55) ema89 = ta.ema(close, 89) ema144 = ta.ema(close, 144) // Kullanıcının belirlediği bar sayısına göre her EMA için temasları say temas13 = temasSay(ema13, lookback) temas21 = temasSay(ema21, lookback) temas34 = temasSay(ema34, lookback) temas55 = temasSay(ema55, lookback) temas89 = temasSay(ema89, lookback) temas144 = temasSay(ema144, lookback) // Toplam temasları hesapla toplam_temas = temas13 + temas21 + temas34 + temas55 + temas89 + temas144 // Sıfıra bölmeyi önlemek için kontrol toplam_temas := toplam_temas == 0 ? 1 : toplam_temas // Temaslara göre ağırlıkları hesapla a1 = temas13 / toplam_temas a2 = temas21 / toplam_temas a3 = temas34 / toplam_temas a4 = temas55 / toplam_temas a5 = temas89 / toplam_temas a6 = temas144 / toplam_temas // Ağırlıklı EMA'yı hesapla agirlikli_ema = a1 * ema13 + a2 * ema21 + a3 * ema34 + a4 * ema55 + a5 * ema89 + a6 * ema144 // Ağırlıklı EMA'yı çiz plot(agirlikli_ema, color=color.yellow, title="Optimize EMA") // Bant genişliğini hesapla ve bantları çiz band_genisligi = (band_genisligi_yuzde / 100) * agirlikli_ema ust_band = agirlikli_ema + band_genisligi alt_band = agirlikli_ema - band_genisligi // Bantları çiz p1 = plot(ust_band, color=color.blue, title="Üst Band") p2 = plot(alt_band, color=color.blue, title="Alt Band") // Bantların arasını doldur fill(p1, p2, color=color.new(color.blue, 90))
Leave a Comment