
La stratégie est une stratégie de suivi de tendance qui combine un système de croisement bi-homogène avec un indice relativement faible (RSI). Elle capture les tendances du marché en croisant les moyennes mobiles à 9 cycles et 21 cycles (EMA), tout en utilisant le RSI pour les filtres de survente et de survente, et en combinant la confirmation de la transaction pour améliorer la fiabilité des signaux de négociation. La stratégie intègre également un mécanisme de stop-loss dynamique basé sur l’amplitude réelle des fluctuations (ATR), permettant un contrôle du risque sur tous les fronts.
La logique fondamentale de la stratégie repose sur les éléments clés suivants :
Le système génère un signal d’arrêt lorsque l’EMA rapide traverse vers le haut l’EMA lente et que le RSI est supérieur à 40 et que le volume de transactions est supérieur au seuil. Inversement, le système génère un signal d’arrêt lorsque l’EMA rapide traverse vers le bas l’EMA lente et que le RSI est inférieur à 60 et que le volume de transactions est confirmé.
La stratégie utilise une combinaison scientifique d’indicateurs techniques classiques pour construire un système de suivi des tendances rigoureusement logique. Les multiples mécanismes de filtrage et les moyens de contrôle des risques de la stratégie lui confèrent une forte valeur d’application sur le terrain.
/*backtest
start: 2024-11-07 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Call & Put Options Strategy (Optimized)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// 📌 Configuration Parameters
emaShort = input(9, title="Short EMA")
emaLong = input(21, title="Long EMA")
rsiLength = input(14, title="RSI Period")
rsiOverbought = input(60, title="RSI Overbought") // Adjusted for more signals
rsiOversold = input(40, title="RSI Oversold") // More flexible to confirm buys
atrLength = input(14, title="ATR Period")
atrMult = input(1.5, title="ATR Multiplier for Stop Loss")
minVol = input(100000, title="Minimum Volume to Confirm Entry") // Volume filter
// 🔹 Indicator Calculations
emaFast = ta.ema(close, emaShort)
emaSlow = ta.ema(close, emaLong)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
vol = volume
// 📌 Entry Signal Conditions
condCALL = ta.crossover(emaFast, emaSlow) and rsi > rsiOversold and vol > minVol
condPUT = ta.crossunder(emaFast, emaSlow) and rsi < rsiOverbought and vol > minVol
// 🚀 Plot signals on the chart
plotshape(condCALL, location=location.belowbar, color=color.green, style=shape.labelup, title="CALL", size=size.small)
plotshape(condPUT, location=location.abovebar, color=color.red, style=shape.labeldown, title="PUT", size=size.small)
// 🎯 Alert conditions
alertcondition(condCALL, title="CALL Signal", message="📈 CALL signal confirmed")
alertcondition(condPUT, title="PUT Signal", message="📉 PUT signal confirmed")
// 📌 Risk Management - Stop Loss and Take Profit
longStop = close - (atr * atrMult)
shortStop = close + (atr * atrMult)
strategy.entry("CALL", strategy.long, when=condCALL)
strategy.exit("CALL Exit", from_entry="CALL", stop=longStop)
strategy.entry("PUT", strategy.short, when=condPUT)
strategy.exit("PUT Exit", from_entry="PUT", stop=shortStop)