Stratégie de croisement multi-indicateurs adaptative dynamique combinée au système de contrôle intelligent des risques SRSI et MACD

RSI SRSI MACD ATR
Date de création: 2025-02-20 13:07:37 Dernière modification: 2025-02-27 17:44:09
Copier: 1 Nombre de clics: 329
2
Suivre
319
Abonnés

Stratégie de croisement multi-indicateurs adaptative dynamique combinée au système de contrôle intelligent des risques SRSI et MACD Stratégie de croisement multi-indicateurs adaptative dynamique combinée au système de contrôle intelligent des risques SRSI et MACD

Aperçu

La stratégie est un système de trading dynamique qui combine un indicateur aléatoire relativement faible (SRSI) et un indicateur mobile de tendance/diffusion (MACD). Il permet une gestion intelligente du risque en ajustant dynamiquement les points d’arrêt et d’arrêt avec l’indicateur ATR. Le cœur de la stratégie est de générer des signaux de trading par la confirmation croisée de plusieurs indicateurs techniques, tout en gérant les positions en fonction de la volatilité du marché.

Principe de stratégie

Le fonctionnement de la stratégie repose sur les mécanismes centraux suivants:

  1. Calculer la différence entre la ligne K et la ligne D dans l’indicateur SRSI et la différence entre la ligne K et le MACD normalisé pour déterminer la tendance du marché
  2. Les conditions d’achat doivent être remplies simultanément: différence K-D est positive, différence K-MACD est positive et le MACD n’est pas en baisse
  3. Les conditions de vente doivent être remplies simultanément: la différence K-D est négative, la différence K-MACD est négative et le MACD n’est pas en hausse
  4. Utilisez l’ATR multiplié par le coefficient de risque pour calculer dynamiquement les arrêts de perte et les arrêts de rupture, en s’adaptant à la volatilité du marché

Avantages stratégiques

  1. Les mécanismes de confirmation de signaux multiples améliorent considérablement la fiabilité des transactions et évitent les faux signaux qu’un seul indicateur pourrait entraîner.
  2. Les paramètres de stop-loss dynamiques permettent de s’adapter automatiquement aux fluctuations du marché, offrant un meilleur rapport risque/bénéfice.
  3. La stratégie est bien adaptée et peut maintenir une performance stable dans différents environnements de marché
  4. Les paramètres sont réglables et permettent aux traders d’optimiser en fonction de leurs préférences personnelles en matière de risque

Risque stratégique

  1. Les signaux de transaction peuvent être excessifs dans un marché en crise, entraînant des entrées et des sorties fréquentes.
  2. L’utilisation de multiples indicateurs peut entraîner un retard de signal et la perte d’une opportunité d’entrée optimale dans un marché en évolution rapide
  3. L’ATR est basé sur la volatilité historique et peut ne pas être adapté en temps opportun aux fluctuations du marché.
  4. Il est nécessaire de définir un coefficient de risque raisonnable, trop grand ou trop petit peut nuire à l’efficacité de la stratégie

Orientation de l’optimisation de la stratégie

  1. Ajout d’un filtre de tendance, différents critères de reconnaissance des signaux dans les marchés oscillants et les marchés tendance
  2. Introduction d’indicateurs de débit comme confirmation auxiliaire pour améliorer la fiabilité du signal
  3. La méthode de calcul de l’optimisation de l’arrêt de perte de frein peut être envisagée en combinaison avec le point de résistance de support
  4. Ajout de modèles de prévision de la volatilité du marché et ajustement anticipé des paramètres de risque
  5. Considérer la confirmation des signaux sur différentes périodes de temps pour augmenter la robustesse de la stratégie

Résumer

La stratégie construit un système de négociation robuste en combinant les avantages du SRSI et du MACD. Le mécanisme de gestion dynamique des risques le rend bien adapté, mais nécessite toujours l’optimisation des paramètres par le trader en fonction des conditions réelles du marché. Le fonctionnement réussi de la stratégie nécessite une compréhension approfondie du marché et une gestion rationnelle des positions combinée à la tolérance au risque de l’individu.

