Sumber daya yang dimuat... Pemuatan...

RSI Dinamis Stop-Loss Strategi Perdagangan Cerdas

Penulis:ChaoZhang, Tanggal: 2024-11-12 11:39:06
Tag:RSISMAATR

img

Gambaran umum

Strategi ini adalah sistem perdagangan stop-loss dinamis berdasarkan indikator RSI, menggabungkan indikator SMA dan ATR untuk mengoptimalkan keputusan perdagangan. Strategi ini menggunakan pendekatan take-profit multi-level dengan penutupan posisi bergaya piramida untuk memaksimalkan pengembalian sambil menggunakan stop-loss dinamis ATR untuk pengendalian risiko. Strategi ini memiliki kemampuan beradaptasi yang tinggi dan secara otomatis menyesuaikan parameter perdagangan berdasarkan volatilitas pasar.

Prinsip Strategi

Strategi ini terutama menggunakan kondisi oversold RSI (RSI<30) sebagai sinyal masuk sementara mengharuskan harga berada di atas rata-rata bergerak 200 hari untuk memastikan uptrend.

  1. Kondisi masuk: RSI di bawah 30 dan harga di atas SMA200
  2. Manajemen posisi: 75% modal per perdagangan
  3. Stop-loss: Stop dinamis berdasarkan 1,5x ATR
  4. Take-profit: Tiga tingkat pada 5%, 10%, 15%, menutup 33%, 66%, dan 100% masing-masing

Keuntungan Strategi

  1. Manajemen risiko dinamis: adaptasi ATR terhadap volatilitas pasar
  2. Mengambil keuntungan secara bertahap: Mengurangi gangguan emosional dan meningkatkan kemungkinan keuntungan
  3. Konfirmasi tren: Menggunakan rata-rata bergerak untuk menyaring sinyal palsu
  4. Manajemen uang: Pengukuran posisi berdasarkan persentase untuk ukuran akun yang berbeda
  5. Optimalisasi Komisi: Mempertimbangkan biaya perdagangan untuk implementasi praktis

Risiko Strategi

  1. Lag rata-rata bergerak dapat menunda entri
  2. RSI oversold tidak menjamin pembalikan
  3. Ukuran posisi yang besar dapat menyebabkan penarikan signifikan
  4. Keluar parsial yang sering dapat meningkatkan biaya perdagangan Risiko ini dapat dikelola melalui penyesuaian parameter dan filter tambahan.

Arahan Optimasi

  1. Tambahkan sinyal konfirmasi volume
  2. Menggabungkan indikator kekuatan tren
  3. Mengoptimalkan rasio keuntungan
  4. Tambahkan filter kerangka waktu
  5. Pertimbangkan ukuran posisi yang beradaptasi volatilitas

Ringkasan

Strategi ini menggabungkan indikator teknis dengan manajemen risiko dinamis untuk menciptakan sistem perdagangan yang komprehensif. Kekuatannya terletak pada kemampuan beradaptasi dan risiko terkendali, meskipun optimasi parameter berdasarkan kondisi pasar masih diperlukan. Strategi ini cocok untuk investor jangka menengah hingga panjang dan berfungsi sebagai dasar yang kuat untuk perdagangan sistematis.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA/4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef

Berkaitan

Lebih banyak