
Strategi ini adalah strategi tracking stop loss yang dinamis berdasarkan indikator ATR (Average True Range). Strategi ini secara dinamis menyesuaikan posisi stop loss melalui nilai ATR dan mengkonfirmasi sinyal perdagangan yang digabungkan dengan EMA. Strategi ini mendukung manajemen posisi yang fleksibel, yang dapat menyesuaikan jumlah jual beli sesuai dengan lingkungan pasar yang berbeda dan jenis perdagangan.
Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:
Strategi ini, dengan menggabungkan indikator ATR dan EMA rata-rata, membangun sistem tracking stop loss yang dinamis dan andal. Keuntungannya adalah kemampuan untuk beradaptasi dengan fluktuasi pasar, memiliki mekanisme manajemen risiko yang baik, sambil mempertahankan fleksibilitas operasi. Meskipun ada beberapa risiko yang melekat, tetapi dengan terus-menerus mengoptimalkan dan menyempurnakan, strategi ini diharapkan dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='ADET GİRMELİ Trend İz Süren Stop Strategy', overlay=true, overlay=true,default_qty_type = strategy.fixed, default_qty_value = 1)
// Inputs
a = input(9, title='Key Value. "This changes the sensitivity"')
c = input(3, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')
xATR = ta.atr(c)
nLoss = a * xATR
src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close
xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2
pos = 0
iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop
// Alım ve Satım Sinyalleri
buySignal = src > xATRTrailingStop and above
sellSignal = src < xATRTrailingStop and below
// Kullanıcı girişi
sell_quantity = input.int(1, title="Sell Quantity", minval=1)
buy_quantity = input.int(1, title="Buy Quantity", minval=1)
// Portföy miktarı (örnek simülasyon verisi)
var portfolio_quantity = 0
// Sinyal üretimi (örnek sinyal, gerçek stratejinizle değiştirin)
indicator_signal = (src > xATRTrailingStop and above) ? "buy" :
(src < xATRTrailingStop and below) ? "sell" : "hold"
// Şartlara göre al/sat
if indicator_signal == "buy" and portfolio_quantity < buy_quantity
strategy.entry("Buy Order", strategy.long, qty=buy_quantity)
portfolio_quantity := portfolio_quantity + buy_quantity
if indicator_signal == "sell" and portfolio_quantity >= sell_quantity
strategy.close("Buy Order", qty=sell_quantity)
portfolio_quantity := portfolio_quantity - sell_quantity
// Plot buy and sell signals
plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
// Bar coloring
barcolor(barbuy ? color.rgb(6, 250, 14) : na)
barcolor(barsell ? color.red : na)
// Alerts
alertcondition(buy, 'UT Long', 'UT Long')
alertcondition(sell, 'UT Short', 'UT Short')
// Strategy Entry and Exit
if buy
strategy.entry('Long', strategy.long)
if sell
strategy.entry('Short', strategy.short)
// Optional Exit Conditions
if sell
strategy.close('Long')
if buy
strategy.close('Short')