
이것은 평균 회귀 원리에 기초하여 설계된 양적 거래 전략이며, 브린 밴드, 상대적으로 강한 지수 ((RSI) 와 평균 실제 파도 ((ATR) 와 같은 기술 지표와 결합하여 시장의 과매매 과매매 상태를 식별하여 거래합니다. 이 전략은 승리률을 높이기 위해 낮은 위험 수익 비율을 설정하고, 자본 관리를 통해 위험을 제어합니다.
이 전략은 다음과 같은 요소들을 통해 거래가 이루어집니다.
이 전략은 평균 회귀 원리와 여러 기술 지표를 결합하여 안정적인 거래 시스템을 구축한다. 낮은 위험 수익률의 설정은 승률을 높이는 데 도움이 되며, 엄격한 위험 관리는 자금 안전을 보장한다. 일부 고유한 위험이 있지만, 지속적인 최적화 및 개선에 의해 전략은 더 나은 성능을 얻을 수 있다.
/*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")