Ini adalah strategi perdagangan kuantitatif berdasarkan prinsip pembalikan purata, menggabungkan penunjuk teknikal seperti Bollinger Bands, Indeks Kekuatan Relatif (RSI), dan Julat Benar Purata (ATR) untuk mengenal pasti keadaan pasar yang terlalu banyak dibeli dan terlalu banyak dijual. Strategi ini menggunakan nisbah risiko-balasan yang rendah untuk mencapai kadar kemenangan yang tinggi dan melaksanakan pengurusan risiko melalui ukuran kedudukan.
Strategi melaksanakan perdagangan melalui aspek berikut:
Strategi ini membina sistem perdagangan yang kukuh melalui prinsip-prinsip pembalikan purata dan pelbagai penunjuk teknikal. Tetapan nisbah risiko-balasan yang rendah membantu mencapai kadar kemenangan yang lebih tinggi, sementara pengurusan risiko yang ketat memastikan pemeliharaan modal. Walaupun risiko yang melekat, pengoptimuman dan penyempurnaan berterusan dapat membawa kepada prestasi yang lebih baik. Strategi ini sesuai untuk peniaga konservatif, terutamanya di pasaran dengan turun naik yang tinggi.
/*backtest start: 2024-01-01 00:00:00 end: 2024-11-11 00:00:00 period: 2d basePeriod: 2d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("High Win Rate Mean Reversion Strategy for Gold", overlay=true) // Input Parameters bbLength = input.int(20, title="Bollinger Bands Length") bbMult = input.float(2, title="Bollinger Bands Multiplier") rsiLength = input.int(14, title="RSI Length") rsiOverbought = input.int(70, title="RSI Overbought Level") rsiOversold = input.int(30, title="RSI Oversold Level") atrLength = input.int(14, title="ATR Length") rrRatio = input.float(0.75, title="Risk/Reward Ratio", step=0.05) // Lower RRR to achieve a high win rate riskPerTrade = input.float(2.0, title="Risk per Trade (%)", step=0.1) / 100 // 2% risk per trade // Bollinger Bands Calculation basis = ta.sma(close, bbLength) dev = bbMult * ta.stdev(close, bbLength) upperBand = basis + dev lowerBand = basis - dev // RSI Calculation rsi = ta.rsi(close, rsiLength) // ATR Calculation for Stop Loss atr = ta.atr(atrLength) // Entry Conditions: Mean Reversion longCondition = close < lowerBand and rsi < rsiOversold shortCondition = close > upperBand and rsi > rsiOverbought // Stop Loss and Take Profit based on ATR longStopLoss = close - atr * 1.0 // 1x ATR stop loss for long trades shortStopLoss = close + atr * 1.0 // 1x ATR stop loss for short trades longTakeProfit = close + (close - longStopLoss) * rrRatio // 0.75x ATR take profit shortTakeProfit = close - (shortStopLoss - close) * rrRatio // 0.75x ATR take profit // Calculate position size based on risk equity = strategy.equity riskAmount = equity * riskPerTrade qtyLong = riskAmount / (close - longStopLoss) qtyShort = riskAmount / (shortStopLoss - close) // Long Trade if (longCondition) strategy.entry("Long", strategy.long, qty=qtyLong) strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfit, stop=longStopLoss) // Short Trade if (shortCondition) strategy.entry("Short", strategy.short, qty=qtyShort) strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss) // Plot Bollinger Bands plot(upperBand, color=color.red, linewidth=2, title="Upper Bollinger Band") plot(lowerBand, color=color.green, linewidth=2, title="Lower Bollinger Band") plot(basis, color=color.gray, linewidth=2, title="Bollinger Basis") // Plot RSI for visual confirmation hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi, color=color.purple, title="RSI")