Cette stratégie construit des signaux de trading basés sur l'indicateur MACD DEMA de Toff
Les règles de négociation sont les suivantes: aller long lorsque le MACD à décalage zéro franchit la ligne 0, et aller court lorsque le MACD franchit la ligne 0.
L'avantage de cette stratégie MACD à décalage zéro est qu'elle peut capturer les changements de tendance de manière plus sensible. L'utilisation de DEMA au lieu de EMA filtre également les fausses ruptures. Cependant, le MACD lui-même a une capacité de jugement limitée sur l'action des prix complexes, avec un certain risque de faux signaux.
En résumé, la stratégie de rupture MACD DEMA à décalage zéro fonctionne très bien sur les mouvements de tendance forts, saisissant rapidement les opportunités.
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy(title="Patron04 MACD DEMA Strategy",default_qty_type = strategy.percent_of_equity,default_qty_value = 3500, overlay=true) testStartYear = input(2000, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2100, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false sma = input(12,title='DEMA Courte') lma = input(26,title='DEMA Longue') tsp = input(9,title='Signal') dolignes = input(true,title="Lignes") MMEslowa = ema(close,lma) MMEslowb = ema(MMEslowa,lma) DEMAslow = ((2 * MMEslowa) - MMEslowb ) MMEfasta = ema(close,sma) MMEfastb = ema(MMEfasta,sma) DEMAfast = ((2 * MMEfasta) - MMEfastb) LigneMACDZeroLag = (DEMAfast - DEMAslow) MMEsignala = ema(LigneMACDZeroLag, tsp) MMEsignalb = ema(MMEsignala, tsp) Lignesignal = ((2 * MMEsignala) - MMEsignalb ) MACDZeroLag = (LigneMACDZeroLag - Lignesignal) long = LigneMACDZeroLag > 0 short = LigneMACDZeroLag < 0 if testPeriod() strategy.entry("Long", strategy.long,when=long) strategy.entry("Short", strategy.short,when=short)