Stratégie de contrôle des risques basée sur Super Trend et MACD


Date de création: 2024-03-11 11:24:20 Dernière modification: 2024-03-11 11:24:20
Copier: 0 Nombre de clics: 699
1
Suivre
1617
Abonnés

Stratégie de contrôle des risques basée sur Super Trend et MACD

Aperçu

La stratégie utilise les indicateurs de super-tendance pour juger de la tendance actuelle du marché, tout en utilisant les indicateurs de MACD comme conditions auxiliaires pour l’entrée et la sortie. La logique de la stratégie est claire, facile à comprendre et à mettre en œuvre.

Principe de stratégie

  1. La fonction ta.supertrend est utilisée pour calculer l’indicateur de super-tendance, avec les paramètres ATR et le facteur de multiplication.
  2. Une tendance à la hausse est considérée comme une tendance à la baisse lorsque la direction change de plus de 0 à moins de 0, et vice versa.
  3. Utilisez la fonction request.security pour obtenir les valeurs de l’indicateur MACD sur une période de 30 minutes, y compris les lignes MACD, les lignes de signal et les diagrammes à colonnes.
  4. Dans une tendance haussière, si le MACD est supérieur à 0, il est possible d’ouvrir plus de positions et d’effacer les positions précédemment vides.
  5. Dans une tendance baissière, si la colonne MACD est inférieure à 0, la position est libérée et les positions précédentes sont annulées.

Analyse des avantages

  1. La combinaison de suivi des tendances et d’indicateurs de dynamique permet de mieux s’adapter aux différentes conditions du marché.
  2. L’utilisation d’indicateurs MACD à plus longs cycles comme conditions auxiliaires permet de filtrer efficacement certains faux signaux.
  3. La logique de la stratégie est simple, facile à comprendre et à mettre en œuvre, adaptée aux débutants.
  4. Les paramètres de la stratégie sont réglables et peuvent être optimisés pour différents marchés et variétés.

Analyse des risques

  1. Les signaux de négociation peuvent être plus nombreux dans les marchés en turbulence, ce qui entraîne des transactions plus fréquentes et des coûts de points de dérapage plus élevés.
  2. L’indicateur de super-tendance est plus sensible aux paramètres, et différents paramètres peuvent donner des résultats différents.
  3. Il peut arriver que l’indicateur MACD s’écarte du prix, ce qui entraîne de faux signaux de trading.
  4. La stratégie manque de mesures de freinage, ce qui peut entraîner des risques plus importants en cas de faiblesse persistante ou d’événements soudains.

Direction d’optimisation

  1. On peut envisager d’ajouter d’autres conditions de filtrage, telles que la rupture d’un support ou d’une résistance critique, des variations du volume de transactions, etc., pour améliorer la fiabilité du signal.
  2. Pour les marchés en secousse, il est possible d’envisager d’utiliser un MACD à plus courtes périodes ou d’autres indicateurs adaptés aux marchés en secousse pour juger de la tendance.
  3. Des mesures de stop-loss peuvent être ajoutées, telles que des stop-loss à points fixes, des stop-loss mobiles, etc., pour contrôler le risque maximal d’une transaction unique.
  4. Les paramètres peuvent être optimisés pour différents marchés et variétés afin de trouver la combinaison de paramètres la plus appropriée.

Résumer

La stratégie est plus complète et équilibrée, car elle prend en compte la continuité de la tendance tout en capturant les petites tendances. L’avantage de la stratégie réside dans sa clarté logique, sa facilité d’appréciation et de mise en œuvre, et le fait qu’elle filtre efficacement certains faux signaux en utilisant des indices MACD à plus longues périodes comme conditions auxiliaires.

Code source de la stratégie
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Samsuga supertrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 3
macdp2=10
macdp3=6

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = "30",expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
if(longcondition)
    if(histLine[0] > 0)    
        strategy.close("Short",comment = "E-S", alert_message = "E-S",disable_alert = true)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
else if(shortCondition) 
    if(histLine[0] < 0)    
        strategy.close("Long",comment = "E-L",alert_message = "E-L",disable_alert = true)
        strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")