Эта стратегия создает торговые сигналы на основе индикатора MACD DEMA Toff
Правила торговли следуют: идти длинным, когда MACD с нулевым отставанием пересекает линию 0, и идти коротким, когда MACD пересекает линию ниже 0.
Преимущество этой стратегии MACD с нулевым отставанием заключается в том, что она может более чувствительно улавливать изменения тренда. Использование DEMA вместо EMA также фильтрует ложные прорывы. Однако сам MACD имеет ограниченную способность судить о сложных ценовых действиях, с некоторым риском ложных сигналов.
В целом, стратегия прорыва MACD DEMA с нулевым отставанием очень хорошо работает при сильных движениях тренда, быстро захватывая возможности. Но она слабеет в периоды с диапазоном, что требует осторожного использования. Только путем непрерывной оптимизации и строгого контроля рисков эта стратегия может быть успешно применена в долгосрочной перспективе.
/*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)