Strategi Scalping berdasarkan Indikator RSI dengan Trailing Stop Loss

Penulis:ChaoZhang, Tanggal: 2023-12-12 15:46:49
Tag:

img

Gambaran umum

Strategi ini disebut Scalping Strategy berdasarkan Indikator RSI dengan Trailing Stop Loss. Ini menggunakan indikator RSI untuk menentukan kondisi overbought dan oversold, dikombinasikan dengan Moving Averages (MA) cepat dan lambat untuk menentukan arah tren, dan menetapkan kondisi masuk.

Logika Strategi

Sinyal masuk dari strategi ini terutama ditentukan oleh indikator RSI dan crossover MA. Parameter RSI ditetapkan pada 2 periode untuk dengan cepat menangkap situasi overbought dan oversold untuk peluang pembalikan. MA cepat dan MA lambat ditetapkan pada 50 dan 200 periode masing-masing untuk mengidentifikasi arah tren. Secara khusus, logika masuk adalah:

Masuk panjang: MA cepat melintasi di atas MA lambat, harga di atas MA lambat, dan RSI di bawah tingkat oversold (default 10%); Entry pendek: MA cepat melintasi di bawah MA lambat, harga berada di bawah MA lambat, dan RSI berada di atas tingkat overbought (default 90%).

Selain itu, ada filter volatilitas opsional dalam strategi. Ini menghitung perbedaan antara kemiringan MAs cepat dan lambat. Posisi hanya akan dibuka ketika perbedaan melebihi ambang batas. Tujuannya adalah untuk menghindari membuka posisi ketika tidak ada arah yang jelas selama fluktuasi pasar.

Pada sisi keluar, strategi menggunakan persentase stop loss yang tertinggal. Berdasarkan persentase input, strategi ini menghitung harga stop loss dikombinasikan dengan ukuran tick, untuk menyesuaikan stop loss secara dinamis.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. RSI yang ditetapkan untuk 2 periode dapat dengan cepat menangkap situasi overbought dan oversold untuk peluang pembalikan.
  2. MAs cepat dan lambat dapat secara efektif mengidentifikasi arah tren dan titik balik.
  3. Kombinasi RSI dan MA indikator ganda menghindari false breakout.
  4. Filter volatilitas menghindari membuka posisi ketika tidak ada arah yang jelas selama fluktuasi.
  5. Persentase stop loss trailing dapat menyesuaikan tingkat stop loss berdasarkan volatilitas pasar untuk mengontrol risiko secara efektif.

Analisis Risiko

Ada juga beberapa risiko dalam strategi ini:

  1. Indikator RSI dan MA memiliki beberapa efek keterlambatan, mungkin melewatkan beberapa peluang pembalikan.
  2. Persentase stop loss kemungkinan akan dipicu dalam penurunan volume yang rendah.
  3. Pergeseran harga overnight dan pra-pasar yang signifikan tidak ditangani secara efektif.

Arah optimasi untuk risiko adalah:

  1. Sesuaikan parameter RSI ke 1 periode untuk mengurangi efek lag.
  2. Mengoptimalkan periode MA berdasarkan karakteristik simbol.
  3. Sesuaikan tingkat stop loss persentase untuk menyeimbangkan antara stop loss dan toleransi fluktuasi.

Arahan Optimasi

Arah optimasi untuk strategi ini adalah:

  1. Tambahkan penilaian indikator lainnya, seperti volume, untuk menghindari sinyal pecah palsu.
  2. Tambahkan prediksi model pembelajaran mesin untuk membantu pengambilan keputusan.
  3. Mengoptimalkan waktu piramida dan ukuran posisi untuk lebih meningkatkan pengembalian.
  4. Tentukan apakah akan berpartisipasi pada hari perdagangan berikutnya berdasarkan fluktuasi.

Kesimpulan

Secara umum, ini adalah tren yang relatif stabil mengikuti strategi. Dengan menggabungkan indikator RSI dan MA ganda, ini memastikan stabilitas tertentu sambil menangkap peluang pembalikan tren yang lebih jelas. Filter volatilitas menghindari beberapa risiko, dan persentase stop loss juga secara efektif mengendalikan kerugian perdagangan tunggal. Strategi ini dapat digunakan sebagai strategi generik multi-simbol, dan juga dapat dioptimalkan pada parameter dan model untuk simbol tertentu untuk mencapai hasil yang lebih baik.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Scalping strategy
// © Lukescream and Ninorigo
// (original version by Lukescream - lastest versions by Ninorigo) - v1.3
//

