Null-Lag-MACD-DEMA-Ausbruchstrategie

Schriftsteller:ChaoZhang, Datum: 2023-09-11 14:43:52
Tags:

Diese Strategie baut Handelssignale auf Basis des MACD DEMA-Indikators von Toff auf. Der MACD DEMA-Indikator berechnet die Differenz zwischen der schnellen DEMA-Linie und der langsamen DEMA-Linie mit Nullverzögerung und beseitigt damit effektiv die Verzögerung der regulären MACD.

Die Handelsregeln sind: Long gehen, wenn der MACD mit Nullverzögerung über die Nulllinie geht, und Short gehen, wenn der MACD unter die Nulllinie geht.

Der Vorteil dieser Nullverzögerungs-MACD-Strategie besteht darin, dass sie Trendveränderungen empfindlicher erfassen kann. Die Verwendung von DEMA anstelle von EMA filtert auch falsche Ausbrüche.

Zusammenfassend lässt sich sagen, dass die Nullverzögerungs-MACD-DEMA-Breakout-Strategie bei starken Trendbewegungen sehr gut funktioniert und schnell Chancen erfasst. Aber sie ist in Bereichsperioden unterdurchschnittlich und erfordert eine vorsichtige Verwendung. Nur durch kontinuierliche Optimierung und strenge Risikokontrolle kann diese Strategie langfristig erfolgreich angewendet werden.


/*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)







Mehr