
Strategi ini adalah sistem pelacakan tren dinamis berdasarkan analisis teknis, yang digunakan untuk mengidentifikasi tren pasar, terutama menggunakan garis rata-rata ganda (rata-rata pergerakan sederhana 200 hari dan rata-rata pergerakan indeks 21 minggu). Strategi ini mengintegrasikan indikator relatif kuat (RSI) dan indikator tren rata-rata (ADX) sebagai filter momentum, dan dikombinasikan dengan amplitudo riil (ATR) untuk manajemen risiko dinamis, untuk menangkap tren naik dengan tepat dan mengendalikan risiko secara efektif.
Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:
Ini adalah strategi pelacakan tren yang dirancang secara rasional, logis dan jelas, yang lebih baik menyeimbangkan keuntungan dan risiko melalui penggunaan kombinasi beberapa indikator teknis. Strategi ini sangat dapat disesuaikan, cocok untuk mempertahankan efektivitasnya melalui pengoptimalan parameter dalam berbagai lingkungan pasar. Meskipun ada risiko keterlambatan tertentu, dengan mekanisme kontrol risiko yang baik, strategi secara keseluruhan menunjukkan stabilitas dan keandalan yang lebih baik.
/*backtest
start: 2022-02-09 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("BTCUSDT Daily - Enhanced Bitcoin Bull Market Support [CYRANO]", shorttitle="BTCUSDT Daily BULL MARKET", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)
// Inputs
smaLength = input.int(200, title="SMA Length (Bull Market)")
emaLength = input.int(147, title="EMA Length (21-Week Approximation)")
atrLength = input.int(14, title="ATR Length")
riskATR = input.float(2.0, title="ATR Multiplier for Stop Loss", step=0.1)
takeProfitPercent = input.float(10.0, title="Take Profit (%)", step=0.1)
rsiFilter = input.bool(true, title="Enable RSI Filter")
rsiLength = input.int(14, title="RSI Length")
adxFilter = input.bool(true, title="Enable ADX Filter")
adxThreshold = input.float(25, title="ADX Threshold")
// Date Range Filter
startDate = input(timestamp("2018-01-01 00:00 +0000"), title="Start Date")
endDate = input(timestamp("2069-12-31 00:00 +0000"), title="End Date")
inDateRange = true
// Moving Averages
sma200 = ta.sma(close, smaLength)
ema21w = ta.ema(close, emaLength)
// ATR Calculation
atr = ta.atr(atrLength)
stopLoss = close - (riskATR * atr)
takeProfit = close * (1 + takeProfitPercent / 100)
// RSI Filter
rsi = ta.rsi(close, rsiLength)
rsiCondition = rsiFilter ? rsi > 50 : true
// ADX Filter
[diplus, diminus, adx] = ta.dmi(14, 14)
adxCondition = adxFilter ? adx > adxThreshold : true
// Entry and Exit Conditions
buyCondition = inDateRange and close > sma200 and close > ema21w and rsiCondition and adxCondition
exitCondition = inDateRange and (close < sma200 or close < ema21w)
// Strategy Execution
if buyCondition
strategy.entry("BUY", strategy.long, stop=stopLoss, limit=takeProfit)
if exitCondition
strategy.close("BUY")
// Plot MAs
plot(sma200, title="200-Day SMA", color=color.blue, linewidth=2)
plot(ema21w, title="21-Week EMA", color=color.purple, linewidth=2)
// Background Highlight
bullColor = color.new(color.green, 80)
bearColor = color.new(color.red, 80)
bgcolor(close > sma200 and close > ema21w ? bullColor : bearColor, title="Bull Market Background")