Estrategia de negociación del robot MACD

El autor:¿ Qué pasa?, Fecha: 2023-12-18 17:30:15
Las etiquetas:

img

Resumen general

Esta estrategia se llama MACD Robot Trading Strategy. Determina el momento de compra y venta en el mercado mediante el cálculo de la relación entre la línea rápida y la línea lenta del indicador MACD, y adopta el stop loss para controlar los riesgos.

Principio de la estrategia

Esta estrategia se desarrolla principalmente sobre la base del indicador MACD. El indicador MACD consiste en una línea rápida y una línea lenta. La línea rápida es un promedio móvil a corto plazo y la línea lenta es un promedio móvil a largo plazo. La relación entre los dos refleja el estado de compra y venta en el mercado. Cuando la línea rápida cruza por encima de la línea lenta, es una señal de compra, y cuando cruza por debajo, es una señal de venta.

En esta estrategia, la línea rápida y la línea lenta se calculan utilizando el algoritmo EMA respectivamente, y los períodos se pueden personalizar.

Al determinar el momento de comprar, compruebe no solo la cruz de oro de líneas rápidas y lentas, sino también si el valor absoluto del MACD es mayor que la línea de compra personalizada.

Cuando se determina el momento de la venta, se requiere que se cumpla al mismo tiempo la cruz de muerte de líneas rápidas y lentas y que la línea de señal sea positiva, luego se emite una señal de venta para cerrar la posición.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. Utilizando el indicador MACD para determinar señales de negociación con una alta fiabilidad
  2. El aumento de la línea de señal mejora la calidad de la señal
  3. Las pérdidas de parada de seguimiento controlan los riesgos de manera efectiva
  4. Línea de compra personalizable ajusta la sensibilidad de la estrategia
  5. Todas las condiciones se basan en el cálculo de los indicadores y no se ven afectadas por factores externos

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. El indicador MACD está rezagado, puede perder oportunidades comerciales a corto plazo
  2. La configuración incorrecta del punto de parada de pérdida puede causar pérdidas innecesarias.
  3. El ajuste de parámetros requiere mucho tiempo para probar y ajustar
  4. Impacto de los costes de transacción y el deslizamiento

Estos riesgos pueden reducirse ajustando adecuadamente los parámetros, combinando otros indicadores, etc.

Direcciones de optimización

La estrategia se puede optimizar en las siguientes direcciones:

  1. Combinar con otros indicadores para filtrar señales, como KDJ, RSI, etc.
  2. Añadir algoritmos de aprendizaje automático para determinar los puntos de entrada y salida
  3. Utilizar el stop loss dinámico en lugar del stop loss estático
  4. Prueba y optimización de los parámetros MACD y línea de compra
  5. Considerar el impacto de los costes de transacción para ajustar la estrategia

Conclusión

En general, esta es una estrategia de seguimiento de tendencias con alta confiabilidad. Al juzgar la tendencia a través del indicador MACD y controlar los riesgos con stop loss, se pueden obtener retornos estables de la inversión.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD 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.00045)
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, signal) and signal > 0
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.