
Strategi ini memungkinkan beberapa terobosan harga dengan pengaturan parameter indikator RSI beberapa kali, sehingga memungkinkan sinyal masuk dan keluar yang lebih akurat.
Strategi ini menetapkan dua set parameter RSI, yaitu RSI periode 7, yang dibatasi pada RSI indikator 25, dan RSI periode 14, yang dibatasi pada RSI indikator 25.
Strategi pertama menghitung nilai dari dua set indikator RSI dan kemudian menilai apakah harga telah melanggar batas atas atau bawah RSI. Jika batas atas telah dilanggar, maka akan ada sinyal plus, dan jika batas bawah telah dilanggar, maka akan ada sinyal minus.
Jika sudah memegang posisi, maka akan terus menilai apakah RSI saat ini berada dalam kisaran normal. Jika RSI normal, dan entitas menembus setengah dari garis rata-rata, maka akan ada sinyal keluar.
Strategi ini juga menggunakan sistem Martingale. Setelah setiap kerugian, volume transaksi akan berlipat ganda.
Dengan menggunakan dua set indikator RSI, sinyal breakout dapat diukur dengan lebih akurat dan menghindari false breakout.
Pada saat yang sama, memeriksa terobosan entitas untuk menghindari kesalahan transaksi di tengah-tengah gejolak.
Dengan menggunakan Martingale, Anda dapat menghentikan kerugian dengan cepat setelah mengalami kerugian.
RSI yang dapat disesuaikan untuk mengoptimalkan peluang masuk.
Anda dapat membatasi waktu transaksi untuk menghindari dampak dari peristiwa besar.
Indeks RSI ganda tidak dapat sepenuhnya menghindari fenomena false breakout.
Martingale akan meningkatkan posisi ketika ia mengalami kerugian, dan akan mudah meledak.
Tidak mempertimbangkan dampak biaya transaksi.
Ada banyak parameter yang dapat dioptimalkan, yang memerlukan banyak pengujian untuk menemukan kombinasi parameter yang optimal.
Anda dapat mengatur stop loss untuk membatasi kerugian; mengoptimalkan kombinasi parameter RSI; menambahkan pertimbangan biaya; meredakan pencairan yang tepat.
Masuk ke dalam mekanisme stop loss, Anda dapat membatasi kerugian maksimum.
Optimalkan kombinasi parameter RSI untuk menemukan parameter optimal untuk mengurangi false breakout.
Mempertimbangkan dampak biaya transaksi dan mencegah terlalu sering transaksi.
Ini adalah salah satu dari beberapa hal yang dapat Anda lakukan untuk mendapatkan lebih banyak peluang perdagangan.
Tambahkan filter untuk lebih banyak indikator, dan hindari kebocoran.
Strategi ini menggunakan indikator RSI ganda untuk menentukan harga terobosan, menambahkan penilaian terobosan entitas, dan menghindari terikat di pasar yang bergoyang. Strategi ini juga menggunakan Martingale untuk menghentikan kerugian dengan cepat. Strategi ini dapat mendapatkan sinyal perdagangan yang lebih akurat dengan mengoptimalkan parameter dan menambahkan lebih banyak filter indikator.
/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 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 v2.0", shorttitle = "Fast RSI str 2.0", 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, %")
usersi1 = input(true, defval = true, title = "Use RSI #1")
rsiperiod1 = input(7, defval = 7, minval = 2, maxval = 50, title = "#1 RSI Period")
rsilimit1 = input(25, defval = 25, minval = 1, maxval = 100, title = "#1 RSI limit")
usersi2 = input(true, defval = true, title = "Use RSI #2")
rsiperiod2 = input(14, defval = 14, minval = 2, maxval = 50, title = "#2 RSI Period")
rsilimit2 = input(25, defval = 25, minval = 1, maxval = 100, title = "#2 RSI limit")
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")
//RSI #1
uprsi1 = rma(max(change(close), 0), rsiperiod1)
dnrsi1 = rma(-min(change(close), 0), rsiperiod1)
rsi1 = dnrsi1 == 0 ? 100 : uprsi1 == 0 ? 0 : 100 - (100 / (1 + uprsi1 / dnrsi1))
uplimit1 = 100 - rsilimit1
dnlimit1 = rsilimit1
//RSI #2
uprsi2 = rma(max(change(close), 0), rsiperiod2)
dnrsi2 = rma(-min(change(close), 0), rsiperiod2)
rsi2 = dnrsi2 == 0 ? 100 : uprsi2 == 0 ? 0 : 100 - (100 / (1 + uprsi2 / dnrsi2))
uplimit2 = 100 - rsilimit2
dnlimit2 = rsilimit2
//Body
body = abs(close - open)
abody = sma(body, 10)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and rsi1 < dnlimit1 and body > abody / 5 and usersi1
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and rsi1 > uplimit1 and body > abody / 5 and usersi1
up2 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and rsi2 < dnlimit2 and body > abody / 5 and usersi2
dn2 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and rsi2 > uplimit2 and body > abody / 5 and usersi2
norma = rsi1 > dnlimit1 and rsi1 < uplimit1 and rsi2 > dnlimit2 and rsi2 < uplimit2
exit = (((strategy.position_size > 0 and bar == 1 and norma) or (strategy.position_size < 0 and bar == -1 and norma)) 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
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dn1 or dn2
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()