
Strategi ini adalah sistem perdagangan berasaskan RSI2 yang digabungkan dengan purata bergerak. Ia menangkap peluang perdagangan yang berpotensi dengan memantau isyarat pembalikan RSI di kawasan oversold, sambil menggabungkan purata bergerak sebagai penapis trend untuk meningkatkan ketepatan perdagangan.
Logik teras strategi merangkumi elemen utama berikut:
Ini adalah strategi perdagangan yang lengkap dan logik yang jelas untuk menangkap peluang pasaran melalui RSI oversold reversal signal yang digabungkan dengan penapis trend garis lurus. Kelebihan strategi ini adalah fleksibiliti parameter, kawalan angin yang munasabah, tetapi masih perlu berhati-hati terhadap risiko terobosan palsu dan sensitiviti parameter. Dengan arah pengoptimuman yang disyorkan, strategi ini masih mempunyai ruang untuk penambahbaikan yang lebih besar, yang dapat meningkatkan lagi kesesuaian dalam keadaan pasaran yang berbeza.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("RSI 2 Strategy with Fixed Lines and Moving Average Filter", overlay=true)
// Input parameters
rsiPeriod = input.int(2, title="RSI Period", minval=1)
rsiBuyLevel = input.float(25, title="RSI Buy Level", minval=0, maxval=100)
maxBarsToHold = input.int(5, title="Max Candles to Hold", minval=1)
maPeriod = input.int(50, title="Moving Average Period", minval=1) // Moving Average Period
useMAFilter = input.bool(true, title="Use Moving Average Filter") // Enable/Disable MA Filter
// RSI and Moving Average calculation
rsi = ta.rsi(close, rsiPeriod)
ma = ta.sma(close, maPeriod)
// Moving Average filter conditions
maFilterCondition = useMAFilter ? close > ma : true // Condition: price above MA
// Buy conditions
rsiIncreasing = rsi > rsi[1] // Current RSI greater than previous RSI
buyCondition = rsi[1] < rsiBuyLevel and rsiIncreasing and strategy.position_size == 0 and maFilterCondition
// Variables for management
var int barsHeld = na // Counter for candles after purchase
var float buyPrice = na // Purchase price
// Buy action
if buyCondition and na(barsHeld)
strategy.entry("Buy", strategy.long)
barsHeld := 0
buyPrice := close
// Increment the candle counter after purchase
if not na(barsHeld)
barsHeld += 1
// Sell condition after the configured number of candles
sellCondition = barsHeld >= maxBarsToHold
if sellCondition
strategy.close("Buy")
// Reset variables after selling
barsHeld := na
buyPrice := na