Strategi Penembusan RSI Cepat

Penulis:ChaoZhang, Tarikh: 2023-10-24 11:51:56
Tag:

img

Ringkasan

Strategi ini melaksanakan operasi terobosan pantas berdasarkan penunjuk RSI dan EMA badan candlestick. Ia mengenal pasti isyarat pembalikan menggunakan pembentukan cepat RSI dan badan candlestick besar.

Logika Strategi

  1. Mengira penunjuk RSI dengan tempoh 7 dan menggunakan RMA untuk pecutan.

  2. Mengira EMA saiz badan candlestick dengan tempoh 30 sebagai penanda aras untuk saiz badan.

  3. Jika RSI melintasi di atas garisan had (default 30) dan badan lilin semasa lebih besar daripada 1/4 saiz badan purata, pergi panjang.

  4. Jika RSI melintasi di bawah garisan had (default 70) dan badan lilin semasa lebih besar daripada 1/4 saiz badan purata, pergi pendek.

  5. Jika sudah berada di kedudukan, tutup apabila RSI melintasi semula garis had.

  6. Parameter seperti panjang RSI, had, harga rujukan boleh dikonfigurasi.

  7. Parameter seperti tempoh EMA badan, kedudukan terbuka chroot pengganda boleh dikonfigurasi.

  8. Bilangan persimpangan RSI boleh dikonfigurasi.

Analisis Kelebihan

  1. Menggunakan atribut pembalikan RSI untuk menangkap pembalikan tepat pada masanya.

  2. RMA mempercepatkan pembentukan RSI untuk pembalikan yang lebih sensitif.

  3. Menapis penggabungan jarak kecil dengan badan candlestick besar.

  4. Data backtest yang mencukupi memastikan kebolehpercayaan.

  5. Parameter yang boleh disesuaikan menyesuaikan diri dengan persekitaran pasaran yang berbeza.

  6. Logik yang mudah dan jelas.

Analisis Risiko

  1. RSI mempunyai bias backtest, prestasi sebenar untuk disahkan.

  2. Badan besar tidak boleh sepenuhnya menapis pasaran yang berbelit-belit.

  3. Parameter lalai mungkin tidak sesuai dengan semua produk, pengoptimuman diperlukan.

  4. Kadar kemenangan mungkin tidak tinggi, perlu menanggung kekalahan berturut-turut secara mental.

  5. Risiko kegagalan, perlu stop loss tepat pada masanya.

Arahan pengoptimuman

  1. Mengoptimumkan parameter RSI untuk tempoh dan produk yang berbeza.

  2. Mengoptimumkan tempoh EMA badan untuk saiz badan yang halus.

  3. Mengoptimumkan pengganda badan untuk kedudukan terbuka untuk mengawal frekuensi kemasukan.

  4. Tambah stop loss bergerak untuk memastikan kadar kemenangan.

  5. Tambah penapis trend untuk mengelakkan perdagangan kontra trend.

  6. Mengoptimumkan pengurusan wang untuk kawalan risiko.

Kesimpulan

Ringkasnya, ini adalah strategi pembalikan yang sangat mudah dan langsung. Ia menggunakan kedua-dua atribut pembalikan RSI dan momentum badan lilin besar untuk masuk dengan cepat semasa pembalikan pasaran. Walaupun hasil backtest kelihatan baik, prestasi sebenar masih belum disahkan. Pengoptimuman parameter dan kawalan risiko diperlukan ketika menerapkannya. Secara keseluruhan, ini adalah strategi dengan nilai yang besar dan bernilai digunakan dan sentiasa diperbaiki dalam perdagangan langsung.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.2", shorttitle = "Fast RSI str 1.2", 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")
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))
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)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4
dn = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4
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

//Trading
if up
    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 dn
    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()

Lebih lanjut