//@version=5
strategy("EMA Yüzde Filtre Stratejisi", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, commission_type=strategy.commission.percent, commission_value=0.1)
// === EMA50 Yüzde Filtresi Ayarları ===
ema50Length = input.int(50, title="EMA Periyot", minval=1)
ema50Percent = input.float(2.0, title="EMA Yüzde Bandı (%)", minval=0.1, step=0.1)
// EMA50 hesaplama
ema50Value = ta.ema(close, ema50Length)
// EMA50 yüzde bantları hesaplama
ema50UpperBand = ema50Value * (1 + ema50Percent / 100)
ema50LowerBand = ema50Value * (1 - ema50Percent / 100)
// Alım/Satım koşulları
longCondition = ta.crossover(close, ema50LowerBand)
shortCondition = ta.crossunder(close, ema50UpperBand)
// Pozisyon boyutu ayarları
positionSize = input.float(1, title="Pozisyon Boyutu", minval=0.1)
// İşlem girişleri
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSize)
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSize)
// Çıkış stratejisi (ters sinyalde çıkış)
strategy.close("Long", when=shortCondition)
strategy.close("Short", when=longCondition)
// Görselleştirme
plot(ema50Value, title="EMA", color=color.blue, linewidth=2)
plot(ema50UpperBand, title="EMA Üst Band", color=color.green, linewidth=1, style=plot.style_circles)
plot(ema50LowerBand, title="EMA Alt Band", color=color.red, linewidth=1, style=plot.style_circles)
// Alım/Satım sinyallerini göster
plotshape(series=longCondition, title='Al Sinyali', location=location.belowbar, color=color.green, style=shape.labelup, text='AL', textcolor=color.white)
plotshape(series=shortCondition, title='Sat Sinyali', location=location.abovebar, color=color.red, style=shape.labeldown, text='SAT', textcolor=color.white)
// EMA değerlerini gösteren label'lar
var label emaLabel = na
var label upperLabel = na
var label lowerLabel = na
if barstate.islast
emaLabel := label.new(bar_index, ema50Value, "EMA" + str.tostring(ema50Length) + ": " + str.tostring(ema50Value, "#.##"),
style=label.style_label_left, color=color.new(color.blue, 70), textcolor=color.white, yloc=yloc.price)
upperLabel := label.new(bar_index, ema50UpperBand, "Üst Band: " + str.tostring(ema50UpperBand, "#.##"),
style=label.style_label_left, color=color.new(color.green, 70), textcolor=color.white, yloc=yloc.price)
lowerLabel := label.new(bar_index, ema50LowerBand, "Alt Band: " + str.tostring(ema50LowerBand, "#.##"),
style=label.style_label_left, color=color.new(color.red, 70), textcolor=color.white, yloc=yloc.price)
// Bilgi paneli
var table infoTable = table.new(position=position.top_right, columns=2, rows=4, border_width=1)
if barstate.islast
table.cell(infoTable, 0, 0, "EMA", bgcolor=color.blue)
table.cell(infoTable, 1, 0, str.tostring(ema50Value, "#.##"), bgcolor=color.blue)
table.cell(infoTable, 0, 1, "Üst Band", bgcolor=color.green)
table.cell(infoTable, 1, 1, str.tostring(ema50UpperBand, "#.##"), bgcolor=color.green)
table.cell(infoTable, 0, 2, "Alt Band", bgcolor=color.red)
table.cell(infoTable, 1, 2, str.tostring(ema50LowerBand, "#.##"), bgcolor=color.red)
table.cell(infoTable, 0, 3, "Band Genişliği", bgcolor=color.gray)
table.cell(infoTable, 1, 3, str.tostring(ema50Percent, "#.#") + "%", bgcolor=color.gray)
Bu kod, TradingView için Pine Script 5 dilinde yazılmış bir EMA (Exponential Moving Average) Yüzde Filtre Stratejisi'dir. İşlevlerini şöyle açıklayabilirim:
Fiyatın EMA50 etrafında belirlenen yüzde bantlarını kırdığında alım/satım sinyali üretir.
EMA50 hesaplanır (EMA Değiştirilebilir)
EMA50'nin %2 (veya kullanıcının belirlediği yüzde) üstünde ve altında iki band oluşturulur
Alım Sinyali: Fiyat alt bandı yukarı yönlü kırdığında
Satım Sinyali: Fiyat üst bandı aşağı yönlü kırdığında
AL: close > EMA Alt Bandı (yukarı kırılım)
SAT: close < EMA Üst Bandı (aşağı kırılım)
Long Pozisyonu Kapat: Satım sinyali geldiğinde
Short Pozisyonu Kapat: Alım sinyali geldiğinde
Yani her yeni sinyal, ters yöndeki mevcut pozisyonu kapatır
EMA50 çizgisi (mavi)
Üst band (yeşil, noktalı)
Alt band (kırmızı, noktalı)
Al/Sat sinyal işaretleri (şekil ve etiketler)
Son barda değer etiketleri
Sağ üstte bilgi tablosu (EMA, band değerleri, yüzde genişlik)
EMA periyodu (varsayılan 50)
Band genişliği yüzdesi (varsayılan %2)
Pozisyon büyüklüğü
Komisyon oranı (varsayılan %0.1)
Trend başlangıçlarında, fiyatın EMA'dan belirli bir mesafe uzaklaşmasını bekleyerek yanlış sinyalleri filtrelemek. Klasik EMA crossover stratejilerine göre daha az sinyal üretir, ancak daha güçlü hareketleri yakalamayı hedefler.
Bu strateji trend takipçisi olarak kullanılır. Yükseliş trendinde alım, düşüş trendinde satım sinyalleri verir. Band genişliği arttıkça sinyal sayısı azalır, filtrelenme artar.