Scalping pantas RSI Strategi Switching v1.7

Penulis:ChaoZhang, Tarikh: 2023-12-22 15:10:40
Tag:

img

Ringkasan

Noro Fast Scalping RSI Switching Strategy adalah strategi perdagangan kuantitatif yang mengenal pasti peluang overbought dan oversold menggunakan penunjuk RSI. Strategi ini juga menggabungkan corak candlestick, penapis purata bergerak dan kaedah stop loss untuk mengawal risiko.

Komponen utama strategi ini termasuk:

  1. Indikator RSI Cepat: Mengenal pasti tahap overbought dan oversold
  2. corak candlestick: Membantu dalam menentukan arah trend
  3. Penapis Purata Bergerak: Gunakan SMA untuk mengelakkan isyarat palsu
  4. Mekanisme Stop Loss: Melaksanakan stop loss berdasarkan had RSI

Logika Strategi

Noro Fast Scalping RSI Switching Strategy terutamanya mengenal pasti isyarat perdagangan berikut:

  1. Isyarat RSI Cepat Overbought/Oversold: Isyarat perdagangan dihasilkan apabila RSI cepat melintasi di atas had atas atau di bawah had bawahnya.

  2. Sinyal candlestick: Parameter candlestick seperti saiz badan dan arah digunakan untuk menentukan trend dan menambah isyarat RSI yang cepat.

  3. Isyarat penapis SMA: Arah penapis SMA menapis isyarat pecah palsu.

  4. Isyarat Stop Loss: Posisi ditutup apabila RSI cepat melintasi kembali di atas had atas atau di bawah had bawahnya.

Secara khusus, strategi ini mengenal pasti peluang perdagangan berdasarkan zon overbought dan oversold RSI yang cepat. RSI yang cepat melintasi di bawah had bawahnya menandakan keadaan oversold; manakala melintasi di atas had atasnya menandakan keadaan overbought.

Untuk mengelakkan bunyi bising, syarat tambahan berikut ditambah:

  1. Saiz badan lilin: Badan lilin yang lebih besar mewakili trend yang lebih kuat
  2. Arah Lilin: Menentukan trend menaik atau menurun
  3. Penapis SMA: Menapis isyarat pecah palsu
  4. Stop Loss: Keluar dari perdagangan apabila RSI cepat melintasi kembali melebihi hadnya

Oleh itu, strategi ini menggabungkan RSI cepat, lilin, purata bergerak dan stop loss bersama-sama untuk menjana isyarat perdagangan.

Kelebihan

Kelebihan strategi ini termasuk:

  1. RSI pantas adalah sensitif: dengan cepat menangkap peluang overbought / oversold
  2. Candlestick & MA Filter: Mengelakkan isyarat palsu
  3. Stop Loss Automatik: Mengendalikan risiko dengan berkesan
  4. Sesuai untuk Scalping: Bekerja dengan baik dengan jangka masa yang lebih pendek misalnya 1H, 30M
  5. Mudah dioptimumkan: Parameter boleh disesuaikan untuk pasaran yang berbeza

Risiko

Terdapat juga beberapa risiko yang perlu dipertimbangkan:

  1. Stop Loss berturut-turut: Lebih banyak isyarat stop loss mungkin berlaku di pasaran julat
  2. Pengoptimuman Parameter diperlukan: Parameter perlu disesuaikan untuk pasangan dan jangka masa yang berbeza
  3. Tidak dapat mengelakkan semua kerugian: Hentian kerugian tepat pada masanya masih mengakibatkan beberapa kerugian

Kaedah pengoptimuman berikut boleh membantu mengurangkan risiko:

  1. Mengoptimumkan Parameter RSI Cepat: Mengurangkan isyarat palsu
  2. Mengoptimumkan Penempatan Stop Loss: Kawalan saiz kerugian perdagangan tunggal
  3. Tambah Ukuran Kedudukan: Sebarkan risiko di pelbagai perdagangan

Arahan pengoptimuman

Beberapa cara untuk mengoptimumkan lagi strategi ini termasuk:

  1. Tambah keuntungan mengambil keluar: mengambil keuntungan separa apabila mencapai sasaran keuntungan
  2. Meningkatkan Pengurusan Risiko: Memasukkan peraturan saiz kedudukan untuk mempelbagaikan risiko
  3. Penyesuaian Parameter: Kesan ujian pelarasan parameter merentasi jangka masa
  4. Pembelajaran Mesin: Gunakan algoritma untuk mengoptimumkan parameter secara automatik dari masa ke masa
  5. Pengujian Ketahanan: Menilai prestasi strategi di lebih banyak pasangan simbol

Dengan menggabungkan pengambilan keuntungan, pengurusan risiko, pengoptimuman parameter, pembelajaran mesin dan ujian ketahanan, strategi dapat ditingkatkan secara ketara dalam kestabilan.

Kesimpulan

Ringkasnya, Noro's Fast Scalping RSI Switching Strategy menggabungkan penunjuk RSI cepat dengan analisis lilin tambahan untuk mengenal pasti peluang perdagangan yang terlalu banyak dibeli dan terlalu banyak dijual. Dengan masa tindak balas isyarat yang cepat, kemudahan pengoptimuman dan modul stop loss yang terintegrasi, strategi perdagangan jangka pendek ini mempunyai potensi yang kuat untuk menghasilkan hasil positif selepas pembelajaran mesin dan penyesuaian parameter yang lebih lanjut.


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

//Noro
//2018

//@version=2
strategy(title = "Noro's Fast RSI Strategy v1.7", shorttitle = "Fast RSI str 1.7", overlay = true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usebc = input(true, defval = true, title = "Use BarColor Strategy")
usesma = input(false, defval = false, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars")
showsma = input(false, defval = false, title = "Show SMA Filter")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), fast)
fastdown = rma(-min(change(rsisrc), 0), fast)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Body
body = abs(close - open)
abody = sma(body, 10)

//MinMax Bars
min = min(close, open)
max = max(close, open)
minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0
maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0
mins = sma(minsignal, mmbars) == 1
maxs = sma(maxsignal, mmbars) == 1

//SMA Filter
sma = sma(close, smaperiod)
colorsma = showsma ? blue : na
plot(sma, color = colorsma, linewidth = 3)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > abody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > abody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and fastrsi < 70 and usemm
dn2 = maxs and (close < sma or usesma == false) and fastrsi > 30 and usemm 
up3 = sma(bar, 2) == -1 and usebc
dn3 = sma(bar, 2) == 1 and usebc
exit = (((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > abody / 2)

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1 or up2 or up3
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1 or dn2 or dn3
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Lebih lanjut