Stratégie de contrôle dynamique des risques avec modèle d'engloutissement amélioré Supertrend

ATR SL TP CANDLE supertrend ENGULFING
Date de création: 2025-02-20 15:32:32 Dernière modification: 2025-02-20 15:32:32
Copier: 6 Nombre de clics: 319
2
Suivre
319
Abonnés

Stratégie de contrôle dynamique des risques avec modèle d’engloutissement amélioré Supertrend Stratégie de contrôle dynamique des risques avec modèle d’engloutissement amélioré Supertrend

Aperçu

Il s’agit d’une stratégie de négociation avancée combinant l’indicateur Supertrend et la forme d’absorption. La stratégie permet un filtrage précis des signaux de négociation en identifiant les modèles de dessin de la forme d’absorption dans le marché et en confirmant la direction de la tendance combinée avec l’indicateur Supertrend. La stratégie intègre également des paramètres de stop loss et de profit dynamiques pour contrôler efficacement les risques tout en garantissant un espace de profit.

Principe de stratégie

La stratégie repose principalement sur les principes suivants:

  1. L’indicateur de Supertrend est calculé à l’aide de l’ATR (Average True Rate) pour déterminer la tendance générale du marché.
  2. Le filtrage des formes de dévoration efficaces est effectué en définissant le seuil de Boring Candle et le seuil d’Engulfing Candle.
  3. Les positions sont ouvertes lorsque la direction de la tendance Supertrend est en phase avec la direction de la forme engloutie.
  4. Le placement de stop-loss et de gain est dynamique et est calculé proportionnellement au prix d’ouverture.
  5. Utilisez la gestion stratégique de votre position pour vous assurer que vous n’avez qu’une seule direction de transaction à la fois.

Avantages stratégiques

  1. Le contrôle de la qualité du signal est strict et la précision est améliorée par la double confirmation ((trend + mode)).
  2. Le concept d’austérité et d’absorption des seuils a été introduit pour filtrer les faux signaux.
  3. Les calculs dynamiques de Supertrend basés sur l’ATR permettent une bonne adaptation au marché.
  4. Un mécanisme de gestion des pertes et des bénéfices parfait, qui maîtrise les risques et bloque les bénéfices.
  5. La visualisation est parfaite, les signaux de trading, les points de stop-loss et les objectifs de profit sont clairement visibles.

Risque stratégique

  1. Les signaux de fausse rupture peuvent être fréquents dans les marchés en crise.
  2. Les paramètres fixes de stop loss et de profit peuvent ne pas être adaptés à tous les environnements de marché.
  3. La reprise pourrait être plus importante si la tendance se retourne.
  4. Les paramètres sont sensibles aux paramètres, et les paramètres incorrects peuvent entraîner une mauvaise performance de la stratégie.
  5. Dans les marchés moins fluides, il est possible de faire face à un risque de glissement.

Orientation de l’optimisation de la stratégie

  1. Les indicateurs de quantité de trafic peuvent être introduits comme signal de confirmation.
  2. Considérer l’ajout d’un mécanisme de régulation du multiplicateur ATR dynamique.
  3. Le ratio stop-loss et profit est ajusté en fonction de la dynamique de la volatilité du marché.
  4. Ajouter un filtre temporel pour éviter de négocier à des moments inappropriés.
  5. Envisagez d’ajouter des filtres d’intensité de tendance pour améliorer la qualité des transactions.

Résumer

Il s’agit d’une stratégie de conception rigoureuse et logiquement claire, qui permet un meilleur contrôle de la qualité du signal grâce à la combinaison d’indicateurs techniques et d’analyses morphologiques. Le mécanisme de gestion des risques de la stratégie est parfait, l’effet de visualisation est excellent et convient aux tests et à l’optimisation sur le terrain.

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

//@version=5
strategy('Strategy Engulfing', overlay=true)

// Inputs
Periods = input(title='ATR Period', defval=5)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=1.0)
highlighting = input(title='Highlighter On/Off?', defval=true)
boringThreshold = input.int(5, title='Boring Candle Threshold (%)', minval=1, maxval=100, step=1)
engulfingThreshold = input.int(50, title='Engulfing Candle Threshold (%)', minval=1, maxval=100, step=1)
OpenPosisi = input.int(2000, title='OpenPosisi (Pips)', minval=-25000)
stoploss = input.int(10000, title='Stop Loss (Pips)', minval=-25000)
takeprofit = input.int(20000, title='Take Profit (Pips)', minval=-25000)

// ATR Calculation
atr = ta.atr(Periods)

// Supertrend Calculation
up = src - Multiplier * atr
up := close[1] > nz(up[1]) ? math.max(up, nz(up[1])) : up
dn = src + Multiplier * atr
dn := close[1] < nz(dn[1]) ? math.min(dn, nz(dn[1])) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn[1] ? 1 : trend == 1 and close < up[1] ? -1 : trend

// Plotting Supertrend
plot(trend == 1 ? up : na, color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Up')
plot(trend == -1 ? dn : na, color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Down')

// Engulfing Candlestick
isBoringCandle = math.abs(open[1] - close[1]) <= (high[1] - low[1]) * boringThreshold / 100
isEngulfingCandle = math.abs(open - close) * 100 / math.abs(high - low) <= engulfingThreshold

bullEngulfing = strategy.opentrades == 0 and trend == 1 and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = strategy.opentrades == 0 and trend == -1 and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Calculate Limit Price
limitbull = bullEngulfing ? close + OpenPosisi * syminfo.mintick : na
limitbear = bearEngulfing ? close - OpenPosisi * syminfo.mintick : na

// Calculate Stop Loss
bullishStopLoss = bullEngulfing ? limitbull - stoploss * syminfo.mintick : na
bearishStopLoss = bearEngulfing ? limitbear + stoploss * syminfo.mintick : na

// Calculate Take Profit
bullishTakeProfit = bullEngulfing ? limitbull + takeprofit * syminfo.mintick : na
bearishTakeProfit = bearEngulfing ? limitbear - takeprofit * syminfo.mintick : na


// Alerts for Engulfing Candles (Trigger Immediately)
if bullEngulfing
    alert('Bullish Engulfing Candle Formed!')

if bearEngulfing
    alert('Bearish Engulfing Candle Formed!')

// Plot shapes
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.new(color.green, 0))
plotshape(bearEngulfing, style=shape.triangledown, location=location.belowbar, color=color.new(color.red, 0))


plot(limitbull, title='Bullish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(limitbear, title='Bearish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(bullishStopLoss, title='Bullish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bearishStopLoss, title='Bearish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bullishTakeProfit, title='Bullish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)
plot(bearishTakeProfit, title='Bearish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)

// Label Stop Loss and Take Profit
label.new(bullEngulfing ? bar_index : na, bullishStopLoss, text='SL: ' + str.tostring(bullishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishStopLoss, text='SL: ' + str.tostring(bearishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bullEngulfing ? bar_index : na, bullishTakeProfit, text='TP: ' + str.tostring(bullishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishTakeProfit, text='TP: ' + str.tostring(bearishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_up, size=size.tiny)


// Strategy execution
if bullEngulfing
    strategy.entry('BUY', strategy.long, stop=limitbull)
    strategy.exit('TP/SL', from_entry='BUY', limit=bullishTakeProfit, stop=bullishStopLoss)

if bearEngulfing
    strategy.entry('SELL', strategy.short, stop=limitbear)
    strategy.exit('TP/SL', from_entry='SELL', limit=bearishTakeProfit, stop=bearishStopLoss)