Code source de la stratégie
/*backtest
start: 2024-09-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy(title="SRSI + MACD Strategy with Dynamic Stop-Loss and Take-Profit", shorttitle="SRSI + MACD Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// User Inputs
smoothK = input.int(3, "K", minval=1) 
smoothD = input.int(3, "D", minval=1) 
lengthRSI = input.int(16, "RSI Length", minval=1) 
lengthStoch = input.int(16, "Stochastic Length", minval=1) 
src = input(close, title="RSI Source") 
enableStopLoss = input.bool(true, "Enable Stop-Loss")  
enableTakeProfit = input.bool(true, "Enable Take-Profit")  
riskFactor = input.float(2.5, "Risk Factor", minval=0.1, step=1)  

// Calculate K and D lines
rsi1 = ta.rsi(src, lengthRSI) 
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) 
d = ta.sma(k, smoothD) 
differenceKD = k - d 

// Calculate MACD and normalization
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) 
lowestK = ta.lowest(k, lengthRSI) 
highestK = ta.highest(k, lengthRSI) 
normalizedMacd = (macdLine - ta.lowest(macdLine, lengthRSI)) / (ta.highest(macdLine, lengthRSI) - ta.lowest(macdLine, lengthRSI)) * (highestK - lowestK) + lowestK 
differenceKMacd = k - normalizedMacd 

// Sum both differences for a unique display
differenceTotal = (differenceKD + differenceKMacd) / 2

// Check if MACD is falling or rising
isMacdFalling = ta.falling(macdLine, 1)  
isMacdRising = ta.rising(macdLine, 1)  

// Check if K is falling or rising
isKFalling = ta.falling(k, 1)  
isKdRising = ta.rising(k, 1)  

// Calculate ATR and dynamic levels
atrValue = ta.atr(14)  
stopLossDistance = atrValue * riskFactor  
takeProfitDistance = atrValue * riskFactor  

// Variables for stop-loss and take-profit levels
var float longStopPrice = na
var float longTakeProfitPrice = na

// Buy and sell conditions with differenceKD added
buyCondition = ((differenceTotal > 0 or differenceKD > 0) and (isKdRising or isMacdRising) and k < 20 )  
sellCondition = ((differenceTotal <= 0 or differenceKD <= 0) and (isKFalling or isMacdFalling) and k > 80)  

// Execute strategy orders with conditional stop-loss and take-profit
if buyCondition and strategy.position_size == 0
    strategy.entry("Buy", strategy.long)

if strategy.position_size > 0
    longStopPrice := strategy.position_avg_price - stopLossDistance  
    longTakeProfitPrice := strategy.position_avg_price + takeProfitDistance  

    if enableStopLoss or enableTakeProfit
        strategy.exit("Sell/Exit", "Buy", stop=(enableStopLoss ? longStopPrice : na), limit=(enableTakeProfit ? longTakeProfitPrice : na))

if sellCondition
    strategy.close("Buy")  

// Hide lines when position is closed
stopLossToPlot = strategy.position_size > 0 ? longStopPrice : na
takeProfitToPlot = strategy.position_size > 0 ? longTakeProfitPrice : na

// Plot stop-loss and take-profit lines only when long positions are active
plot(enableStopLoss ? stopLossToPlot : na, title="Stop-Loss", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true) 
plot(enableTakeProfit ? takeProfitToPlot : na, title="Take-Profit", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true)

// Plot the MACD and candles

plot(normalizedMacd, "Normalized MACD", color=color.new(color.purple, 0), linewidth=1, display=display.all)

h0 = hline(80, "Upper Band", color=#787B86) 
hline(50, "Middle Band", color=color.new(#787B86, 50)) 
h1 = hline(20, "Lower Band", color=#787B86) 
fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")

// New candle based on the sum of differences
plotcandle(open=0, high=differenceTotal, low=0, close=differenceTotal, color=(differenceTotal > 0 ? color.new(color.green, 60) : color.new(color.red, 60)), title="K-D + MACD Candles")