Tendencia del MACD siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-11-16 17:42:09
Las etiquetas:

img

Resumen general

Esta estrategia implementa la tendencia después de la negociación en el indicador MACD.

Estrategia lógica

  1. Calcule el indicador de MA rápido, MA lento y MACD. El MA rápido usa la EMA de 12 períodos, el MA lento usa la EMA de 26 períodos.

  2. Generar una señal de compra cuando el MACD cruza la línea de compra, generar una señal de venta cuando el MACD cruza por debajo de la línea de venta.

  3. Establezca un stop loss dinámico después de la posición de apertura.

  4. Posición de cierre cuando se activa el stop loss o aparece la señal de marcha atrás.

Análisis de ventajas

  1. El uso del MACD para identificar la dirección de la tendencia puede rastrear las tendencias de manera efectiva.

  2. El stop loss dinámico puede bloquear continuamente las ganancias y evitar pérdidas ampliadas.

  3. La lógica de la estrategia es simple y clara, fácil de entender y automatizar para el comercio cuantitativo.

Análisis de riesgos

  1. El MACD tiene un efecto de retraso, puede perder la inversión de tendencia a corto plazo.

  2. El stop loss demasiado suelto puede perder algunas ganancias, demasiado ajustado puede detenerse temprano.

  3. Los parámetros MACD y las líneas de compra/venta necesitan pruebas y optimización constantes.

  4. Funciona mejor en el mercado de tendencia, puede tener pérdidas en el mercado agitado.

Direcciones de optimización

  1. Optimice los parámetros MACD para encontrar la mejor combinación.

  2. Prueba diferentes métodos de stop loss, como puntos fijos, basados en ATR, etc.

  3. Se añadirán condiciones de filtro utilizando otros indicadores para evitar señales falsas, por ejemplo, bandas de Bollinger, RSI, etc.

  4. Combinar con las herramientas de identificación de tendencias, ajustar dinámicamente los parámetros de la estrategia basados en la tendencia frente al mercado de rango.

Resumen de las actividades

La estrategia tiene una lógica clara de usar el MACD para rastrear tendencias y stop loss dinámicos para bloquear ganancias. Puede rastrear efectivamente los mercados de tendencia. Pero el MACD tiene problemas rezagados, y los puntos de stop loss deben optimizarse. El siguiente paso es probar más parámetros, optimizar el mecanismo de stop loss, agregar filtros con otros indicadores, para hacerlo robusto en diferentes condiciones de mercado, mejorando la estabilidad.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.0002)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)

Más.