
Ini adalah strategi pelacakan tren berdasarkan rentang rata-rata nyata (ATR) yang dirancang untuk menangkap perdagangan probabilitas tinggi dengan menggabungkan beberapa indikator teknis. Strategi ini menggabungkan filter ATR, indikator supertrend, indeks moving average (EMA) dan indeks moving average sederhana (SMMA), band tren, indikator RSI yang relatif kuat, dan sistem stop loss dinamis untuk memberikan metode perdagangan yang komprehensif dan fleksibel.
Prinsip-prinsip inti dari strategi ini didasarkan pada sinergi dari beberapa indikator teknis:
Identifikasi tren: Menggunakan indikator supertrend (parameter: faktor 2, panjang 5) dan 50 hari EMA dan 8 hari SMMA untuk menentukan arah tren pasar. Tren dikodekan dengan warna:
ATR Smart Filter: Ekspansi volatilitas terdeteksi melalui 14 siklus ATR dan 50 siklus rata-rata bergerak sederhana, hanya melakukan perdagangan ketika ATR naik atau di atas SMA 101% untuk memastikan hanya masuk dalam tren kuat.
Syarat masuk:
Stop loss dan stop loss dinamis:
Ini adalah strategi pelacakan tren canggih yang menyediakan alat perdagangan yang fleksibel dan kuat bagi para pedagang melalui sinkronisasi multi-indikator dan manajemen risiko dinamis. Pemantauan dan pengoptimalan berkelanjutan adalah kunci untuk menerapkan strategi ini dengan sukses.
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Optimized ATR-Based Trend Strategy v6 (Fixed Trend Capture)", overlay=true)
// 🔹 Input parameters
lengthSMMA = input(8, title="SMMA Length")
lengthEMA = input(50, title="EMA Length")
supertrendFactor = input(2.0, title="Supertrend Factor")
supertrendLength = input(5, title="Supertrend Length")
atrLength = input(14, title="ATR Length")
atrSmoothing = input(50, title="ATR Moving Average Length")
atrMultiplierTP = input.float(5.0, title="ATR Multiplier for Take-Profit", minval=1.0, step=0.5)
atrMultiplierTSL = input.float(3.5, title="ATR Multiplier for Trailing Stop-Loss", minval=1.0, step=0.5) // 🔹 Increased to ride trends
atrStopMultiplier = input.float(0.8, title="ATR Stop Multiplier", minval=0.5, step=0.1)
breakEvenMultiplier = input.float(2.0, title="Break-Even Trigger ATR Multiplier", minval=1.0, step=0.1)
rsiLength = input(14, title="RSI Length")
// 🔹 Indicator calculations
smma8 = ta.sma(ta.sma(close, lengthSMMA), lengthSMMA)
ema50 = ta.ema(close, lengthEMA)
// 🔹 Supertrend Calculation
[superTrend, _] = ta.supertrend(supertrendFactor, supertrendLength)
// 🔹 Supertrend Conditions
isBullishSupertrend = close > superTrend
isBearishSupertrend = close < superTrend
// 🔹 ATR Calculation for Smarter Filtering
atrValue = ta.atr(atrLength)
atrMA = ta.sma(atrValue, atrSmoothing)
atrRising = ta.rising(atrValue, 3) // 🔹 More sensitive ATR detection
isTrending = atrValue > atrMA * 1.01 or atrRising // 🔹 Loosened ATR filter
// 🔹 RSI Calculation
rsi = ta.rsi(close, rsiLength)
// 🔹 RSI Conditions (More Flexible)
isRSIBullish = rsi > 45 // 🔹 Lowered to capture early trends
isRSIBearish = rsi < 45
// 🔹 TP Lock Mechanism
var bool tpHit = false
if strategy.position_size == 0 and strategy.closedtrades > 0
tpHit := true
// 🔹 Supertrend Flip Detection (Resumes Trading After Trend Change)
trendFlip = (isBullishSupertrend and not isBullishSupertrend[1]) or (isBearishSupertrend and not isBearishSupertrend[1])
if trendFlip
tpHit := false
// 🔹 Entry Conditions
bullishEntry = close > ema50 and isBullishSupertrend and isRSIBullish and isTrending and not tpHit
bearishEntry = close < ema50 and isBearishSupertrend and isRSIBearish and isTrending and not tpHit
// 🔹 Dynamic Take-Profit, Stop-Loss, and Break-Even Stop
longTakeProfit = close + (atrValue * atrMultiplierTP)
shortTakeProfit = close - (atrValue * atrMultiplierTP)
longTrailStop = atrValue * atrMultiplierTSL
shortTrailStop = atrValue * atrMultiplierTSL
// ✅ Adjusted SL to Reduce Drawdown
longStopLoss = close - (atrValue * atrMultiplierTSL * atrStopMultiplier)
shortStopLoss = close + (atrValue * atrMultiplierTSL * atrStopMultiplier)
// ✅ Break-Even Stop Trigger (More Room for Trends)
longBreakEven = strategy.position_avg_price + (atrValue * breakEvenMultiplier)
shortBreakEven = strategy.position_avg_price - (atrValue * breakEvenMultiplier)
// 🔹 Strategy Execution (Fixed Take-Profit & Stop-Loss)
if (bullishEntry)
strategy.entry("Buy", strategy.long)
strategy.exit("TSL/TP", from_entry="Buy", stop=longStopLoss, trail_offset=longTrailStop, limit=longTakeProfit)
strategy.exit("BreakEven", from_entry="Buy", stop=longBreakEven)
if (bearishEntry)
strategy.entry("Sell", strategy.short)
strategy.exit("TSL/TP", from_entry="Sell", stop=shortStopLoss, trail_offset=shortTrailStop, limit=shortTakeProfit)
strategy.exit("BreakEven", from_entry="Sell", stop=shortBreakEven)
// 🔹 Trend Band
trendColor = isBullishSupertrend and smma8 > ema50 and close > ema50 ? color.green :
isBearishSupertrend and smma8 < ema50 and close < ema50 ? color.red : color.gray
fill(plot(smma8, color=color.new(trendColor, 60), title="8 SMMA Band"),
plot(ema50, color=color.new(trendColor, 60), title="50 EMA Band"),
color=color.new(trendColor, 80), title="Trend Band")
// 🔹 Supertrend Line
plot(superTrend, color=color.gray, title="Supertrend", style=plot.style_line)