Strategi stop-loss mengikuti tren berdasarkan indikator RSI


Tanggal Pembuatan: 2023-12-12 15:46:49 Akhirnya memodifikasi: 2023-12-12 15:46:49
menyalin: 0 Jumlah klik: 1051
1
fokus pada
1621
Pengikut

Strategi stop-loss mengikuti tren berdasarkan indikator RSI

Ringkasan

Strategi ini disebut dengan strategi stop loss tracking trend based on RSI. Strategi ini menggunakan indikator RSI untuk menilai overbought dan oversold, dikombinasikan dengan indikator MA yang cepat dan lambat untuk menentukan arah tren, dan menetapkan kondisi masuk.

Prinsip Strategi

Strategi ini terutama menggunakan indikator RSI dan indikator MA untuk menentukan waktu masuk. Parameter indikator RSI disetel menjadi 2 siklus untuk menilai overbought dan oversold. MA perlahan-lahan disetel menjadi 50 siklus dan 200 siklus untuk menentukan arah tren.

Multiple entry: Memainkan MA cepat di atas MA lambat, dan harga lebih tinggi dari MA lambat, sementara RSI lebih rendah dari zona oversold (default 10%);
Masuk dengan posisi kosong: buka di bawah MA cepat, dan harga di bawah MA lambat, sementara RSI di atas zona overbought (default 90%).

Selain itu, strategi ini juga menetapkan filter volatilitas yang dapat dipilih. Filter ini menghitung selisih kemiringan MA secara perlahan, dan hanya akan membuka posisi ketika selisihnya melebihi setelan yang ditetapkan. Tujuannya adalah untuk menghindari membuka posisi ketika tidak ada arah yang jelas selama periode getaran harga.

Pada exit, strategi ini menggunakan persentase tracking stop loss. Berdasarkan persentase stop loss yang dimasukkan, stop loss dihitung dengan setiap selisih harga lompatan, dan stop loss disesuaikan secara dinamis.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan utama:

  1. Parameter indikator RSI disetel ke 2 siklus, dapat dengan cepat menangkap situasi overbought dan oversold, untuk menilai peluang pembalikan.
  2. MA cepat dan efektif untuk mengidentifikasi arah dan titik balik tren.
  3. Pengukuran RSI dan MA dapat mencegah terjadinya false breakout.
  4. Siapkan filter fluktuasi yang dapat memfilter saat pasar bergoyang tanpa arah yang jelas.
  5. Menggunakan persentase pelacakan stop loss, Anda dapat menyesuaikan stop loss sesuai dengan volatilitas pasar, untuk mengontrol risiko secara efektif.

Analisis risiko

Strategi ini juga memiliki beberapa risiko, terutama dalam hal:

  1. Indeks RSI dan MA mengalami keterbelakangan dan mungkin melewatkan beberapa kesempatan untuk berbalik.
  2. Persentase stop loss dapat dipicu oleh penurunan volumenya.
  3. Varietas yang tidak dapat menangani secara efektif fluktuasi yang lebih besar pada malam hari dan di depan piring.

Untuk mengatasi risiko-risiko tersebut, optimalisasi dapat dilakukan dengan cara:

  1. Menyesuaikan parameter RSI dengan 1 siklus dapat mengurangi lag.
  2. Sesuaikan parameter siklus MA dengan karakteristik varietas yang berbeda.
  3. Persentase Stop Loss disesuaikan dengan Stop Loss dan Toleransi Guncangan.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dengan:

  1. Menambahkan penilaian indikator lain, seperti peningkatan indikator volume transaksi, untuk menghindari terobosan palsu.
  2. Meningkatkan penilaian model pembelajaran mesin, menggunakan hasil prediksi model untuk membantu pengambilan keputusan.
  3. Mengoptimalkan jumlah pengembalian dan manajemen posisi, untuk meningkatkan tingkat pengembalian strategi.
  4. Menetapkan mekanisme penyaringan malam dan pra-disk. Menetapkan apakah akan berpartisipasi dalam keputusan hari perdagangan berikutnya berdasarkan amplitudo pergerakan.

Meringkaskan

Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang lebih stabil. Ini menggabungkan penilaian RSI dan MA ganda, sambil menjamin stabilitas tertentu, juga dapat menangkap peluang pembalikan tren yang lebih jelas. Sementara pengaturan filter volatilitas dapat menghindari sebagian risiko, persentase stop loss juga dapat secara efektif mengendalikan kerugian tunggal.

Kode Sumber Strategi
/*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")