Strategi Dagangan Gap RSI Cepat untuk Cryptocurrencies

Penulis:ChaoZhang, Tarikh: 2023-11-27 11:22:19
Tag:

img

Ringkasan: Ini adalah strategi perdagangan jurang RSI pantas yang direka untuk pasaran mata wang kripto. Ia menggunakan kedua-dua penunjuk RSI pantas dan corak jurang pada carta candlestick untuk mencari peluang perdagangan.

Prinsip: Strategi ini menggunakan dua teknik utama: penunjuk RSI cepat dan corak jurang.

Pertama, ia mengira penunjuk RSI cepat berdasarkan hanya 7 lilin. Ini menjadikan RSI lebih sensitif untuk dengan cepat mengesan keadaan overbought / oversold. Batas atas RSI ditetapkan pada 70 dan batas bawah pada 30. Di atas 70 dianggap overbought manakala di bawah 30 oversold.

Kedua, ia mengesan corak jurang pada carta candlestick. Jurang merujuk kepada ruang kosong antara harga pembukaan semasa dan harga penutupan sebelumnya. Jurang menandakan turun naik yang tinggi dan potensi pembalikan trend.

Apabila jurang turun muncul sementara RSI cepat menunjukkan keadaan oversold, pergi panjang. Apabila jurang naik muncul sementara RSI cepat menunjukkan status overbought, pergi pendek.

Di samping itu, strategi ini menggunakan penapis lain termasuk penunjuk SMA dan Min / Max untuk mengelakkan isyarat palsu.

Kelebihan: Kelebihan terbesar strategi ini adalah menangkap giliran overbought / oversold yang sangat cepat dan peluang pembalikan jurang. Ia sangat sesuai untuk pasaran crypto yang sangat berubah-ubah untuk merebut perubahan trend yang cepat. Berbanding dengan RSI biasa, RSI cepat bertindak balas lebih cepat sesuai dengan sifat frekuensi tinggi perdagangan crypto. Penapis tambahan juga membantu menghilangkan isyarat palsu dan meningkatkan kebolehpercayaan.

Risiko:
Risiko utama yang dihadapi oleh strategi termasuk:

  1. RSI cepat mungkin terlalu sensitif, menyebabkan isyarat palsu yang berlebihan.

  2. Jurang mungkin hanya turun naik harga biasa dan bukannya pembalikan sebenar.

  3. Semasa tempoh turun naik yang rendah, kedudukan boleh disimpan tidak aktif untuk masa yang lama.

  4. Tetapan parameter yang tidak betul seperti tempoh Min / Max boleh menyebabkan isyarat yang dicairkan dan kecekapan yang rendah.

Oleh itu, kaedah berikut boleh membantu mengurangkan risiko di atas:

  1. Sesuaikan parameter RSI cepat dan meningkatkan tempoh RSI untuk menjadikannya kurang sensitif.

  2. Gunakan stop loss dinamik untuk mengunci keuntungan.

  3. Mengoptimumkan kadar penyertaan strategi. Hentikan penglibatan semasa persekitaran turun naik yang rendah.

  4. Sentiasa backtest dan mengoptimumkan parameter untuk memastikan tetapan yang kukuh.

Peningkatan: Arah pengoptimuman utama termasuk:

  1. Jelajahi penunjuk lain seperti MACD, KDJ digabungkan dengan jurang untuk meningkatkan ketepatan.

  2. Membina mekanisme stop loss adaptif berdasarkan turun naik pasaran.

  3. Masukkan penunjuk jumlah seperti OBV untuk mengesahkan pembalikan selepas jurang.

  4. Mengoptimumkan parameter penapis seperti tempoh Min / Max untuk menemui tetapan terbaik untuk mengurangkan isyarat palsu.

  5. Penyelidikan penyesuaian parameter di seluruh aset kripto yang berbeza.

Usaha ini dapat meningkatkan kestabilan, kesesuaian dan kebolehpercayaan strategi ini.

Kesimpulan: Ringkasnya, strategi perdagangan jurang RSI yang cepat adalah pendekatan yang cekap yang direka khusus untuk pasaran kripto yang tidak menentu. Dengan ujian dan peningkatan yang berterusan, ia mempunyai potensi untuk menangkap pembalikan pasaran yang cepat dan mencapai keuntungan yang konsisten.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.5", shorttitle = "Fast RSI str 1.5", overlay = true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max 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 
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
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Lebih lanjut