Strategi Dagangan Pecah Petunjuk RSI Pantas


Tarikh penciptaan: 2023-09-12 16:34:21 Akhirnya diubah suai: 2023-09-12 16:34:21
Salin: 0 Bilangan klik: 797
1
fokus pada
1617
Pengikut

Strategi ini menggunakan indikator RSI cepat untuk mengenal pasti fenomena overbought dan oversold, untuk melakukan perdagangan berbalik. Strategi ini juga menggabungkan gelombang besar dan kecil entiti K-line, untuk mengelakkan terjebak. Strategi ini berusaha untuk menilai dengan cepat fenomena overbought dan oversold, untuk menangkap peluang berbalik tepat pada masanya.

Prinsip-prinsip strategi:

  1. Hitung nilai RSI pantas, dan letakkan paras paras overbought dan oversold.

  2. Hitung EMA purata saiz entiti K untuk menentukan saiz entiti tersebut.

  3. RSI di atas melepasi garis beli dan entiti lebih besar daripada separuh nilai purata. RSI di bawah melepasi garis jual dan entiti lebih besar daripada separuh nilai purata.

  4. RSI kembali menembusi garisan nilai asas dan entiti lebih besar daripada nilai purata apabila posisi rata.

  5. Anda juga boleh membuat pengesahan tambahan dengan nilai minimum dan maksimum.

Kelebihan strategi ini:

  1. RSI cepat menilai terlalu banyak membeli dan terlalu banyak menjual dengan cepat, untuk mengelakkan kelewatan.

  2. Gelombang penyaringan saiz entiti boleh melangkau garis K yang tidak jelas.

  3. Pengesahan nilai minimum dan nilai maksimum meningkatkan kualiti isyarat.

Risiko strategi ini:

  1. Filter saiz entiti mungkin menapis sebahagian daripada isyarat yang berkesan.

  2. RSI mungkin menunjukkan isyarat palsu dalam keadaan gegaran.

  3. Pengurusan dana yang ketat diperlukan untuk menangani risiko perdagangan terbalik.

Ringkasnya, strategi ini menggunakan RSI cepat dan indikator saiz entiti K untuk perdagangan gabungan, mengawal risiko dengan cepat menilai overbought dan oversold, untuk mendapatkan kesan yang lebih baik. Tetapi perlu berjaga-jaga dengan masalah penapisan, dan menggunakan kaedah pengurusan wang yang baik.

Kod sumber strategi
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-11 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.3", shorttitle = "Fast RSI str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
usemm = input(false, defval = false, title = "Use Min/Max")
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), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
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
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//MinMax
min = min(close, open)
max = max(close, open)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4
up2 = min < min[1] and bar == -1 and bar[1] == -1 and usemm
dn2 = max > max[1] and bar == 1 and bar[1] == 1 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 > emabody / 2

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or (up2 and usemm)
needdn = dn1 or (dn2 and usemm)
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, 00, 00)))

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, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()