Estrategia a largo plazo basada en el MACD


Fecha de creación: 2024-01-12 11:02:06 Última modificación: 2024-01-12 11:02:06
Copiar: 0 Número de Visitas: 639
1
Seguir
1617
Seguidores

Estrategia a largo plazo basada en el MACD

Descripción general

Esta estrategia se basa en el indicador MACD y en la línea de posición larga y pacífica, y permite la negociación de la línea larga de un par de divisas. Se abre una posición cuando la línea de indicador MACD cruza la línea de posición larga y se cierra una posición cuando la línea de indicador MACD cruza la línea de posición baja. Al mismo tiempo, se establece una estrategia de stop loss.

Principio de estrategia

La estrategia utiliza la línea rápida y la línea lenta del indicador MACD. El parámetro de la línea rápida es el EMA de 12 días y el parámetro de la línea lenta es el EMA de 26 días. La diferencia entre las dos líneas medias es el gráfico de columnas MACD.

Concretamente, la estrategia calcula primero la línea rápida, la línea lenta y la línea de señal del indicador MACD. Luego, se establece la línea larga como -0.04, la línea de posición baja como 0.015. Si el gráfico MACD actual es mayor que la línea larga, se realiza una operación de plusvalía; Si el gráfico MACD actual es menor que la línea de posición baja, se realiza una operación de plusvalía. Además, se establece la línea de stop loss como el 95% del precio de apertura de la posición.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso del indicador MACD para determinar las tendencias del mercado, con una mayor precisión
  2. El uso simultáneo de cables largos y cables de almacenamiento con doble filtración evita señales erróneas
  3. Establezca una estrategia de stop loss y controle el riesgo de manera efectiva
  4. Simple, claro, lógico, fácil de entender y de aplicar
  5. Solo se requiere y el indicador MACD, bajo consumo de recursos

Análisis de riesgos

La estrategia también tiene ciertos riesgos:

  1. El indicador MACD tiene un poco de atraso y puede perder oportunidades de corta línea
  2. La configuración de stop loss puede ser demasiado conservadora para seguir la tendencia de la línea larga.
  3. La configuración de los parámetros necesita ser optimizada por pruebas repetitivas, de lo contrario puede ser excesivamente ajustada.
  4. Solo se aplica a otras monedas con dudas sobre su eficacia

Se puede optimizar y mejorar mediante la adaptación adecuada de los parámetros y la combinación de otros indicadores.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Prueba diferentes combinaciones de parámetros MACD para encontrar el mejor

Se puede probar con diferentes longitudes de cables rápidos, lentos y señales para encontrar la combinación más adecuada.

  1. Sustitución de otros indicadores probados

Indicadores como el RSI y el KD pueden tener efectos muy diferentes.

  1. Optimización de los parámetros de línea larga y línea de posición

Se puede recurrir a los datos para encontrar un parámetro de posición más apropiado.

  1. Ajuste de las estrategias de stop loss

Se pueden considerar métodos como trailing stop para que el stop loss sea más dinámico.

  1. Prueba de varios pares de divisas

Aplicación de la estrategia a otros pares de divisas, análisis de resultados

Resumir

Esta estrategia en general es una estrategia de negociación de línea larga muy simple e intuitiva. Utiliza el indicador MACD para juzgar la situación y establece condiciones de doble filtración para reducir las operaciones erróneas. Al mismo tiempo, configura el stop loss para controlar el riesgo. La estrategia es lógica clara, ocupa pocos recursos, es fácil de entender e implementar y es recomendable.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "GBPJPY MACD", title = "GBPJPY 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.04)
linesell = input(title="Close Long", type=float, defval=0.015)

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