Strategi Terobosan RSI Cepat

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

img

Gambaran umum

Strategi ini menerapkan operasi terobosan cepat berdasarkan indikator RSI dan EMA dari badan candlestick.

Logika Strategi

  1. Menghitung indikator RSI dengan periode 7 dan menggunakan RMA untuk akselerasi.

  2. Menghitung EMA dari ukuran tubuh candlestick dengan periode 30 sebagai acuan untuk ukuran tubuh.

  3. Jika RSI melintasi di atas garis batas (default 30) dan tubuh lilin saat ini lebih besar dari 1/4 dari ukuran tubuh rata-rata, pergi panjang.

  4. Jika RSI melintasi di bawah garis batas (default 70) dan tubuh lilin saat ini lebih besar dari 1/4 dari ukuran tubuh rata-rata, pergi pendek.

  5. Jika sudah berada di posisi, tutup saat RSI melintasi kembali garis batas.

  6. Parameter seperti panjang RSI, batas, harga referensi dapat dikonfigurasi.

  7. Parameter seperti periode EMA tubuh, posisi terbuka chroot multiplier dapat dikonfigurasi.

  8. Jumlah persimpangan RSI dapat dikonfigurasi.

Analisis Keuntungan

  1. Menggunakan atribut pembalikan RSI untuk menangkap pembalikan tepat waktu.

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

  3. Menyaring konsolidasi kisaran kecil dengan badan candlestick besar.

  4. Data backtest yang cukup memastikan keandalan.

  5. Parameter yang dapat disesuaikan beradaptasi dengan lingkungan pasar yang berbeda.

  6. Logika yang sederhana dan jelas.

Analisis Risiko

  1. RSI memiliki bias backtest, kinerja aktual untuk divalidasi.

  2. Badan-badan besar tidak dapat sepenuhnya menyaring pasar yang berbelit-belit.

  3. Parameter default mungkin tidak cocok untuk semua produk, perlu optimasi.

  4. Tingkat kemenangan mungkin tidak tinggi, harus menanggung kekalahan berturut-turut secara mental.

  5. Risiko kegagalan terobosan, perlu stop loss tepat waktu.

Arahan Optimasi

  1. Mengoptimalkan parameter RSI untuk periode dan produk yang berbeda.

  2. Optimalkan periode EMA tubuh untuk ukuran tubuh yang halus.

  3. Optimalkan body multiplier untuk posisi terbuka untuk mengontrol frekuensi masuk.

  4. Tambahkan stop loss bergerak untuk memastikan tingkat kemenangan.

  5. Tambahkan filter tren untuk menghindari perdagangan kontra-tren.

  6. Mengoptimalkan manajemen uang untuk pengendalian risiko.

Kesimpulan

Secara singkat, ini adalah strategi pembalikan yang sangat sederhana dan langsung. Ini memanfaatkan atribut pembalikan RSI dan momentum badan lilin besar untuk masuk dengan cepat selama pembalikan pasar. Meskipun hasil backtest terlihat baik, kinerja sebenarnya belum divalidasi. Optimasi parameter dan kontrol risiko diperlukan saat menerapkannya. Secara keseluruhan ini adalah strategi dengan nilai besar dan layak diterapkan dan terus ditingkatkan 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 banyak