Стратегия прорыва MACD DEMA с нулевым отставанием

Автор:Чао Чжан, Дата: 2023-09-11 14:43:52
Тэги:

Эта стратегия создает торговые сигналы на основе индикатора 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)







Больше