
Il s’agit d’une stratégie de trading quantitative basée sur la régression des valeurs moyennes, combinant des indicateurs techniques tels que les bandes de Brin, l’indice de force relative (RSI) et l’amplitude réelle moyenne (ATR) pour effectuer des transactions en identifiant les sur-achats et les sur-vente du marché. La stratégie utilise un réglage de rapport de rendement à faible risque pour augmenter le taux de victoire et le contrôle du risque par la gestion des fonds.
La stratégie consiste principalement à réaliser des transactions dans les domaines suivants:
La stratégie construit un système de trading robuste en combinant le principe de la régression des valeurs moyennes et de multiples indicateurs techniques. Des réglages à faible taux de rendement au risque contribuent à améliorer les chances de victoire, tandis qu’une gestion rigoureuse des risques assure la sécurité des fonds. Bien qu’il y ait des risques inhérents, la stratégie est susceptible d’obtenir de meilleures performances grâce à une optimisation et à un perfectionnement continus.
/*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")