La stratégie MACD de Samsuga SuperTrend

Auteur:ChaoZhang est là., Date: 2024-03-11 11h24
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur SuperTrend et l'indicateur MACD pour capturer les petites tendances pour le profit. Elle utilise l'indicateur SuperTrend pour déterminer la tendance actuelle du marché et l'indicateur MACD comme condition auxiliaire pour l'entrée et la sortie.

Principe de stratégie

  1. Utiliser la fonction ta.supertrend pour calculer l'indicateur SuperTrend avec les paramètres de la période ATR et le facteur multiplicateur.
  2. Déterminez la tendance longue/courte en fonction des changements de direction de l'indicateur SuperTrend. Lorsque la direction change de plus de 0 à moins ou égale à 0, elle est considérée comme une tendance haussière; sinon, elle est considérée comme une tendance baissière.
  3. Utilisez la fonction request.security pour obtenir les valeurs de l'indicateur MACD sur la période de 30 minutes, y compris la ligne MACD, la ligne de signal et l'histogramme.
  4. Dans une tendance haussière, si l'histogramme MACD est supérieur à 0, ouvrir une position longue et fermer toute position courte précédente.
  5. Dans une tendance à la baisse, si l'histogramme MACD est inférieur à 0, ouvrir une position courte et fermer toute position longue précédente.

Analyse des avantages

  1. Combine les indicateurs de tendance et de dynamique, ce qui lui permet de bien s'adapter aux différentes conditions du marché.
  2. Utilise un indicateur MACD à plus long terme comme condition auxiliaire, ce qui peut filtrer efficacement certains faux signaux.
  3. La logique de la stratégie est simple et directe, facile à comprendre et à mettre en œuvre, adaptée aux débutants.
  4. Les paramètres stratégiques sont réglables et peuvent être optimisés pour différents marchés et instruments.

Analyse des risques

  1. La stratégie peut générer des signaux de négociation fréquents sur des marchés instables, ce qui entraîne une fréquence de négociation élevée et des coûts de glissement.
  2. L'indicateur SuperTrend est sensible aux paramètres et des valeurs de paramètres différentes peuvent donner des résultats différents.
  3. L'indicateur MACD peut présenter une divergence par rapport au prix, ce qui entraîne des signaux de trading erronés.
  4. La stratégie ne comporte pas de mesures d'arrêt des pertes, ce qui peut l'exposer à un risque accru en cas de faiblesse de la continuité de la tendance ou d'événements inattendus.

Direction de l'optimisation

  1. Considérez l'ajout de conditions de filtrage supplémentaires, telles que la rupture des prix à travers des niveaux de support/résistance importants, les changements de volume des transactions, etc., afin d'améliorer la fiabilité du signal.
  2. Pour les marchés instables, envisagez d'utiliser un indicateur MACD à plus court laps de temps ou d'autres indicateurs adaptés aux marchés à fourchette pour déterminer la tendance.
  3. L'établissement de référence doit fournir des informations détaillées sur les risques liés à l'exécution de la transaction.
  4. Optimiser les paramètres pour différents marchés et instruments afin de trouver les combinaisons de paramètres les plus appropriées.

Conclusion

En combinant l'indicateur SuperTrend et l'indicateur MACD, cette stratégie capte les petites tendances tout en tenant compte de la continuité de la tendance, ce qui en fait une stratégie relativement complète et équilibrée. Les atouts de la stratégie résident dans sa logique claire, sa facilité de compréhension et de mise en œuvre, et l'utilisation d'un indicateur MACD à plus long terme comme condition auxiliaire pour filtrer efficacement les faux signaux. Cependant, la stratégie comporte également certains risques, tels que le potentiel de négociation fréquente sur des marchés agités, la sensibilité aux paramètres et l'absence de mesures de stop-loss.


/*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")

Plus de