Sumber dimuat naik... memuat...

RSI Strategi Perdagangan Pintar Stop-Loss Dinamik

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

img

Ringkasan

Strategi ini adalah sistem perdagangan stop-loss dinamik berdasarkan penunjuk RSI, menggabungkan penunjuk SMA dan ATR untuk mengoptimumkan keputusan perdagangan. Ia menggunakan pendekatan mengambil keuntungan pelbagai peringkat dengan penutupan kedudukan gaya piramid untuk memaksimumkan pulangan sambil menggunakan stop-loss dinamik ATR untuk kawalan risiko. Strategi ini mempunyai daya adaptasi yang tinggi dan menyesuaikan parameter perdagangan secara automatik berdasarkan turun naik pasaran.

Prinsip Strategi

Strategi ini terutamanya menggunakan keadaan oversold RSI (RSI<30) sebagai isyarat kemasukan sambil memerlukan harga berada di atas purata bergerak 200 hari untuk memastikan aliran menaik. Ia melaksanakan tiga sasaran mengambil keuntungan (5%, 10%, 15%) digabungkan dengan stop-loss dinamik ATR. Khususnya:

  1. Syarat kemasukan: RSI di bawah 30 dan harga di atas SMA200
  2. Pengurusan kedudukan: 75% modal setiap dagangan
  3. Stop-loss: Stop dinamik berdasarkan 1.5x ATR
  4. Mengambil keuntungan: Tiga tahap pada 5%, 10%, 15%, menutup 33%, 66% dan 100% masing-masing

Kelebihan Strategi

  1. Pengurusan risiko dinamik: penyesuaian ATR kepada turun naik pasaran
  2. Mengambil keuntungan bertahap: Mengurangkan gangguan emosi dan meningkatkan kebarangkalian keuntungan
  3. Pengesahan trend: Menggunakan purata bergerak untuk menapis isyarat palsu
  4. Pengurusan wang: Pengukuran kedudukan berasaskan peratusan untuk saiz akaun yang berbeza
  5. Pengoptimuman Suruhanjaya: Mempertimbangkan kos perdagangan untuk pelaksanaan praktikal

Risiko Strategi

  1. Kelewatan purata bergerak boleh melambatkan entri
  2. RSI terlalu dijual tidak menjamin pembalikan
  3. Saiz kedudukan yang besar boleh membawa kepada penarikan yang signifikan
  4. Keluar separa yang kerap boleh meningkatkan kos dagangan Risiko ini boleh dikendalikan melalui penyesuaian parameter dan penapis tambahan.

Arahan pengoptimuman

  1. Tambah isyarat pengesahan jumlah
  2. Menggabungkan penunjuk kekuatan trend
  3. Mengoptimumkan nisbah keuntungan
  4. Tambah penapis jangka masa
  5. Pertimbangkan saiz kedudukan yang disesuaikan dengan turun naik

Ringkasan

Strategi ini menggabungkan penunjuk teknikal dengan pengurusan risiko dinamik untuk mewujudkan sistem perdagangan yang komprehensif. Kekuatannya terletak pada kemampuan beradaptasi dan risiko terkawal, walaupun pengoptimuman parameter berdasarkan keadaan pasaran masih diperlukan. Strategi ini sesuai untuk pelabur jangka menengah hingga panjang dan berfungsi sebagai asas yang kukuh untuk perdagangan sistematik.


/*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 lanjut