//@version=5
strategy("SMA & ATR Band Stratejisi V5 + TDO + TR + S/L + Trailing Stop", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// User Inputs
length = input.int(100, title="SMA Length")
atrMultiplier = input.float(3, title="ATR Multiplier")
amountPerTrade = input.float(1, title="Alım Miktarı")
startDate = input.time(title="Başlangıç Tarihi", defval=timestamp("2023-01-01 00:00"), tooltip="Bu tarihten itibaren verileri göster")
enableTrailing = input.bool(true, title=" Trailing Aktif", tooltip="Açık/Kapalı seçeneği")
trailingStep = input.float(0.5, title="Trailing Adımı", tooltip="Fiyat zirveden bu yüzde oranında düşerse pozisyonu kapatın")
useStopLoss = input.bool(title="Stop Loss Kullan", defval=false)
stopLossPercentage = input.float(2.0, title="Stop Loss (%)", tooltip="Stop Loss Yüzdesi")
enableTrailingStop = input.bool(true, title="Trailing Stop Aktif", tooltip="Karlı pozisyonu takip et ve belirli yüzdeden çık")
trailingStopPercentage = input.float(1.0, title="Trailing Stop (%)", tooltip="Zirveden bu yüzde düşüşte pozisyonu kapat")
// SMA and ATR calculations
smaValue = ta.sma(close, length)
atrValue = ta.atr(length)
// Band calculations
upper1 = smaValue + atrMultiplier * atrValue
upper2 = smaValue + 2 * atrMultiplier * atrValue
upper3 = smaValue + 3 * atrMultiplier * atrValue
lower1 = smaValue - atrMultiplier * atrValue
lower2 = smaValue - 2 * atrMultiplier * atrValue
lower3 = smaValue - 3 * atrMultiplier * atrValue
// Plot bands
plot(upper3, color=color.red, title="Upper Band 3")
plot(upper2, color=color.orange, title="Upper Band 2")
plot(upper1, color=color.yellow, title="Upper Band 1")
plot(lower1, color=color.green, title="Lower Band 1")
plot(lower2, color=color.lime, title="Lower Band 2")
plot(lower3, color=color.teal, title="Lower Band 3")
plot(smaValue, color=color.blue, title="SMA")
// Buy/Sell signals
buySignal = ta.crossover(close, lower3)
sellSignal = ta.crossunder(close, upper3)
// Variables for tracking
var float totalShares = 0
var int buyCount = 0
var int sellCount = 0
var float profitSinceStart = 0.0
var float trailingSellPrice = na
var float trailingStopLevel = na // Trailing Stop seviyesini takip etmek için
// Trade Logic
if buySignal and time >= startDate
strategy.entry("Buy", strategy.long, qty=amountPerTrade)
totalShares := amountPerTrade
buyCount += 1
trailingStopLevel := na // Yeni işlem açıldığında Trailing Stop seviyesini sıfırla
if sellSignal and time >= startDate
strategy.close("Buy")
totalShares := 0
sellCount += 1
if enableTrailing
trailingSellPrice := close + trailingStep
trailingStopLevel := na // İşlem kapandığında Trailing Stop seviyesini sıfırla
// Re-Entry işlemi için kapatma koşulu
if strategy.position_size > 0 and ta.crossover(close, upper3)
strategy.close("Buy")
totalShares := 0
sellCount += 1
trailingStopLevel := na // İşlem kapandığında Trailing Stop seviyesini sıfırla
// Trailing Logic
if enableTrailing and not na(trailingSellPrice) and close > trailingSellPrice and totalShares > 0 and time >= startDate
strategy.close("Buy")
profitSinceStart += strategy.netprofit
totalShares := 0
trailingSellPrice := na
trailingStopLevel := na // İşlem kapandığında Trailing Stop seviyesini sıfırla
// Stop Loss Logic
var float stopLossPrice = na
if useStopLoss and strategy.position_size > 0
stopLossPrice := strategy.position_avg_price * (1 - stopLossPercentage / 100)
strategy.exit("Stop Loss", stop=stopLossPrice)
// Trailing Stop Logic
if enableTrailingStop and strategy.position_size > 0
// Zirve fiyatını güncelle
if na(trailingStopLevel) or close > trailingStopLevel
trailingStopLevel := close
// Trailing Stop seviyesini hesapla
trailingStopExitPrice = trailingStopLevel * (1 - trailingStopPercentage / 100)
// Eğer fiyat Trailing Stop seviyesine düşerse pozisyonu kapat
if close <= trailingStopExitPrice
strategy.close("Buy")
totalShares := 0
sellCount += 1
trailingStopLevel := na // İşlem kapandığında Trailing Stop seviyesini sıfırla
// Plot Stop Loss Line
plot(useStopLoss and strategy.position_size > 0 ? stopLossPrice : na, color=color.red, title="Stop Loss Line", linewidth=2, style=plot.style_linebr)
// Plot Trailing Stop Line
plot(enableTrailingStop and strategy.position_size > 0 and not na(trailingStopLevel) ? trailingStopLevel * (1 - trailingStopPercentage / 100) : na, color=color.purple, title="Trailing Stop Line", linewidth=2, style=plot.style_linebr)
// Table Display
var table myTable = table.new(position=position.bottom_left, columns=10, rows=7, border_width=1, bgcolor=color.new(color.purple, 80))
if time >= startDate
table.cell(myTable, 0, 0, "İşlemler", bgcolor=color.new(color.blue, 60), text_color=color.white)
table.cell(myTable, 0, 1, "Değerler", bgcolor=color.new(color.blue, 60), text_color=color.white)
table.cell(myTable, 1, 0, "Başlangıç Tarihi")
table.cell(myTable, 1, 1, str.format("{0,date,dd/MM/yyyy}", startDate))
table.cell(myTable, 2, 0, "Alım Miktarı")
table.cell(myTable, 2, 1, str.tostring(buyCount))
table.cell(myTable, 3, 0, "Satım Miktarı")
table.cell(myTable, 3, 1, str.tostring(sellCount))
table.cell(myTable, 4, 0, "Toplam İşlem")
table.cell(myTable, 4, 1, str.tostring(buyCount + sellCount))
table.cell(myTable, 5, 0, "Net Kar", bgcolor=profitSinceStart > 0 ? color.new(color.green, 50) : color.new(color.red, 50))
table.cell(myTable, 5, 1, str.tostring(profitSinceStart, "#.##"), bgcolor=profitSinceStart > 0 ? color.new(color.green, 50) : color.new(color.red, 50))
table.cell(myTable, 6, 0, "Açık Pozisyon")
table.cell(myTable, 6, 1, str.tostring(totalShares, "#.##"))
// Visualize signals
plotshape(buySignal, style=shape.labelup, color=color.green, title="Buy Signal", location=location.belowbar, text="BUY")
plotshape(sellSignal, style=shape.labeldown, color=color.red, title="Sell Signal", location=location.abovebar, text="SELL")
Bu kod, TradingView platformunda çalışan Pine Script 5 ile yazılmış gelişmiş bir trend izleme stratejisidir. İşlevlerini şu şekilde açıklayabilirim:
SMA (Basit Hareketli Ortalama) ve ATR (Ortalama True Range) bantları kullanarak piyasa volatilitesine göre alım-satım sinyalleri üretir.
Alt bantlara (özellikle lower3) dokunulduğunda AL, üst bantlara (özellikle upper3) dokunulduğunda SAT sinyali verir.
SMA çevresinde ATR ile hesaplanan 3 üst ve 3 alt bant çizer
Bantlar: upper3, upper2, upper1, lower1, lower2, lower3
Her bant farklı bir renkte görselleştirilir
ALIM: Fiyat lower3 bandının ÜZERİNE çıktığında
SATIM: Fiyat upper3 bandının ALTINA düştüğünde
Re-Entry: Açık pozisyon varken fiyat upper3'ü geçerse pozisyon kapatılır
Stop Loss: İsteğe bağlı sabit yüzdesel stop loss
Trailing Stop: Karlı pozisyonda zirveden belirli yüzde düşüşte otomatik çıkış
Trailing (Takip Eden Dur): Belirli bir yükselişten sonra düşüşte pozisyon kapatma
Bantların grafik üzerinde çizilmesi
AL/SAT sinyallerinin etiketlerle gösterilmesi
Stop Loss ve Trailing Stop çizgilerinin görüntülenmesi
Alt kısımda detaylı işlem tablosu:
Alım/Satım sayıları
Net kar
Açık pozisyon bilgisi
Başlangıç tarihi
SMA uzunluğu
ATR çarpanı
İşlem başına miktar
Başlangıç tarihi filtreleme
Risk yönetimi parametreleri
Trend dönüşümlerini erken yakalamak
Volatilite artışında daha geniş, düşük volatilitede daha dar bantlarla çalışmak
Çoklu risk yönetimi araçlarıyla korunmalı işlem yapmak
Tüm işlem istatistiklerini anlık takip edebilmek
Bu strateji özellikle trend takip eden ve ortalama geri dönüş mantığını birleştiren bir yaklaşıma sahiptir. Hem trend başlangıcını (band kırılımları) hem de aşırı alım/satım bölgelerini (band uçları) kullanarak işlem yapar.