Strategi Penembusan RSI Kumulatif

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

img

Ringkasan

Strategi ini menggunakan penunjuk RSI Kumulatif untuk mengenal pasti trend dan membuat keputusan membeli dan menjual apabila nilai RSI kumulatif memecahkan paras ambang utama.

Logika Strategi

Strategi ini terutamanya berdasarkan kepada penunjuk RSI Kumulatif untuk keputusan perdagangan. Penunjuk RSI Kumulatif adalah pengumpulan nilai RSI. Dengan menetapkan parameter cumlen, nilai-nilai RSI selama hari-hari cumlen yang lalu dijumlahkan untuk memperoleh penunjuk RSI Kumulatif. Penunjuk ini dapat menapis bunyi pasaran jangka pendek.

Apabila penunjuk RSI Kumulatif melintasi di atas rel atas Bollinger Band, kedudukan panjang akan dibuka. Apabila RSI Kumulatif melintasi di bawah rel bawah Bollinger Band, kedudukan terbuka akan ditutup. rel Bollinger Band dikira secara dinamik berdasarkan data sejarah selama bertahun-tahun.

Selain itu, pilihan penapis trend ditambahkan. Perdagangan panjang hanya akan dibuka apabila harga di atas Purata Bergerak 100 hari, yang bermaksud ia berada dalam saluran trend menaik. Penapis ini mengelakkan perdagangan yang salah semasa turun naik pasaran.

Kelebihan

  • Menyaring bunyi bising dengan berkesan dan menangkap trend jangka menengah hingga panjang menggunakan RSI kumulatif
  • Elakkan perdagangan yang tidak munasabah dengan penapis trend
  • Menggunakan paras rujukan dinamik dan bukannya nilai tetap untuk membuat keputusan
  • Parameter yang sangat boleh dikonfigurasi untuk penyesuaian berdasarkan pasaran yang berbeza
  • Hasil backtest yang cemerlang dalam tempoh 10 tahun, dengan ketara melebihi pembelian dan memegang

Risiko dan Penambahbaikan

  • Keputusan berdasarkan satu penunjuk sahaja, boleh menambah penunjuk atau penapis lain
  • Rasio leverage tinggi tetap, boleh menyesuaikan berdasarkan drawdown
  • Hanya perdagangan panjang, boleh melihat peluang pendek
  • Mengoptimumkan kombinasi parameter yang berbeza dengan ketara di pasaran
  • Menguatkan keadaan keluar dengan stop loss, bergerak stop loss dan lain-lain.
  • Pertimbangkan untuk menggabungkan dengan strategi lain untuk kesan sinergis

Ringkasan

Strategi penembusan RSI Kumulatif mempunyai aliran logik yang lancar dan dengan tepat mengenal pasti trend jangka menengah hingga panjang dengan menapis dengan RSI Kumulatif dan menambah penilaian trend. Hasil ujian balik adalah luar biasa dalam dekad yang lalu. Masih ada ruang untuk penambahbaikan dalam bidang seperti penyesuaian parameter, menambah penunjuk, memperkaya keadaan keluar untuk menjadikan strategi lebih mantap. Konsep baru ini bernilai penerokaan dan penerapan lanjut.


/*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 lanjut