Esta estrategia utiliza el método de eliminar la tendencia de los precios de las acciones para observar el indicador MACD más claramente. Al calcular la línea rápida de DEMA y la línea lenta de DEMA, se derivan la línea de MACD y la línea de señal. Las señales comerciales se generan cruzando entre la línea MACD y la línea de señal. La estrategia también incorpora filtros de condiciones de fecha y mes y lógica de stop loss para formar un sistema más completo.
En primer lugar, la EMA del precio se calcula para eliminar la tendencia del precio y obtener la EMA desacelerada. Luego, la línea rápida DEMA, la línea lenta DEMA y la línea MACD se calculan en función de la EMA. La DEMA de la línea rápida se calcula mediante: primero calcular la EMA1 de la línea rápida, luego calcular la EMA2 de la EMA1, y finalmente calcular DEMA=(2*EMA1-EMA2). La línea lenta DEMA y la línea de señal se calculan de manera similar. Después de obtener la línea MACD (DEMA de la línea rápida - DEMA de la línea lenta) y la línea de señal, se genera una señal de compra cuando la línea MACD cruza por encima de la línea de señal, y se genera una señal de venta cuando la línea MACD cruza la línea de señal por debajo. Finalmente, combine los filtros de fecha y mes y establezca la lógica de stop loss.
La lógica central de esta estrategia es la siguiente:
Elimine la tendencia de los precios para ver el indicador MACD con mayor claridad.
Calcular la línea rápida DEMA, línea lenta DEMA para derivar la línea MACD y la línea de señal.
La línea MACD y el cruce de la línea de señal generan señales comerciales.
Añadir filtros de fecha y mes.
Establezca la lógica de stop loss.
Las principales ventajas de esta estrategia son las siguientes:
La eliminación de la tendencia de los precios puede revelar la situación cruzada del MACD con mayor claridad sin ser engañado por la tendencia.
Usar el algoritmo DEMA para calcular el MACD filtra algo de ruido y hace que la señal sea más clara.
La combinación de filtros de fecha y mes puede reducir las transacciones innecesarias.
La lógica de stop loss puede reducir las pérdidas en el tiempo y controlar los riesgos.
El uso de cruce para generar señales reduce las operaciones incorrectas.
En general, combinando la eliminación de tendencias, el cálculo de DEMA y los filtros de condición, esta estrategia puede generar señales comerciales relativamente claras y confiables.
Algunos riesgos de esta estrategia requieren atención:
Después de eliminar la tendencia, las señales de cruce del MACD pueden aumentar, lo que requiere pruebas en vivo para verificar la viabilidad.
Aunque el algoritmo de DEMA filtra algo de ruido, todavía puede haber muchas señales falsas en el cálculo del indicador.
Las condiciones del filtro de fecha y mes pueden ser demasiado rígidas, perdiendo algunas oportunidades comerciales.
La posición de stop loss debe ser establecida razonablemente, demasiado suelta aumentará el riesgo, demasiado apretada detendrá la pérdida con frecuencia.
La estrategia se basa principalmente en el MACD, si el mercado no es adecuado para este indicador, el rendimiento puede verse afectado.
Todavía hay mucho espacio para la optimización de parámetros, que necesita más pruebas a través de backtest y trading en vivo.
Soluciones:
Añadir otro indicador de confirmación para evitar señales falsas.
Optimizar adecuadamente las condiciones del filtro de fecha.
Prueba y optimiza los puntos de stop loss cuidadosamente.
Añadir el mecanismo de juicio de tendencia para evitar el comercio contra la tendencia.
Prueba de retroceso integral y optimización de parámetros para mejorar la estabilidad.
La estrategia se puede optimizar en los siguientes aspectos:
Pruebe diferentes promedios móviles de precios para encontrar una mejor alternativa a la EMA.
Pruebe diferentes combinaciones de parámetros para optimizar la línea rápida del MACD, la línea lenta y las longitudes de la línea de señal.
Añadir indicadores auxiliares como el volumen para evitar señales falsas.
Optimizar las estrategias de stop loss, establecer movimientos razonables u ordenar stop loss.
Optimice las condiciones del filtro de fecha y mes para que sean más flexibles.
Añadir juicio de tendencia para evitar el comercio en contra de la tendencia.
Optimización integral de parámetros para mejorar la estabilidad.
Prueba de retroceso en un período de tiempo más largo para comprobar el rendimiento a largo plazo.
Comercio en vivo para verificar y modificar los parámetros basados en el comercio real.
En resumen, esta estrategia utiliza la idea de eliminar la tendencia y calcular el MACD DEMA combinado con filtros de fecha para generar señales de negociación, que es una idea de estrategia simple pero factible. Su mayor ventaja es revelar el patrón MACD claramente sin verse afectado por la tendencia del precio. Sin embargo, todavía hay algunos riesgos de esta estrategia que necesitan optimización de parámetros y medidas de control de riesgos para ser implementados para su aplicación práctica. También hay un gran margen de optimización, y con suficiente verificación y optimización, esta estrategia puede convertirse en un sistema de negociación a corto plazo estable y confiable.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Trendless MACD Strategy",shorttitle="MACD-T Strategy",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.01,initial_capital=100000) maperiod=input(9) ema=ema(close,maperiod) fastmacd = input(12,title='MACD Fast Line Length') slowmacd = input(26,title='MACD Slow Line Length') signalmacd = input(9,title='Signal Line Length') macdslowline1 = ema(ema,slowmacd) macdslowline2 = ema(macdslowline1,slowmacd) DEMAslow = ((2 * macdslowline1) - macdslowline2 ) macdfastline1 = ema(ema,fastmacd) macdfastline2 = ema(macdfastline1,fastmacd) DEMAfast = ((2 * macdfastline1) - macdfastline2) MACDLine = (DEMAfast - DEMAslow) SignalLine1 = ema(MACDLine, signalmacd) SignalLine2 = ema(SignalLine1, signalmacd) SignalLine = ((2 * SignalLine1) - SignalLine2 ) MACDSignal = MACDLine-SignalLine colorbar= MACDSignal>0?green:red plot(MACDSignal,color=colorbar,style=columns,title='Histogram',histbase=0) p1 = plot(MACDLine,color=blue,title='MACDLine') p2=plot(SignalLine,color=red,title="SignalLine") fill(p1,p2,color=blue) longCond = crossover(MACDLine,SignalLine) shortCond = crossunder(MACDLine,SignalLine) monthfrom =input(1) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) yearfrom= input(2018) yearuntil=input(2021) if ( longCond ) strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG") else strategy.cancel(id="LONG") if ( shortCond ) strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND", comment="SHORT") else strategy.cancel(id="SHORT")