
La stratégie est un système de trading automatisé basé sur des signaux croisés de multiples moyennes mobiles (SMA) et d’indicateurs relativement faibles (RSI). Il combine le mécanisme de vérification multiple des moyennes mobiles à court et moyen terme et la confirmation de la tendance par l’indicateur RSI, tout en utilisant le stop loss ATR dynamique pour contrôler le risque, pour créer un cadre de décision de trading complet. La stratégie est principalement utilisée pour capturer les points de basculement des tendances du marché et améliorer la précision des transactions grâce à la confirmation croisée de plusieurs indicateurs techniques.
La logique centrale de la stratégie est basée sur un jugement combiné de cinq conditions clés:
Une stratégie ne génère un signal d’achat que si ces cinq conditions sont réunies. Après l’entrée, la stratégie utilise des niveaux de stop-loss et de stop-loss dynamiques basés sur l’ATR, avec un stop-loss défini à 1,5 fois l’ATR et un stop-loss défini à 2,5 fois l’ATR, une conception qui permet d’ajuster automatiquement les paramètres de gestion du risque en fonction de la volatilité du marché.
Il s’agit d’une stratégie de trading technique conçue de manière raisonnable pour améliorer l’exactitude des transactions grâce à la confirmation croisée de plusieurs indicateurs techniques et pour protéger les bénéfices grâce à un système de gestion dynamique des risques. Bien que la stratégie présente certaines limitations, sa performance peut être encore améliorée par une orientation d’optimisation recommandée.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Virat Bharat Auto Trade", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// **User-Defined Inputs for Customization**
smaLength20 = input(20, title="SMA High/Low 20 Length")
smaLength50 = input(50, title="SMA High/Low 50 Length")
rsiLength = input(7, title="RSI Length")
rsiLevel = input(50, title="RSI Crossover Level")
atrMultiplierSL = input(1.5, title="ATR Multiplier for Stop Loss")
atrMultiplierTP = input(2.5, title="ATR Multiplier for Target")
// **Defining the Indicators with Custom Inputs**
smaHigh20 = ta.sma(high, smaLength20)
smaLow20 = ta.sma(low, smaLength20)
smaHigh50 = ta.sma(high, smaLength50)
smaLow50 = ta.sma(low, smaLength50)
rsiValue = ta.rsi(close, rsiLength)
atrValue = ta.atr(14) // ATR for Dynamic Stop Loss & Target
// **Conditions for Buy Signal**
condition1 = ta.crossover(close, smaHigh20)
condition2 = ta.crossover(close, smaLow20)
condition3 = ta.crossover(close, smaHigh50)
condition4 = ta.crossover(close, smaLow50)
condition5 = ta.crossover(rsiValue, rsiLevel)
// **Final Buy Signal (Only when all conditions match)**
buySignal = condition1 and condition2 and condition3 and condition4 and condition5
// **Buy Price, Stop Loss & Target**
buyPrice = close
stopLoss = buyPrice - (atrValue * atrMultiplierSL) // Dynamic Stop Loss
target = buyPrice + (atrValue * atrMultiplierTP) // Dynamic Target
// **Plot Buy Signal on Chart**
plotshape(buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY", size=size.small, text="BUY")
// **Plot Labels for Buy, Stop Loss & Target**
if buySignal
label.new(x=bar_index, y=buyPrice, text="BUY @ " + str.tostring(buyPrice, format="#.##"), color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down, yloc=yloc.price)
label.new(x=bar_index, y=stopLoss, text="STOP LOSS @ " + str.tostring(stopLoss, format="#.##"), color=color.red, textcolor=color.white, size=size.small, style=label.style_label_down, yloc=yloc.price)
label.new(x=bar_index, y=target, text="TARGET @ " + str.tostring(target, format="#.##"), color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_up, yloc=yloc.price)
// **Strategy Trading Logic - Automated Entry & Exit**
if buySignal
strategy.entry("BUY", strategy.long)
strategy.exit("SELL", from_entry="BUY", loss=atrValue * atrMultiplierSL, profit=atrValue * atrMultiplierTP)