RSI Mean Reverssion Strategi Dagangan Kuantitatif Berdasarkan RSI Average Crossing

Penulis:ChaoZhang, Tarikh: 2023-12-01 16:59:26
Tag:

img

Ringkasan

Strategi ini menentukan isyarat beli dan jual berdasarkan persimpangan antara penunjuk RSI dan purata bergerak, yang tergolong dalam strategi perdagangan jangka pendek. Ia akan membeli apabila RSI lebih rendah daripada MA dan menjual apabila RSI lebih tinggi daripada MA, yang merupakan strategi pembelian rendah-penjualan tinggi yang biasa.

Prinsip Strategi

  1. Mengira penunjuk RSI dengan tempoh 40 bar
  2. Mengira MA penunjuk RSI, dengan tempoh 10 bar
  3. Menghasilkan isyarat beli apabila RSI lebih rendah daripada MA yang didarabkan dengan pekali (rangkaian dagangan 1%)
  4. Menghasilkan isyarat jual apabila RSI lebih tinggi daripada MA yang didarabkan dengan pekali (1+ julat dagangan%)
  5. Jarak perdagangan lalai adalah 5, yang bermaksud 5% di atas atau di bawah MA untuk mencetuskan isyarat
  6. Menentukan keluar apabila RSI melebihi MA dan melebihi tahap 50

Analisis Kelebihan

Ini adalah strategi pembalikan purata biasa, menggunakan sifat overbought / oversold penunjuk RSI untuk menentukan isyarat perdagangan.

  1. Menggunakan penunjuk RSI untuk menilai struktur pasaran, yang agak boleh dipercayai
  2. Penapis MA mengelakkan perdagangan yang tidak perlu dan meningkatkan kestabilan
  3. Frekuensi kawalan julat dagangan yang boleh diselaraskan
  4. Logik yang mudah dan mudah difahami

Ringkasnya, ia adalah strategi perdagangan jangka pendek yang mudah dan praktikal.

Analisis Risiko

Terdapat beberapa risiko yang perlu diperhatikan:

  1. Kemungkinan RSI memberi isyarat palsu, perlu menonton corak
  2. Tetapan julat dagangan yang tidak betul boleh membawa kepada overtrading atau peluang yang hilang
  3. Kekerapan perdagangan yang tinggi, perlu mempertimbangkan kos transaksi
  4. Bergantung hanya pada satu penunjuk, terdedah kepada anomali pasaran

Risiko ini boleh dikurangkan melalui penyesuaian parameter, menambah penapis dll.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Tambah lebih banyak penapis seperti kelantangan untuk memastikan isyarat hanya pada titik giliran
  2. Tambah stop loss untuk mengawal kerugian perdagangan tunggal
  3. Mengoptimumkan julat dagangan untuk mengimbangi kekerapan dan kadar keuntungan
  4. Menggunakan pembelajaran mesin untuk mencari set parameter optimum
  5. Tambah model ensemble untuk mengintegrasikan hasil daripada sub-strategi

Peningkatan prestasi yang ketara boleh dicapai melalui kombinasi pelbagai penunjuk, pengurusan kehilangan henti, pengoptimuman parameter dan lain-lain.

Ringkasan

Ringkasnya, ini adalah strategi perdagangan jangka pendek yang sangat tipikal dan praktikal. Ia memanfaatkan tahap overbought / oversold RSI untuk menentukan kemasukan dan keluar, dengan penapis MA tambahan. Logiknya mudah dan jelas, parameter fleksibel, mudah dilaksanakan. Terdapat risiko pasaran tertentu, tetapi boleh ditangani melalui mekanisme kemasukan / keluar yang halus, penyesuaian parameter dll. Apabila digabungkan dengan petunjuk teknikal dan teknik pengurusan risiko yang lebih banyak, strategi ini boleh menjadi strategi jangka pendek yang agak stabil.


/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © I11L

//@version=5
strategy("I11L - Meanreverter 4h", overlay=false, pyramiding=3, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash,process_orders_on_close=false, calc_on_every_tick=false)
 
frequency = input.int(10)
rsiFrequency = input.int(40)
buyZoneDistance = input.int(5)
avgDownATRSum = input.int(3)
useAbsoluteRSIBarrier = input.bool(true)
barrierLevel = 50//input.int(50)

momentumRSI = ta.rsi(close,rsiFrequency)
momentumRSI_slow = ta.sma(momentumRSI,frequency)
 
isBuy = momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) //and (momentumRSI < barrierLevel or not(useAbsoluteRSIBarrier))
isShort = momentumRSI > momentumRSI_slow*(1+buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))
momentumRSISoftClose = (momentumRSI > momentumRSI_slow) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))

isClose = momentumRSISoftClose

plot(momentumRSI,color=isClose ? color.red :  momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) ? color.green : color.white)
plot(momentumRSI_slow,color=color.gray)
plot(barrierLevel,color=useAbsoluteRSIBarrier ? color.white : color.rgb(0,0,0,0))
plot(momentumRSI_slow*(1-buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+(buyZoneDistance*2)/100),color=color.gray)

// plot(strategy.wintrades - strategy.losstrades)

 
 
if(isBuy)
    strategy.entry("Buy",strategy.long, comment="#"+str.tostring(strategy.opentrades+1))

// if(isShort)
//     strategy.entry("Sell",strategy.short, comment="#"+str.tostring(strategy.opentrades+1))

if(isClose)
    strategy.exit("Close",limit=close)





Lebih lanjut