
La stratégie est un système de confirmation de trading à plusieurs niveaux combinant la croix de la moyenne, l’indicateur de la dynamique RSI et l’indicateur de la volatilité ATR. La stratégie utilise les moyennes mobiles de l’indicateur de 9 cycles et de 21 cycles (EMA) comme base principale de jugement de la tendance, tout en confirmant la dynamique en combinaison avec l’indicateur RSI et en utilisant l’indicateur ATR pour ajuster dynamiquement la taille de la position et la position de stop loss. La stratégie filtre efficacement les faux signaux et améliore la fiabilité des transactions grâce à la combinaison synchrone de plusieurs indicateurs techniques.
La logique centrale de la stratégie repose sur les aspects suivants:
La stratégie construit un système de trading robuste en combinant les trois dimensions de la croisée des lignes, la dynamique du RSI et la volatilité de l’ATR. L’avantage de la stratégie réside dans son mécanisme de confirmation à plusieurs niveaux complet et son système de gestion des risques dynamique, mais elle peut être exposée à des risques plus élevés dans les marchés volatiles. L’amélioration de la performance de la stratégie par l’ajout de filtres d’environnement de marché et l’optimisation des paramètres d’adaptation, ainsi que d’autres améliorations.
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("BTC Scalping Strategy", overlay=true, margin_long=100, margin_short=100, pyramiding=1)
// Inputs
emaFastLength = input.int(9, "Fast EMA Length")
emaSlowLength = input.int(21, "Slow EMA Length")
rsiLength = input.int(14, "RSI Length")
rsiOverbought = input.int(70, "RSI Overbought")
rsiOversold = input.int(30, "RSI Oversold")
atrLength = input.int(14, "ATR Length")
riskPercent = input.float(1, "Risk Percentage", step=0.5)
// Calculate Indicators
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
// Entry Conditions
longCondition = ta.crossover(emaFast, emaSlow) and rsi < rsiOverbought
shortCondition = ta.crossunder(emaFast, emaSlow) and rsi > rsiOversold
// Exit Conditions
takeProfitLevelLong = close + (atr * 3)
stopLossLevelLong = close - (atr * 1.5)
takeProfitLevelShort = close - (atr * 3)
stopLossLevelShort = close + (atr * 1.5)
// Position Sizing
equity = strategy.equity
riskAmount = equity * (riskPercent / 100)
positionSizeLong = riskAmount / (close - stopLossLevelLong)
positionSizeShort = riskAmount / (stopLossLevelShort - close)
// Strategy Execution
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSizeLong)
strategy.exit("Exit Long", "Long", limit=takeProfitLevelLong, stop=stopLossLevelLong)
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSizeShort)
strategy.exit("Exit Short", "Short", limit=takeProfitLevelShort, stop=stopLossLevelShort)
// Plotting
plot(emaFast, color=color.new(color.blue, 0), linewidth=2)
plot(emaSlow, color=color.new(color.red, 0), linewidth=2)
hline(rsiOverbought, "RSI OB", color=color.new(color.red, 50))
hline(rsiOversold, "RSI OS", color=color.new(color.green, 50))
// Alerts
alertcondition(longCondition, "Long Signal", "Potential Long Entry")
alertcondition(shortCondition, "Short Signal", "Potential Short Entry")