Strategi ini adalah sistem perdagangan yang menggabungkan Indeks Kekuatan Relatif (RSI) dan Rata-rata Bergerak Sederhana (SMA). Strategi ini mengidentifikasi arah tren pasar menggunakan rata-rata bergerak sambil mengkonfirmasi momentum dengan RSI, mengeksekusi perdagangan ketika tren dan momentum sejajar. Strategi ini mencakup mekanisme stop-loss dan take-profit yang komprehensif untuk pengendalian risiko yang efektif.
Logika inti didasarkan pada kombinasi dua indikator teknis:
Logika Generasi Sinyal Trading:
Pengendalian risiko menggunakan tingkat stop loss dan take profit berdasarkan persentase, yang ditetapkan sebagai persentase tetap dari harga masuk.
Strategi ini membangun sistem perdagangan yang jelas secara logis dan dikendalikan risiko dengan menggabungkan indikator tren dan momentum. Meskipun risiko yang melekat ada, strategi menunjukkan kepraktisan yang baik melalui pengaturan parameter yang tepat dan pengendalian risiko. Optimasi masa depan berfokus pada penyesuaian parameter dinamis, pengakuan lingkungan pasar, dan peningkatan kualitas sinyal, berpotensi meningkatkan stabilitas dan profitabilitas strategi.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © raiford87 //@version=6 strategy("RSI + MA Trend Strategy (v6)", shorttitle="RSI_MA_Trend_v6", overlay=true, initial_capital=50000, default_qty_type=strategy.fixed, default_qty_value=1) // ───────────────────────────────────────────────────────────────────────────────────── // 1. USER INPUTS // ───────────────────────────────────────────────────────────────────────────────────── maLength = input.int(50, "Moving Average Length") rsiLength = input.int(14, "RSI Length") rsiBuyLevel = input.int(55, "RSI > X for Buy", minval=1, maxval=99) rsiSellLevel = input.int(45, "RSI < X for Sell", minval=1, maxval=99) stopLossPerc = input.float(1.0, "Stop Loss %", minval=0.1) takeProfitPerc = input.float(2.0, "Take Profit %", minval=0.1) // ───────────────────────────────────────────────────────────────────────────────────── // 2. INDICATOR CALCULATIONS // ───────────────────────────────────────────────────────────────────────────────────── maValue = ta.sma(close, maLength) rsiVal = ta.rsi(close, rsiLength) // Trend conditions bullTrend = close > maValue bearTrend = close < maValue // RSI conditions rsiBull = rsiVal > rsiBuyLevel rsiBear = rsiVal < rsiSellLevel // ───────────────────────────────────────────────────────────────────────────────────── // 3. ENTRY CONDITIONS // ───────────────────────────────────────────────────────────────────────────────────── longCondition = bullTrend and rsiBull shortCondition = bearTrend and rsiBear if longCondition strategy.entry("RSI MA Long", strategy.long) if shortCondition strategy.entry("RSI MA Short", strategy.short) // ───────────────────────────────────────────────────────────────────────────────────── // 4. STOP LOSS & TAKE PROFIT // ───────────────────────────────────────────────────────────────────────────────────── stopLossLevel = stopLossPerc * 0.01 takeProfitLevel = takeProfitPerc * 0.01 if strategy.position_size > 0 stopPriceLong = strategy.position_avg_price * (1 - stopLossLevel) tpPriceLong = strategy.position_avg_price * (1 + takeProfitLevel) strategy.exit("Exit Long", from_entry="RSI MA Long", stop=stopPriceLong, limit=tpPriceLong) if strategy.position_size < 0 stopPriceShort = strategy.position_avg_price * (1 + stopLossLevel) tpPriceShort = strategy.position_avg_price * (1 - takeProfitLevel) strategy.exit("Exit Short", from_entry="RSI MA Short", stop=stopPriceShort, limit=tpPriceShort) // ───────────────────────────────────────────────────────────────────────────────────── // 5. PLOT SIGNALS & LEVELS // ───────────────────────────────────────────────────────────────────────────────────── plot(maValue, color=color.yellow, linewidth=2, title="Moving Average") plotchar(longCondition, title="Long Signal", char='▲', location=location.belowbar, color=color.green, size=size.tiny) plotchar(shortCondition, title="Short Signal", char='▼', location=location.abovebar, color=color.red, size=size.tiny) // Plot Stop & TP lines posIsLong = strategy.position_size > 0 posIsShort = strategy.position_size < 0 plotStopLong = posIsLong ? strategy.position_avg_price * (1 - stopLossLevel) : na plotTpLong = posIsLong ? strategy.position_avg_price * (1 + takeProfitLevel): na plotStopShort= posIsShort? strategy.position_avg_price * (1 + stopLossLevel) : na plotTpShort = posIsShort? strategy.position_avg_price * (1 - takeProfitLevel): na plot(plotStopLong, color=color.red, linewidth=2, style=plot.style_line, title="Stop Loss Long") plot(plotTpLong, color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Long") plot(plotStopShort, color=color.red, linewidth=2, style=plot.style_line, title="Stop Loss Short") plot(plotTpShort, color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Short")