
Ini adalah strategi pelacakan tren dua arah yang didasarkan pada SMMA (smooth moving average). Strategi ini memanfaatkan harga dan persilangan SMMA untuk menghasilkan sinyal overbought dan menggabungkan ATR dengan stop loss dinamis dan target keuntungan tetap untuk mengelola risiko dan keuntungan. Strategi ini dirancang dengan sederhana dan efektif, sesuai untuk perdagangan pelacakan tren pada periode waktu yang berbeda.
Inti dari strategi ini adalah untuk menangkap perubahan tren melalui 17 siklus SMMA dan persilangan harga. Ketika harga melewati SMMA, buka posisi overhead; Ketika harga melewati SMMA, buka posisi overhead. Manajemen keluar menggunakan tiga mekanisme: 1) Stop loss dinamis berbasis ATR, yang ditetapkan sebagai 0.75 kali ATR SMMA ke bawah; 2) target profit tetap, dengan overhead pada 1150 poin, dengan overhead pada 1500 poin; 3) reverse cross signal flat position.
Ini adalah strategi pelacakan tren yang dirancang secara rasional, menangkap tren melalui SMMA, menggunakan ATR untuk pengendalian risiko, dan dikombinasikan dengan pengelolaan pendapatan dengan target profit tetap. Logika strategi jelas, implementasinya sederhana, dan memiliki kemampuan operasi dan skalabilitas yang baik. Meskipun kinerja mungkin buruk di pasar yang bergolak, stabilitas dan adaptasi strategi dapat ditingkatkan lebih lanjut dengan arah optimasi yang disarankan.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMMA 17 Crossover Strategy (Long & Short, ATR SL & Fixed TP)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// 🚀 SMMA Calculation
smmaLength = 17
smma = 0.0
smma := na(smma[1]) ? ta.sma(close, smmaLength) : (smma[1] * (smmaLength - 1) + close) / smmaLength
// 📈 ATR Calculation (For Dynamic Stop-Loss)
atrLength = 14
atr = ta.rma(ta.tr(true), atrLength)
// 🔥 Long Entry Condition
longCondition = ta.crossover(close, smma) // ✅ Price crosses above SMMA
// 🔄 Long Exit Condition
longExit = ta.crossunder(close, smma) // ✅ Price crosses below SMMA
// 📉 ATR-Based Stop-Loss (Dynamic) for Long
longStopLoss = smma - (atr * 0.75) // ✅ Stop Loss below SMMA
// 🏆 Fixed Take Profit for Long (1150 Points)
var float longEntryPrice = na
var float longTakeProfit = na
if longCondition
longEntryPrice := close
longTakeProfit := longEntryPrice + 1150 // ✅ TP 1150 points above entry
// 🔥 Short Entry Condition
shortCondition = ta.crossunder(close, smma) // ✅ Price crosses BELOW SMMA (Short trade)
// 🔄 Short Exit Condition
shortExit = ta.crossover(close, smma) // ✅ Price crosses ABOVE SMMA (Close Short trade)
// 📉 ATR-Based Stop-Loss (Dynamic) for Short
shortStopLoss = smma + (atr * 0.75) // ✅ Stop Loss above SMMA
// 🏆 Fixed Take Profit for Short (1500 Points) - Updated from 2000
var float shortEntryPrice = na
var float shortTakeProfit = na
if shortCondition
shortEntryPrice := close
shortTakeProfit := shortEntryPrice - 1500 // ✅ TP 1500 points below entry (Updated)
// 📊 Plot SMMA (For Visualization)
plot(smma, title="SMMA (17)", color=color.blue)
// 🚀 Long Entry (Allow Multiple)
if longCondition
strategy.entry("Long", strategy.long)
// 🛑 Long Exit Conditions (Whichever Comes First)
strategy.exit("Long TP/SL", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
if longExit
strategy.close("Long")
// 🚀 Short Entry (Allow Multiple)
if shortCondition
strategy.entry("Short", strategy.short)
// 🛑 Short Exit Conditions (Whichever Comes First)
strategy.exit("Short TP/SL", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)
if shortExit
strategy.close("Short")