Strategi Penembusan RSI Berganda

Penulis:ChaoZhang, Tarikh: 2023-12-27 14:33:15
Tag:

img

Ringkasan

Strategi pecah RSI berganda adalah strategi dagangan algoritma yang mengenal pasti titik pembalikan harga menggunakan penunjuk RSI. Ia menghasilkan isyarat dagangan dengan membandingkan penunjuk RSI dengan nilai ambang atas dan bawah yang telah ditetapkan untuk menentukan sama ada pasaran terlalu banyak dibeli atau terlalu banyak dijual.

Logika Strategi

Strategi ini terutamanya bergantung kepada penunjuk RSI untuk menilai keadaan pasaran. Penunjuk RSI dikira berdasarkan perubahan harga penutupan dalam tempoh tertentu, mencerminkan momentum pembelian dan penjualan saham. Apabila RSI melintasi di atas ambang atas yang telah ditetapkan (default 75), ia menunjukkan saham telah memasuki zon overbought. Apabila RSI jatuh di bawah ambang bawah yang telah ditetapkan (default 25), ia menunjukkan saham telah memasuki zon oversold.

Peraturan penghakiman adalah:

  1. Apabila RSI melintasi sempadan atas, pergi pendek;
  2. Apabila RSI melintasi bawah ambang bawah, pergi panjang;
  3. Tutup kedudukan apabila mencapai stop loss atau mengambil keuntungan.

Logik dagangnya mudah dan jelas, dengan tetapan parameter rujukan yang munasabah, ruang konfigurasi yang besar, dan sesuai untuk menangkap trend yang lebih besar di pasaran.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Logik yang mudah difahami dan dilaksanakan;
  2. tetapan parameter rujukan yang munasabah yang boleh diperibadikan;
  3. Logik perdagangan terbalik yang boleh dikonfigurasikan yang boleh bertindak balas dengan fleksibel terhadap keadaan pasaran;
  4. Boleh mengenal pasti titik pembalikan harga dengan berkesan dan menangkap trend utama.

Secara umum, dengan tetapan parameter rujukan yang munasabah, pelaksanaan yang mudah, dan keupayaan untuk menentukan pembalikan harga dengan berkesan melalui RSI, strategi ini sesuai untuk menangkap trend jangka sederhana hingga panjang dan mudah difahami dan digunakan sebagai strategi kuantitatif.

Analisis Risiko

Walaupun strategi ini agak mudah dan boleh dipercayai, kita tidak boleh mengabaikan potensi risiko yang dihadapi:

  1. Kemungkinan yang agak tinggi bahawa penunjuk RSI mencetuskan isyarat palsu. RSI tidak dapat meramalkan pembalikan harga dengan sempurna, yang boleh menyebabkan penilaian yang salah.
  2. Kemungkinan stop loss berterusan dalam pasaran trend. RSI mendapati sukar untuk membezakan pelarasan terikat julat normal dari pembalikan trend.
  3. Lebih banyak kerugian mungkin dalam pasaran julat. RSI tidak dapat menentukan trend julat dengan berkesan, yang membawa kepada kerugian yang lebih besar dalam persekitaran ini.

Untuk mengawal risiko, kita perlu memberi perhatian kepada perkara berikut:

  1. Sesuaikan parameter dengan sewajarnya untuk mengelakkan kadar salah penilaian yang berlebihan.
  2. Memastikan isyarat dagangan dengan penunjuk lain untuk meningkatkan ketepatan.
  3. Meningkatkan nisbah mengambil keuntungan dan mengurangkan saiz stop loss tunggal.
  4. Elakkan berdagang di pasaran yang berbeza.

Arahan pengoptimuman

Memandangkan risiko utama yang dihadapi oleh strategi ini adalah kesalahan penilaian pembalikan dan kerugian di pasaran yang berbeza, kita boleh mengoptimumkan dari aspek berikut:

  1. Penapis isyarat dengan penunjuk lain. Penunjuk seperti KDJ dan MACD boleh memainkan peranan penapis untuk mengelakkan penilaian yang salah.
  2. Meningkatkan ambang untuk jumlah kehilangan berhenti tunggal. dengan betul memperluaskan ruang kehilangan berhenti tunggal boleh membantu strategi mengikuti trend besar.
  3. Tentukan had frekuensi kedudukan terbuka. Tambah logik yang mengehadkan kemasukan sekali atau N kali dalam tempoh tertentu untuk mengawal pembukaan kedudukan yang terlalu kerap.
  4. Tetapkan penilaian keadaan pasaran. Memastikan strategi hanya berjalan di pasaran trend, mengelakkan pasaran yang berbeza-beza, yang dapat mengoptimumkan nisbah risiko-balasan strategi.

Kesimpulan

Ringkasnya, strategi pecah RSI berganda adalah strategi kuantitatif yang mudah dan praktikal. Ia mengenal pasti pembalikan harga melalui RSI untuk mencapai trend yang mudah. Walaupun terdapat risiko salah penilaian tertentu, pengoptimuman seperti penyesuaian parameter, penapisan isyarat dapat membantu mengurangkan ini dan membolehkannya memainkan peranan penting dalam menangkap trend jangka menengah hingga panjang. Logiknya mudah, menjadikannya sesuai untuk kuantiti pemula untuk merujuk dan belajar dari. Dengan pengoptimuman lanjut, strategi ini menunjukkan janji dalam mendapatkan pulangan kuantitatif yang agak stabil.


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

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)


Lebih lanjut