Đây là một chiến lược giao dịch định lượng dựa trên các nguyên tắc đảo ngược trung bình, kết hợp các chỉ số kỹ thuật như Bollinger Bands, Chỉ số sức mạnh tương đối (RSI) và Average True Range (ATR) để xác định điều kiện mua quá nhiều và bán quá nhiều trên thị trường.
Chiến lược thực hiện giao dịch thông qua các khía cạnh sau:
Chiến lược này xây dựng một hệ thống giao dịch mạnh mẽ thông qua các nguyên tắc đảo ngược trung bình và nhiều chỉ số kỹ thuật. Cài đặt tỷ lệ rủi ro-lợi nhuận thấp giúp đạt được tỷ lệ thắng cao hơn, trong khi quản lý rủi ro nghiêm ngặt đảm bảo bảo bảo tồn vốn. Mặc dù rủi ro vốn có, tối ưu hóa và tinh chỉnh liên tục có thể dẫn đến hiệu suất cải thiện. Chiến lược này phù hợp với các nhà giao dịch bảo thủ, đặc biệt là trong các thị trường biến động cao.
/*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")