Estrategia de ruptura de DEMA del MACD con retraso cero

El autor:¿ Qué pasa?, Fecha: 2023-09-11 14:43:52
Las etiquetas:

Esta estrategia construye señales comerciales basadas en el indicador MACD DEMA de Toff. El indicador MACD DEMA calcula la diferencia entre la línea rápida DEMA y la línea lenta DEMA, con procesamiento de cero retraso, eliminando efectivamente el retraso de la emisión del MACD regular.

Las reglas de negociación son: ir largo cuando el MACD de retraso cero cruza por encima de la línea 0, y ir corto cuando el MACD cruza por debajo de la línea 0.

La ventaja de esta estrategia de MACD de retraso cero es que puede capturar los cambios de tendencia de manera más sensible. El uso de DEMA en lugar de EMA también filtra fallas. Sin embargo, el propio MACD tiene una capacidad de juicio limitada sobre la acción de precios complejos, con cierto riesgo de señales falsas.

En resumen, la estrategia de ruptura de MACD DEMA de retraso cero funciona muy bien en movimientos de tendencia fuertes, capturando oportunidades rápidamente. Pero tiene un rendimiento inferior en períodos de rango, lo que requiere un uso cauteloso. Solo a través de la optimización continua y el estricto control de riesgos se puede aplicar con éxito esta estrategia a largo plazo.


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







Más.