
Strategi ini menentukan titik beli dan jual melalui persilangan RSI dengan garisan rata-ratanya, dan merupakan strategi perdagangan garis pendek. Strategi ini akan membeli apabila RSI berada di bawah garisan rata-ratanya, dan menjual apabila ia berada di atas garisan rata-ratanya, dan merupakan strategi jual beli tinggi yang tipikal.
Ini adalah strategi trend reversal tipikal yang menggunakan ciri RSI untuk menentukan masa untuk membeli dan menjual. Strategi ini mempunyai beberapa kelebihan:
Secara keseluruhannya, ini adalah strategi perdagangan garis pendek yang mudah dan praktikal.
Strategi ini juga mempunyai risiko yang perlu diperhatikan:
Risiko ini dapat dikurangkan dengan mengoptimumkan parameter, menambah syarat penapisan dan sebagainya.
Strategi ini boleh dioptimumkan dari segi berikut:
Ia boleh meningkatkan prestasi strategi dengan cara seperti kombinasi pelbagai indikator, pengurusan hentian, dan pengoptimuman parameter.
Strategi ini secara keseluruhannya adalah strategi perdagangan garis pendek yang sangat tipikal dan praktikal. Ia menggunakan indikator RSI untuk menilai masa beli dan jual, disokong dengan penapisan rata. Logik strategi mudah dan jelas, parameter menyesuaikan fleksibel, mudah dilaksanakan.
/*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)