Strategi Perdagangan Gap RSI Cepat untuk Cryptocurrencies

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

img

Gambaran umum: Ini adalah strategi perdagangan gap RSI cepat yang dirancang untuk pasar cryptocurrency. Ini memanfaatkan indikator RSI cepat dan pola gap pada grafik candlestick untuk menemukan peluang perdagangan.

Prinsip: Strategi ini menggunakan dua teknik utama: indikator RSI cepat dan pola celah.

Pertama, ini menghitung indikator RSI cepat berdasarkan hanya 7 lilin. Hal ini membuat RSI lebih sensitif untuk dengan cepat mendeteksi kondisi overbought/oversold. Batas atas RSI ditetapkan pada 70 dan batas bawah pada 30. Di atas 70 dianggap overbought sementara di bawah 30 oversold.

Kedua, ia mendeteksi pola celah pada grafik candlestick. Celah mengacu pada ruang kosong antara harga pembukaan saat ini dan harga penutupan sebelumnya. Celah menandakan volatilitas tinggi dan potensi pembalikan tren.

Ketika ada kesenjangan turun saat RSI cepat menunjukkan kondisi oversold, pergi panjang.

Selain itu, strategi ini menggunakan filter lain termasuk indikator SMA dan Min/Max untuk menghindari sinyal palsu.

Keuntungan: Keuntungan terbesar dari strategi ini adalah menangkap putaran overbought / oversold yang sangat cepat dan peluang pembalikan kesenjangan. Ini sangat cocok untuk pasar crypto yang sangat volatile untuk memanfaatkan pergeseran tren yang cepat. Dibandingkan dengan RSI biasa, RSI cepat bereaksi jauh lebih cepat sesuai dengan sifat frekuensi tinggi perdagangan crypto. Filter tambahan juga membantu menghilangkan sinyal palsu dan meningkatkan keandalan.

Risiko:
Risiko utama yang dihadapi strategi ini meliputi:

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

  2. Kesenjangan mungkin hanya perubahan harga normal bukan pembalikan nyata.

  3. Selama periode volatilitas rendah, posisi dapat dibiarkan tidak aktif untuk waktu yang lama.

  4. Pengaturan parameter yang tidak tepat seperti periode Min/Max dapat menyebabkan sinyal yang encer dan efisiensi rendah.

Oleh karena itu, metode berikut dapat membantu mengurangi risiko di atas:

  1. Sesuaikan parameter RSI cepat dan tingkatkan periode RSI agar kurang sensitif.

  2. Gunakan stop loss dinamis untuk mengunci keuntungan.

  3. Optimalkan tingkat partisipasi strategi. Batasi keterlibatan selama lingkungan volatilitas rendah.

  4. Terus backtest dan mengoptimalkan parameter untuk memastikan pengaturan yang kuat.

Peningkatan: Arah optimasi utama meliputi:

  1. Jelajahi indikator lain seperti MACD, KDJ dikombinasikan dengan celah untuk meningkatkan presisi.

  2. Membangun mekanisme stop loss adaptif berdasarkan volatilitas pasar.

  3. Masukkan indikator volume seperti OBV untuk mengkonfirmasi pembalikan setelah celah.

  4. Optimalkan parameter filter seperti periode Min/Max untuk menemukan pengaturan terbaik untuk mengurangi sinyal palsu.

  5. Penelitian adaptasi parameter di berbagai aset crypto.

Upaya ini dapat secara signifikan meningkatkan stabilitas, kemampuan beradaptasi dan keandalan strategi.

Kesimpulan: Singkatnya, strategi perdagangan celah RSI cepat adalah pendekatan yang efisien yang dirancang secara eksplisit untuk pasar kripto yang volatile. Dengan pengujian dan peningkatan berkelanjutan, ia memiliki potensi untuk secara andal menangkap pembalikan pasar yang cepat dan mencapai profitabilitas 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 banyak