Strategi ini menentukan sinyal beli dan jual berdasarkan persilangan antara indikator RSI dan moving averagenya, yang termasuk dalam strategi perdagangan jangka pendek. Strategi ini akan membeli ketika RSI lebih rendah dari MA dan menjual ketika RSI lebih tinggi dari MA, yang merupakan strategi pembelian rendah-penjualan tinggi yang khas.
Ini adalah strategi reversi rata-rata yang khas, memanfaatkan sifat overbought / oversold dari indikator RSI untuk menentukan sinyal perdagangan.
Singkatnya, ini adalah strategi perdagangan jangka pendek yang sederhana dan praktis.
Ada beberapa risiko yang perlu diperhatikan:
Risiko ini dapat dikurangi melalui penyesuaian parameter, penambahan filter dll.
Strategi dapat dioptimalkan dalam aspek berikut:
Peningkatan kinerja yang signifikan dapat dicapai melalui kombinasi multi-indikator, manajemen stop loss, optimasi parameter dll.
Secara singkat, ini adalah strategi perdagangan jangka pendek yang sangat tipikal dan praktis. Ini memanfaatkan tingkat RSI yang terlalu banyak dibeli / terlalu banyak dijual untuk menentukan entri dan keluar, dengan filter MA tambahan. Logika sederhana dan jelas, parameter fleksibel, mudah diterapkan. Ada risiko pasar tertentu, tetapi dapat ditangani melalui mekanisme entri / keluar yang disempurnakan, penyesuaian parameter, dll. Ketika dikombinasikan dengan indikator teknis yang lebih banyak dan teknik manajemen risiko, strategi ini dapat menjadi strategi jangka pendek yang relatif 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)