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.
Mengira penunjuk RSI dengan tempoh 7 dan menggunakan RMA untuk pecutan.
Mengira EMA saiz badan candlestick dengan tempoh 30 sebagai penanda aras untuk saiz badan.
Jika RSI melintasi di atas garisan had (default 30) dan badan lilin semasa lebih besar daripada 1/4 saiz badan purata, pergi panjang.
Jika RSI melintasi di bawah garisan had (default 70) dan badan lilin semasa lebih besar daripada 1/4 saiz badan purata, pergi pendek.
Jika sudah berada di kedudukan, tutup apabila RSI melintasi semula garis had.
Parameter seperti panjang RSI, had, harga rujukan boleh dikonfigurasi.
Parameter seperti tempoh EMA badan, kedudukan terbuka chroot pengganda boleh dikonfigurasi.
Bilangan persimpangan RSI boleh dikonfigurasi.
Menggunakan atribut pembalikan RSI untuk menangkap pembalikan tepat pada masanya.
RMA mempercepatkan pembentukan RSI untuk pembalikan yang lebih sensitif.
Menapis penggabungan jarak kecil dengan badan candlestick besar.
Data backtest yang mencukupi memastikan kebolehpercayaan.
Parameter yang boleh disesuaikan menyesuaikan diri dengan persekitaran pasaran yang berbeza.
Logik yang mudah dan jelas.
RSI mempunyai bias backtest, prestasi sebenar untuk disahkan.
Badan besar tidak boleh sepenuhnya menapis pasaran yang berbelit-belit.
Parameter lalai mungkin tidak sesuai dengan semua produk, pengoptimuman diperlukan.
Kadar kemenangan mungkin tidak tinggi, perlu menanggung kekalahan berturut-turut secara mental.
Risiko kegagalan, perlu stop loss tepat pada masanya.
Mengoptimumkan parameter RSI untuk tempoh dan produk yang berbeza.
Mengoptimumkan tempoh EMA badan untuk saiz badan yang halus.
Mengoptimumkan pengganda badan untuk kedudukan terbuka untuk mengawal frekuensi kemasukan.
Tambah stop loss bergerak untuk memastikan kadar kemenangan.
Tambah penapis trend untuk mengelakkan perdagangan kontra trend.
Mengoptimumkan pengurusan wang untuk kawalan risiko.
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()