Strategi ini menentukan isyarat beli dan jual berdasarkan persimpangan antara penunjuk RSI dan purata bergerak, yang tergolong dalam strategi perdagangan jangka pendek. Ia akan membeli apabila RSI lebih rendah daripada MA dan menjual apabila RSI lebih tinggi daripada MA, yang merupakan strategi pembelian rendah-penjualan tinggi yang biasa.
Ini adalah strategi pembalikan purata biasa, menggunakan sifat overbought / oversold penunjuk RSI untuk menentukan isyarat perdagangan.
Ringkasnya, ia adalah strategi perdagangan jangka pendek yang mudah dan praktikal.
Terdapat beberapa risiko yang perlu diperhatikan:
Risiko ini boleh dikurangkan melalui penyesuaian parameter, menambah penapis dll.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Peningkatan prestasi yang ketara boleh dicapai melalui kombinasi pelbagai penunjuk, pengurusan kehilangan henti, pengoptimuman parameter dan lain-lain.
Ringkasnya, ini adalah strategi perdagangan jangka pendek yang sangat tipikal dan praktikal. Ia memanfaatkan tahap overbought / oversold RSI untuk menentukan kemasukan dan keluar, dengan penapis MA tambahan. Logiknya mudah dan jelas, parameter fleksibel, mudah dilaksanakan. Terdapat risiko pasaran tertentu, tetapi boleh ditangani melalui mekanisme kemasukan / keluar yang halus, penyesuaian parameter dll. Apabila digabungkan dengan petunjuk teknikal dan teknik pengurusan risiko yang lebih banyak, strategi ini boleh menjadi strategi jangka pendek yang agak stabil.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h 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/ // © I11L //@version=5 strategy("I11L - Meanreverter 4h", overlay=false, pyramiding=3, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash,process_orders_on_close=false, calc_on_every_tick=false) frequency = input.int(10) rsiFrequency = input.int(40) buyZoneDistance = input.int(5) avgDownATRSum = input.int(3) useAbsoluteRSIBarrier = input.bool(true) barrierLevel = 50//input.int(50) momentumRSI = ta.rsi(close,rsiFrequency) momentumRSI_slow = ta.sma(momentumRSI,frequency) isBuy = momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) //and (momentumRSI < barrierLevel or not(useAbsoluteRSIBarrier)) isShort = momentumRSI > momentumRSI_slow*(1+buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier)) momentumRSISoftClose = (momentumRSI > momentumRSI_slow) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier)) isClose = momentumRSISoftClose plot(momentumRSI,color=isClose ? color.red : momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) ? color.green : color.white) plot(momentumRSI_slow,color=color.gray) plot(barrierLevel,color=useAbsoluteRSIBarrier ? color.white : color.rgb(0,0,0,0)) plot(momentumRSI_slow*(1-buyZoneDistance/100),color=color.gray) plot(momentumRSI_slow*(1+buyZoneDistance/100),color=color.gray) plot(momentumRSI_slow*(1+(buyZoneDistance*2)/100),color=color.gray) // plot(strategy.wintrades - strategy.losstrades) if(isBuy) strategy.entry("Buy",strategy.long, comment="#"+str.tostring(strategy.opentrades+1)) // if(isShort) // strategy.entry("Sell",strategy.short, comment="#"+str.tostring(strategy.opentrades+1)) if(isClose) strategy.exit("Close",limit=close)