Strategi henti rugi mengikut arah aliran berdasarkan penunjuk RSI


Tarikh penciptaan: 2023-12-12 15:46:49 Akhirnya diubah suai: 2023-12-12 15:46:49
Salin: 0 Bilangan klik: 1051
1
fokus pada
1621
Pengikut

Strategi henti rugi mengikut arah aliran berdasarkan penunjuk RSI

Gambaran keseluruhan

Strategi ini dinamakan sebagai strategi tracking trend based on RSI stop loss. Strategi ini menggunakan RSI untuk menentukan keadaan overbought dan oversold, digabungkan dengan indikator MA untuk menentukan arah trend, dan menetapkan syarat masuk.

Prinsip Strategi

Strategi ini terutamanya melalui RSI dan MA untuk menentukan masa masuk. Parameter RSI ditetapkan untuk 2 kitaran, untuk menentukan keadaan overbought dan oversold. MA perlahan-lahan ditetapkan untuk 50 kitaran dan 200 kitaran, untuk menentukan arah trend.

Masuk dengan banyak mata: berbelanja lebih banyak apabila MA pantas berada di atas MA perlahan, dan harga lebih tinggi daripada MA perlahan, dan RSI berada di bawah kawasan oversold (default 10%);
Kemasukan kosong: Kemasukan kosong apabila MA pantas berada di bawah MA perlahan dan harga lebih rendah daripada MA perlahan, sementara RSI lebih tinggi daripada zon overbought (default 90%).

Selain itu, strategi ini juga menetapkan penapis kadar turun naik yang boleh dipilih. Penapis ini mengira selisih kemerosotan MA secara perlahan-lahan, dan hanya akan membuka kedudukan apabila selisih melebihi nilai terhad yang ditetapkan. Ia bertujuan untuk mengelakkan pembukaan kedudukan ketika tidak ada arah yang jelas dalam tempoh pergerakan harga.

Pada exit, strategi ini menggunakan peratusan untuk menjejaki hentian. Berdasarkan peratusan hentian input, gabungan setiap perbezaan harga melompat untuk mengira harga hentian, untuk mencapai hentian penyesuaian dinamik.

Analisis kelebihan

Strategi ini mempunyai kelebihan utama:

  1. Parameter RSI ditetapkan untuk 2 kitaran, yang dapat dengan cepat menangkap keadaan overbought dan oversold, untuk menilai peluang untuk berbalik.
  2. MA yang cepat dan berkesan dapat mengenal pasti arah trend dan titik-titik perubahan.
  3. Penghakiman RSI dan MA yang berganda dapat mengelakkan pecah palsu.
  4. Tetapkan penapis kadar turun naik, yang boleh menapis pergerakan pasaran ketika tidak jelas arahnya.
  5. Menggunakan peratusan untuk menjejaki hentian, anda boleh menyesuaikan hentian mengikut turun naik pasaran, dan mengawal risiko dengan berkesan.

Analisis risiko

Strategi ini juga mempunyai risiko, terutamanya:

  1. RSI dan MA menunjukkan ketinggalan dan mungkin terlepas beberapa peluang untuk berbalik.
  2. Hentian peratusan mudah dicetuskan dalam kejatuhan kuantiti.
  3. Tidak dapat menangani dengan berkesan varieti yang berfluktuasi tinggi pada malam dan pra-disk.

Menghadapi risiko di atas, anda boleh mengoptimumkan:

  1. Menyesuaikan parameter RSI, yang ditetapkan untuk 1 kitaran, dapat mengurangkan keterlambatan.
  2. Menyesuaikan parameter kitaran MA mengikut ciri-ciri yang berbeza.
  3. Menyesuaikan tahap peratusan kemusnahan dengan toleransi kemusnahan dan gegaran.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dengan:

  1. Menambah penilaian indikator lain, seperti peningkatan indikator kuantiti transaksi, untuk mengelakkan penembusan palsu.
  2. Menambah penilaian model pembelajaran mesin, menggunakan keputusan ramalan model untuk membantu keputusan.
  3. Mengoptimumkan bilangan pengembalian keuntungan dan pengurusan kedudukan untuk meningkatkan kadar pulangan strategi.
  4. Menetapkan mekanisme penapisan pergerakan malam dan pra-disk. Menetapkan sama ada untuk mengambil bahagian dalam keputusan hari perdagangan seterusnya berdasarkan kepada ketinggian pergerakan.

ringkaskan

Strategi ini secara keseluruhan merupakan strategi pengesanan trend yang lebih stabil. Ia menggabungkan penilaian RSI dan MA ganda, sambil menjamin kestabilan tertentu, ia juga dapat menangkap peluang pembalikan trend yang lebih jelas. Pada masa yang sama, penapis kadar turun naik dapat mengelakkan sebahagian risiko, dan peratusan stop loss juga dapat mengawal kerugian tunggal dengan berkesan.

Kod 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")