//@version=4
strategy(title="Scalping using RSI 2 indicator", shorttitle="RSI 2 Strategy", overlay=true, pyramiding=0, process_orders_on_close=false)

var bool ConditionEntryL = false
var bool ConditionEntryS = false


//***********
// Costants
//***********
def_start_date = timestamp("01 Jan 2021 07:30 +0000")
def_end_date   = timestamp("01 Dec 2024 07:30 +0000")

def_rsi_length = 2
def_overbought_value = 90
def_oversold_value   = 10

def_slow_ma_length = 200
def_fast_ma_length = 50
def_ma_choice      = "EMA"

def_tick   = 0.5
def_filter = true

def_trailing_stop = 1


//***********
// Change the optional parameters
//***********
start_time  = input(title="Start date", defval=def_start_date, type=input.time)
end_time    = input(title="End date", defval=def_end_date, type=input.time)
// RSI
src         = input(title="Source", defval=close, type=input.source)
rsi_length  = input(title="RSI Length", defval=def_rsi_length, minval=1, type=input.integer)
overbought_threshold = input(title="Overbought threshold", defval=def_overbought_value, type=input.float)
oversold_threshold   = input(title="Oversold threshold", defval=def_oversold_value, type=input.float)
// Moving average
slow_ma_length = input(title="Slow MA length", defval=def_slow_ma_length, type=input.integer)
fast_ma_length = input(title="Fast MA length", defval=def_fast_ma_length, type=input.integer)
ma_choice = input(title="MA choice", defval="EMA", options=["SMA", "EMA"])
// Input ticker
tick   = input(title="Ticker size", defval=def_tick, type=input.float)
filter = input(title="Trend Filter", defval=def_filter, type=input.bool)
// Trailing stop (%)
ts_rate = input(title="Trailing Stop %", defval=def_trailing_stop, type=input.float)


//***********
// RSI
//***********
// Calculate RSI
up   = rma(max(change(src), 0), rsi_length)
down = rma(-min(change(src), 0), rsi_length)
rsi = (down == 0 ? 100 : (up == 0 ? 0 : 100-100/(1+up/down)))


//***********
// Moving averages
//***********
slow_ma = (ma_choice == "SMA" ? sma(close, slow_ma_length) : ema(close, slow_ma_length))
fast_ma = (ma_choice == "SMA" ? sma(close, fast_ma_length) : ema(close, fast_ma_length))
// Show the moving averages
plot(slow_ma, color=color.white,  title="Slow MA")
plot(fast_ma, color=color.yellow, title="Fast MA")


//***********
// Strategy
//***********
if true
    // Determine the entry conditions (only market entry and market exit conditions)
    // Long position
    ConditionEntryL := (filter == true ? (fast_ma > slow_ma and close > slow_ma and rsi < oversold_threshold) : (fast_ma > slow_ma and rsi < oversold_threshold))
    // Short position
    ConditionEntryS := (filter == true ? (fast_ma < slow_ma and close < slow_ma and rsi > overbought_threshold) : (fast_ma < slow_ma and rsi > overbought_threshold))
   
    // Calculate the trailing stop
    ts_calc = close * (1/tick) * ts_rate * 0.01

    // Submit the entry orders and the exit orders
    // Long position
    if ConditionEntryL
        strategy.entry("RSI Long", strategy.long)
    // Exit from a long position
    strategy.exit("Exit Long", "RSI Long", trail_points=0, trail_offset=ts_calc)

    // Short position 
    if ConditionEntryS
        strategy.entry("RSI Short", strategy.short)
    // Exit from a short position
    strategy.exit("Exit Short", "RSI Short", trail_points=0, trail_offset=ts_calc)

// Highlights long conditions
bgcolor (ConditionEntryL ? color.navy : na, transp=60, offset=1, editable=true, title="Long position band")
// Highlights short conditions
bgcolor (ConditionEntryS ? color.olive : na, transp=60, offset=1, editable=true, title="Short position band")


Lebih banyak