Esta estrategia combina las señales de ruptura de la media móvil exponencial y el indicador MACD, con períodos de retención largos y cortos, para obtener ganancias a través del seguimiento de tendencias y el comercio de reversión media.
La estrategia se basa principalmente en:
El precio de cierre por encima de 200-EMA indica una tendencia al alza, mientras que por debajo indica una tendencia a la baja.
Calcule la EMA basándose en el precio medio de los precios más altos, más bajos y de cierre, y luego obtenga la diferencia entre la EMA y los precios más altos/más bajos para construir el histograma MACD.
Calcular el MA de 9 días del histograma MACD para construir la línea de señal MACD.
Una señal de compra se genera cuando el MACD cruza por encima de la línea de señal, mientras que una señal de venta se genera cuando el MACD cruza por debajo de la línea de señal.
Combine el análisis de las principales tendencias para determinar si el mercado está al comienzo de una nueva tendencia o solo una reversión a corto plazo.
La estrategia combina el seguimiento de tendencias y el comercio de reversión media, que puede rastrear las tendencias a largo plazo y captar oportunidades de reversión a corto plazo para hacer frente a las diferentes condiciones del mercado.
Las principales ventajas incluyen:
La EMA de 200 días determina la dirección de la tendencia principal, evita el comercio contra tendencias.
El indicador MACD es sensible a los cambios de precios a corto plazo y puede captar señales de reversión rentables.
Los diferentes parámetros de los componentes del MACD pueden generar señales de negociación a través de marcos de tiempo.
Integra estrategias de stop loss para controlar eficazmente las pérdidas de una sola operación.
Los principales riesgos incluyen:
Puede haber un retraso de tiempo entre las señales de negociación de indicadores a largo plazo y a corto plazo.
El MACD como indicador de reversión media puede tener un rendimiento inferior durante tendencias fuertes.
La colocación inadecuada de un stop loss puede dar lugar a un inicio prematuro del stop loss o a una pérdida de gran tamaño.
Las señales de fuga demasiado frecuentes pueden introducir más señales falsas.
Soluciones:
Optimizar los parámetros del MACD para ajustar la sensibilidad del indicador.
Combine otros indicadores para determinar las condiciones del mercado, evite seguir ciegamente las señales MACD.
Prueba y optimiza los parámetros de la estrategia de stop loss.
Añadir filtros para reducir las señales falsas.
La estrategia se puede optimizar mediante:
Optimizar los parámetros de la media móvil y el MACD para obtener señales comerciales más efectivas.
Añadir otros indicadores como volumen, RSI para mejorar la eficacia de la estrategia.
Establezca reglas de tamaño de posición en lugar de una cantidad fija para cada operación.
Las operaciones de liquidación de pérdidas se aplican a las operaciones de liquidación de pérdidas y de liquidación de pérdidas.
Prueba de retroceso con ajustes de tarifas más realistas para simular el comercio real.
Realizar análisis de marcha hacia adelante, prueba de robustez para mejorar la confiabilidad.
La estrategia equilibra el seguimiento de tendencias y el comercio de reversión media. La esencia radica en el ajuste adecuado de parámetros y la comprensión correcta de las principales tendencias. Al optimizar los parámetros, agregar filtros, la estrategia puede hacer un mejor juicio de las señales comerciales y lograr ganancias más constantes. En general, esta estrategia tiene un alto grado de integración y perspectivas de aplicación prometedoras.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Strategia EMA + Impulse MACD", shorttitle="EMA+IMACD", overlay=true) // Impostazioni ema_length = input(200, title="Periodo EMA a 200", type=input.integer) lengthMA = input(34, title="Periodo EMA", type=input.integer) lengthSignal = input(9, title="Periodo Signal", type=input.integer) lengthImpulseMACD = input(12, title="Periodo Impulse MACD", type=input.integer) lengthImpulseMACDSignal = input(9, title="Periodo Impulse MACD Signal", type=input.integer) stopLossPeriod = input(20, title="Periodo Stop Loss", type=input.integer) var float ema200 = na if bar_index >= ema_length ema200 := ema(close, ema_length) // Impulse MACD var float hi = na var float lo = na var float mi = na var float impulseMACD = na var float impulseMACDSignal = na calc_smma(src, len) => var float smma = na if na(smma) smma := sma(src, len) else smma := (smma[1] * (len - 1) + src) / len smma calc_zlema(src, length) => ema1 = ema(src, length) ema2 = ema(ema1, length) d = ema1 - ema2 ema1 + d if bar_index >= lengthMA src = hlc3 hi := calc_smma(high, lengthMA) lo := calc_smma(low, lengthMA) mi := calc_zlema(src, lengthMA) impulseMACD := (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0 impulseMACDSignal := sma(impulseMACD, lengthSignal) // Calcolo dello stop loss var float stopLossLong = na var float stopLossShort = na stopLossLong := lowest(low, stopLossPeriod) stopLossShort := highest(high, stopLossPeriod) // Calcolo del take profit var float takeProfitLong = na var float takeProfitShort = na if not na(stopLossLong) takeProfitLong := close + (close - stopLossLong) * 1.5 if not na(stopLossShort) takeProfitShort := close - (stopLossShort - close) * 1.5 // Condizioni per aprire una posizione long longCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close > ema200 and impulseMACD < 0 and impulseMACDSignal < 0 and crossover(impulseMACD, impulseMACDSignal) // Condizioni per aprire una posizione short shortCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close < ema200 and impulseMACD > 0 and impulseMACDSignal > 0 and crossunder(impulseMACD, impulseMACDSignal) // Disegna l'EMA 200 sul grafico plot(ema200, color=color.blue, title="EMA 200") // Imposta lo stop loss e il take profit strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong) strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort) // Impulse MACD plot(0, color=color.gray, linewidth=1, title="MidLine") plot(impulseMACD, color=color.red, linewidth=2, title="ImpulseMACD", style=plot.style_histogram) plot(impulseMACDSignal, color=color.blue, linewidth=2, title="ImpulseMACDSignal", style=plot.style_histogram) // Disegna le operazioni long e short sul grafico plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, title="Long Entry") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, title="Short Entry")