
Strategi ini digunakan untuk menentukan titik jual dan beli melalui persilangan indikator RSI dengan garis rata-ratanya, dan merupakan strategi perdagangan garis pendek. Strategi ini akan membeli ketika indikator RSI berada di bawah garis rata-ratanya, dan menjual ketika berada di atas garis rata-ratanya, dan merupakan strategi jual beli tinggi yang khas.
Ini adalah tipikal strategi trend reversal yang menggunakan RSI untuk menentukan kapan tepat untuk membeli dan menjual. Strategi ini memiliki beberapa keuntungan:
Secara keseluruhan, ini adalah strategi perdagangan garis pendek yang sederhana dan praktis.
Strategi ini juga memiliki beberapa risiko yang perlu diperhatikan:
Risiko ini dapat diminimalkan dengan mengoptimalkan parameter, menambahkan kondisi penyaringan, dan sebagainya.
Strategi ini dapat dioptimalkan dari beberapa dimensi:
Performa strategi dapat ditingkatkan secara signifikan melalui kombinasi multi-indikator, manajemen stop loss, dan pengoptimalan parameter.
Strategi ini secara keseluruhan adalah strategi perdagangan garis pendek yang sangat khas dan praktis. Strategi ini menggunakan indikator RSI untuk menentukan kapan membeli dan menjual, ditambah dengan filter rata. Logika strategi sederhana dan jelas, penyesuaian parameter fleksibel, mudah diterapkan.
/*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)