Scalping cepat RSI Strategi Switching v1.7

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

img

Gambaran umum

Noro's Fast Scalping RSI Switching Strategy adalah strategi perdagangan kuantitatif yang mengidentifikasi peluang overbought dan oversold menggunakan indikator RSI. Strategi ini juga menggabungkan pola candlestick, filter rata-rata bergerak dan metode stop loss untuk mengendalikan risiko.

Komponen utama dari strategi ini meliputi:

  1. Indikator RSI Cepat: Mengidentifikasi tingkat overbought dan oversold
  2. Pola candlestick: Membantu dalam menentukan arah tren
  3. Filter moving average: Gunakan SMA untuk menghindari sinyal palsu
  4. Mekanisme Stop Loss: Mengimplementasikan stop loss berdasarkan batas RSI

Logika Strategi

Noro's Fast Scalping RSI Switching Strategy terutama mengidentifikasi sinyal perdagangan berikut:

  1. Sinyal RSI Cepat Overbought/Oversold: Sinyal perdagangan dihasilkan ketika RSI Cepat melintasi batas atasnya atau di bawah batas bawahnya.

  2. Sinyal candlestick: Parameter candlestick seperti ukuran tubuh dan arah digunakan untuk menentukan tren dan melengkapi sinyal RSI cepat.

  3. Sinyal Filter SMA: Arah SMA menyaring sinyal pecah palsu.

  4. Sinyal Stop Loss: Posisi ditutup ketika RSI cepat melintasi kembali di atas batas atasnya atau di bawah batas bawahnya.

Secara khusus, strategi ini mengidentifikasi peluang perdagangan berdasarkan zona overbought dan oversold dari RSI yang cepat. RSI yang cepat melintasi di bawah batas bawahnya menandakan kondisi oversold; sementara melintasi di atas batas atasnya menandakan kondisi overbought.

Untuk menghindari kebisingan, syarat tambahan berikut ditambahkan:

  1. Ukuran Badan Lilin: Badan lilin yang lebih besar mewakili tren yang lebih kuat
  2. Candle Direction: Menentukan tren bullish atau bearish
  3. SMA Filter: Menyaring sinyal pecah palsu
  4. Stop Loss: Keluar dari perdagangan ketika RSI cepat melintasi kembali batasnya

Oleh karena itu, strategi ini menggabungkan RSI cepat, candlesticks, moving average dan stop loss bersama-sama untuk menghasilkan sinyal perdagangan.

Keuntungan

Keuntungan dari strategi ini meliputi:

  1. RSI cepat adalah sensitif: dengan cepat menangkap peluang overbought / oversold
  2. Candlestick & MA Filter: Menghindari sinyal palsu
  3. Stop Loss Otomatis: Mengontrol risiko secara efektif
  4. Cocok untuk Scalping: Bekerja dengan baik dengan kerangka waktu yang lebih pendek misalnya 1H, 30M
  5. Mudah Dioptimalkan: Parameter dapat disetel untuk pasar yang berbeda

Risiko

Ada juga beberapa risiko yang harus dipertimbangkan:

  1. Stop Loss Berturut-turut: Lebih banyak sinyal stop loss dapat terjadi di pasar yang berkisar
  2. Optimasi Parameter Dibutuhkan: Parameter perlu disetel untuk pasangan yang berbeda dan kerangka waktu
  3. Tidak Bisa Menghindari Semua Kerugian: Stop loss tepat waktu masih menghasilkan beberapa kerugian

Metode optimasi berikut dapat membantu mengurangi risiko:

  1. Mengoptimalkan Parameter RSI Cepat: Mengurangi sinyal palsu
  2. Mengoptimalkan Penempatan Stop Loss: Mengontrol ukuran kerugian perdagangan tunggal
  3. Tambahkan Ukuran Posisi: Mendistribusikan risiko di beberapa perdagangan

Arahan Optimasi

Beberapa cara untuk lebih mengoptimalkan strategi ini meliputi:

  1. Menambahkan Keuntungan Mengambil Keluar: Mengambil keuntungan parsial ketika mencapai target keuntungan
  2. Meningkatkan Manajemen Risiko: Menggabungkan aturan ukuran posisi untuk mendiversifikasi risiko
  3. Penyesuaian Parameter: Efek pengujian dari penyesuaian parameter di seluruh kerangka waktu
  4. Pembelajaran Mesin: Gunakan algoritma untuk mengoptimalkan parameter secara otomatis dari waktu ke waktu
  5. Pengujian Ketahanan: Mengevaluasi kinerja strategi di lebih banyak pasangan simbol

Dengan menggabungkan pengambilan keuntungan, manajemen risiko, optimasi parameter, pembelajaran mesin dan pengujian ketahanan, strategi dapat ditingkatkan secara signifikan dalam stabilitas.

Kesimpulan

Singkatnya, Noro's Fast Scalping RSI Switching Strategy menggabungkan indikator RSI cepat dengan analisis candlestick tambahan untuk mengidentifikasi peluang perdagangan overbought dan oversold. Dengan waktu respons sinyal yang cepat, kemudahan pengoptimalan dan modul stop loss yang terintegrasi, strategi perdagangan jangka pendek ini memiliki potensi kuat untuk menghasilkan hasil positif setelah pembelajaran mesin lebih lanjut dan penyesuaian parameter.


/*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 banyak