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 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.
La stratégie peut être optimisée dans les aspects suivants:
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 ///