Strategi RSI Breakout kumulatif

Penulis:ChaoZhang, Tanggal: 2023-10-27 11:20:50
Tag:

img

Gambaran umum

Strategi ini menggunakan indikator RSI kumulatif untuk mengidentifikasi tren dan membuat keputusan beli dan jual ketika nilai RSI kumulatif melanggar ambang kunci.

Logika Strategi

Strategi ini terutama didasarkan pada indikator RSI kumulatif untuk keputusan perdagangan. Indikator RSI kumulatif adalah akumulasi nilai RSI. Dengan mengatur parameter kumulatif, nilai RSI selama hari kumulatif terakhir ditambahkan untuk menghasilkan indikator RSI kumulatif. Indikator ini dapat menyaring kebisingan pasar jangka pendek.

Ketika indikator RSI Kumulatif melintasi rel atas Bollinger Band, posisi panjang akan dibuka. Ketika RSI Kumulatif melintasi rel bawah Bollinger Band, posisi terbuka akan ditutup. Rel Bollinger Band dihitung secara dinamis berdasarkan data historis selama bertahun-tahun.

Selain itu, opsi filter tren ditambahkan. perdagangan panjang hanya akan dibuka ketika harga di atas Rata-rata Bergerak 100 hari, yang berarti berada di saluran tren naik. filter ini menghindari perdagangan yang salah selama fluktuasi pasar.

Keuntungan

  • Efektif menyaring kebisingan dan menangkap tren jangka menengah hingga panjang menggunakan RSI kumulatif
  • Hindari perdagangan yang tidak masuk akal dengan filter tren
  • Menggunakan tingkat referensi dinamis daripada nilai tetap untuk pengambilan keputusan
  • Parameter yang sangat dapat dikonfigurasi untuk penyesuaian berdasarkan pasar yang berbeda
  • Hasil backtest yang luar biasa selama 10 tahun, secara signifikan melampaui pembelian dan memegang

Risiko dan Peningkatan

  • Keputusan yang didasarkan hanya pada satu indikator, dapat menambahkan indikator atau filter lain
  • Rasio leverage tinggi tetap, dapat disesuaikan berdasarkan drawdown
  • Hanya perdagangan panjang, dapat melihat peluang shorting
  • Mengoptimalkan kombinasi parameter yang bervariasi secara signifikan di berbagai pasar
  • Memperkaya kondisi keluar dengan stop loss, stop loss bergerak dll.
  • Pertimbangkan untuk menggabungkan dengan strategi lain untuk efek sinergis

Ringkasan

Strategi RSI kumulatif memiliki aliran logika yang mulus dan secara akurat mengidentifikasi tren jangka menengah hingga panjang dengan menyaring dengan RSI kumulatif dan menambahkan penilaian tren. Hasil backtest luar biasa selama dekade terakhir. Masih ada ruang untuk perbaikan di bidang seperti penyesuaian parameter, menambahkan indikator, memperkaya kondisi keluar untuk membuat strategi lebih kuat.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @version=5
// Author = TradeAutomation


strategy(title="Cumulative RSI Strategy", shorttitle="CRSI Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_contract, commission_value=.0035, slippage = 1, margin_long = 75, initial_capital = 25000, default_qty_type=strategy.percent_of_equity, default_qty_value=110)


// Cumulative RSI Indicator Calculations //
rlen  = input.int(title="RSI Length", defval=3, minval=1)
cumlen = input(3, "RSI Cumulation Length")
rsi = ta.rsi(close, rlen)
cumRSI = math.sum(rsi, cumlen)
ob = (100*cumlen*input(94, "Oversold Level")*.01)
os = (100*cumlen*input(20, "Overbought Level")*.01)


// Operational Function //
TrendFilterInput = input(false, "Only Trade When Price is Above EMA?")
ema = ta.ema(close, input(100, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)


// Backtest Timeframe Inputs // 
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2010, minval=1950, maxval=2100)
endDate = input.int(title="End Date", defval=1, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=1, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2099, minval=1950, maxval=2100)
InDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))


// Buy and Sell Functions //
if (InDateRange and TrendFilterInput==true)
    strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os) and TrendisLong, comment="Buy", alert_message="buy")
    strategy.close("Long", when = ta.crossover(cumRSI, ob) , comment="Sell", alert_message="Sell")
if (InDateRange and TrendFilterInput==false)
    strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os), comment="Buy", alert_message="buy")
    strategy.close("Long", when = ta.crossover(cumRSI, ob), comment="Sell", alert_message="sell")
if (not InDateRange)
    strategy.close_all()

Lebih banyak