Stratégie de négociation croisée de l'indicateur MACD sur plusieurs délais

Auteur:ChaoZhang est là., Date: 2024-02-19 11:03:54 Je suis désolé
Les étiquettes:

img

Résumé

L'indicateur MACD multi-temporel est une stratégie de trading croisée qui génère des signaux de trading lorsque le prix traverse l'indicateur MACD calculé avec différents paramètres, permettant ainsi le trading automatisé d'actions, indices, forex et autres produits financiers.

La logique de la stratégie

La stratégie calcule 3 moyennes mobiles simultanément: une moyenne mobile pondérée WMA et deux moyennes mobiles exponentielles EMA. Les paramètres de ces trois moyennes mobiles sont définis différemment, qui sont respectivement de 25 jours, 50 jours et 100 jours.

Une fois les moyennes mobiles calculées, la stratégie surveille si le prix dépasse ou tombe en dessous de l'une des moyennes mobiles.

Par exemple, un signal d'achat est généré lorsque le prix est au-dessus de toutes les 3 moyennes mobiles en même temps. Un signal de vente est généré lorsque le prix tombe en dessous des 3 moyennes mobiles en même temps. La surveillance du prix par rapport aux moyennes mobiles peut déterminer les points d'inversion du mouvement des prix.

En comparant avec des indicateurs multi-temps, certains faux signaux peuvent être filtrés, ce qui rend les signaux de trading plus fiables.

Analyse des avantages

  • Utilisez l'analyse multi-temps pour filtrer les faux signaux
  • Facile d'optimiser les paramètres pour s'adapter aux conditions du marché sur différentes périodes
  • Peut être appliqué à plusieurs produits, y compris les actions, les indices, le forex, etc.

Analyse des risques

  • Le décalage des indicateurs peut faire perdre des opportunités à court terme
  • Risque de perte lorsque les niveaux de prix ne sont pas maintenus
  • Paramètres de réglage fin par la suite pour optimiser le stop loss et le profit

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les périodes de moyenne mobile pour adapter davantage de cycles de marché
  2. Ajouter d'autres indicateurs techniques pour le filtrage, tels que l'indice de surachat et de survente
  3. Ajouter le mécanisme de perte d'arrêt, peut utiliser l'indicateur ATR pour la distance d'arrêt
  4. Extensible à d'autres produits comme les contrats à terme, optimiser les paramètres

Résumé

La stratégie multi-temporelle MACD a un flux logique clair. Elle détermine les tendances des prix sur plusieurs périodes en utilisant des moyennes mobiles et génère des signaux de trading lorsque des renversements importants se produisent.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TC - MACDoscillator v2", overlay=true)
// ___________      .__                   _________               .__  __         .__   
// \__    ___/____  |  |    ____   ____   \_   ___ \_____  ______ |__|/  |______  |  |  
//   |    |  \__  \ |  |   / ___\ /  _ \  /    \  \/\__  \ \____ \|  \   __\__  \ |  |  
//   |    |   / __ \|  |__/ /_/  >  <_> ) \     \____/ __ \|  |_> >  ||  |  / __ \|  |__
//   |____|  (____  /____/\___  / \____/   \______  (____  /   __/|__||__| (____  /____/
//                \/     /_____/                  \/     \/|__|                 \/      
//
// MACDoscillator Strategy v2
// Josh Breitfeld 2016
//

/// INPUTS START ///

//tradeSize = input(title="Shares Per Trade",  defval=2500, step=1)
WMALength = input(title="WMA Length",  defval=25, step=1)
EMA1Length = input(title="EMA1 Length",  defval=50, step=1)
EMA2Length = input(title="EMA2 Length",  defval=100, step=1)
//security = input(title="Alternate Security", type=string, defval="SPX500")
//inverse = input(title="Inverse Signals", type=bool, defval=true)

/// INPUTS END ///

/// ALGORITHM START ///

/// Define calculations
WMA = wma(close,WMALength)
EMA1 = ema(close,EMA1Length)
EMA2 = ema(close,EMA2Length)

/// Grab values from alternate security
dWMA = WMA
dEMA1 = EMA1
dEMA2 = EMA2

aClose = close

/// Crossover signal system

/// Long crosses
lc1 = aClose > dWMA ? true : false
lc2 = aClose > dEMA1 ? true : false
lc3 = aClose > dEMA2 ? true: false

/// Short crosses
sc1 = aClose < dWMA ? true : false
sc2 = aClose < dEMA1 ? true : false
sc3 = aClose < dEMA2 ? true : false

//plot(lc1,color=green)
//plot(lc2,color=green)
//plot(lc3,color=green)
//plot(sc1,color=red)
//plot(sc2,color=red)
//plot(sc3,color=red)


/// ALGO ORDER CONDITIONS START ///

pBuyToOpen = (lc1 and lc2 and lc3 ? true : false)
pSellToOpen = (sc1 and sc2 and sc3 ?  true : false)
pSellToClose = (lc1 ? true : false) and not pBuyToOpen
pBuyToClose = (sc1 ? true : false) and not pSellToOpen

//plot(pBuyToOpen,color=lime)
//plot(pBuyToClose,color=lime)
//plot(pSellToOpen,color=red)
//plot(pSellToClose,color=red)
/// INVERT SIGNALS

//buyToOpen = inverse ? -pBuyToOpen : pBuyToOpen
//sellToOpen = inverse ? -pBuyToOpen : pSellToOpen
//sellToClose = inverse ? -pSellToClose : pSellToClose
//buyToClose = inverse ? -pBuyToClose : pBuyToClose

/// ALGO ORDER CONDITIONS END ///

/// ALGORITHM END ///

/// DEFINE PLOTS ///

plot(dWMA,"WMA",lime,1,line)
plot(dEMA1,"EMA1",blue,2,line)
plot(dEMA2,"EMA2",red,3,line)
//plot(aClose,"Close",orange,4,line)

/// PLOTS END ///

/// ORDER BLOCK ///

    //strategy.entry("My Long Entry Id", strategy.long)

/// OPENING ORDERS START ///
if(pBuyToOpen) 
    strategy.entry("BTO", strategy.long, comment="BTO")
if(pSellToOpen) 
    strategy.entry("STO", strategy.short, comment="STO")

/// OPENING ORDERS END ///

/// CLOSING ORDERS START ///
strategy.close("BTO", pBuyToClose)
strategy.close("STO", pSellToClose)
/// CLOSING ORDERS END ///

/// END ORDER BLOCK ///

// Josh Breitfeld - Talgo Capital 2016
/// STRATEGY END ///

Plus de