Estrategia basada en la media móvil exponencial y el indicador MACD

El autor:¿ Qué pasa?, Fecha: 2023-12-08 16:58:01
Las etiquetas:

img

Resumen general

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.

Principio de la estrategia

La estrategia se basa principalmente en:

  1. El precio de cierre por encima de 200-EMA indica una tendencia al alza, mientras que por debajo indica una tendencia a la baja.

  2. 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.

  3. Calcular el MA de 9 días del histograma MACD para construir la línea de señal MACD.

  4. 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.

  5. 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.

Ventajas

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:

  1. La EMA de 200 días determina la dirección de la tendencia principal, evita el comercio contra tendencias.

  2. El indicador MACD es sensible a los cambios de precios a corto plazo y puede captar señales de reversión rentables.

  3. Los diferentes parámetros de los componentes del MACD pueden generar señales de negociación a través de marcos de tiempo.

  4. Integra estrategias de stop loss para controlar eficazmente las pérdidas de una sola operación.

Los riesgos

Los principales riesgos incluyen:

  1. Puede haber un retraso de tiempo entre las señales de negociación de indicadores a largo plazo y a corto plazo.

  2. El MACD como indicador de reversión media puede tener un rendimiento inferior durante tendencias fuertes.

  3. 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.

  4. Las señales de fuga demasiado frecuentes pueden introducir más señales falsas.

Soluciones:

  1. Optimizar los parámetros del MACD para ajustar la sensibilidad del indicador.

  2. Combine otros indicadores para determinar las condiciones del mercado, evite seguir ciegamente las señales MACD.

  3. Prueba y optimiza los parámetros de la estrategia de stop loss.

  4. Añadir filtros para reducir las señales falsas.

Direcciones de optimización

La estrategia se puede optimizar mediante:

  1. Optimizar los parámetros de la media móvil y el MACD para obtener señales comerciales más efectivas.

  2. Añadir otros indicadores como volumen, RSI para mejorar la eficacia de la estrategia.

  3. Establezca reglas de tamaño de posición en lugar de una cantidad fija para cada operación.

  4. 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.

  5. Prueba de retroceso con ajustes de tarifas más realistas para simular el comercio real.

  6. Realizar análisis de marcha hacia adelante, prueba de robustez para mejorar la confiabilidad.

Conclusión

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")


Más.