
Cette stratégie est un système de trading quantitatif basé sur la théorie de la régression des moyennes, combinant les bandes de Brin, les indicateurs RSI et le mécanisme d’arrêt dynamique ATR. La stratégie traite en identifiant les situations extrêmes où le prix s’écarte de la moyenne.
La stratégie utilise la bande de Brin de 20 cycles comme indicateur principal de tendance, le multiplicateur standard de la différence est de 2,0 pour déterminer la limite supérieure et inférieure de la fluctuation des prix. En même temps, le RSI de 14 cycles est introduit comme indicateur auxiliaire. Un RSI inférieur à 30 est considéré comme une survente et un RSI supérieur à 70 est considéré comme une survente.
La stratégie a été construite en utilisant une combinaison de Brin et RSI pour construire un système de négociation complet de la régression des valeurs moyennes. L’introduction de l’arrêt dynamique ATR a permis de contrôler efficacement les risques, ce qui a permis à la stratégie de bénéficier de bonnes caractéristiques de risque et de rendement. Bien qu’il y ait un certain espace d’optimisation, l’idée globale de la conception est claire et pratique.
/*backtest
start: 2024-11-19 00:00:00
end: 2024-11-26 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL/USDT Mean Reversion Strategy", overlay=true)
// Input parameters
length = input(20, "Bollinger Band Length")
std_dev = input(2.0, "Standard Deviation")
rsi_length = input(14, "RSI Length")
rsi_oversold = input(30, "RSI Oversold")
rsi_overbought = input(70, "RSI Overbought")
// Calculate indicators
[middle, upper, lower] = ta.bb(close, length, std_dev)
rsi = ta.rsi(close, rsi_length)
// Entry conditions
long_entry = close < lower and rsi < rsi_oversold
short_entry = close > upper and rsi > rsi_overbought
// Exit conditions
long_exit = close > middle or rsi > rsi_overbought
short_exit = close < middle or rsi < rsi_oversold
// Strategy execution
if (long_entry)
strategy.entry("Long", strategy.long)
if (short_entry)
strategy.entry("Short", strategy.short)
if (long_exit)
strategy.close("Long")
if (short_exit)
strategy.close("Short")
// Stop loss and take profit
atr = ta.atr(14)
strategy.exit("Long SL/TP", "Long", stop=strategy.position_avg_price - 2*atr, limit=strategy.position_avg_price + 3*atr)
strategy.exit("Short SL/TP", "Short", stop=strategy.position_avg_price + 2*atr, limit=strategy.position_avg_price - 3*atr)
// Plot indicators
plot(middle, color=color.yellow, title="BB Middle")
plot(upper, color=color.red, title="BB Upper")
plot(lower, color=color.green, title="BB Lower")
// Plot entry and exit points
plotshape(long_entry, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(short_entry, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(long_exit, title="Long Exit", location=location.abovebar, color=color.orange, style=shape.circle, size=size.small)
plotshape(short_exit, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.circle, size=size.small)