MACD Cruce Dorada Cruce Muerte Tendencia Siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-12-22 11:45:54
Las etiquetas:

img

Resumen general

Esta estrategia utiliza la cruz de oro y la cruz de muerte del indicador MACD para determinar la dirección de la tendencia, y utiliza el indicador ATR para detener la pérdida y obtener ganancias para implementar la tendencia después de la negociación.

Estrategia lógica

Cuando la línea MACD cruza por encima de la línea de señal desde abajo y se vuelve positiva, se genera una señal de compra, que se llama la señal de cruz dorada, lo que indica una tendencia al alza en el precio de las acciones.

La estrategia simplemente va largo en cruces de oro y corta en cruces de muerte para seguir las tendencias. Al mismo tiempo, la estrategia también introduce el indicador ATR para calcular el stop loss y tomar los niveles de ganancia para construir el sistema de negociación.

Específicamente, la estrategia primero calcula el promedio móvil rápido, el promedio móvil lento, la diferencia MACD, la línea de señal y otros indicadores MACD estándar. Luego, sobre la base de uno de los cinco tipos de señal elegidos (señal de continuación, señal de inversión, señal de histograma, cruz cero MACD, cruz cero de línea de señal), se determinan cruces doradas y cruces de muerte. Finalmente, se establecen stop loss y take profit basados en el indicador ATR para completar la lógica de entrada y salida.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso del indicador MACD para determinar la dirección de la tendencia es preciso y confiable.

  2. La configuración de stop loss y take profit basada en el indicador ATR puede controlar eficazmente la relación riesgo-beneficio de operaciones individuales y reducir la probabilidad de pérdidas.

  3. El suministro de cinco tipos de señales opcionales permite utilizar la señal más adecuada para diferentes mercados, mejorando la adaptabilidad de la estrategia.

  4. Hay muchos parámetros de entrada ajustables que se pueden optimizar para un mejor rendimiento comercial.

Riesgos y soluciones

También hay algunos riesgos con esta estrategia:

  1. El indicador MACD puede generar fácilmente señales falsas y causar pérdidas innecesarias.

  2. El indicador ATR solo modela las fluctuaciones del período reciente y no puede detener con precisión las pérdidas en condiciones extremas de mercado.

  3. El rendimiento de las señales seleccionadas puede no ser estable.

  4. Los parámetros de la señal y los parámetros de gestión del riesgo deben optimizarse conjuntamente, de lo contrario es difícil encontrar los resultados óptimos a nivel global.

Sugerencias para optimizar

La estrategia también puede optimizarse en los siguientes aspectos:

  1. Pruebe otros promedios móviles como TMA, Hull MA, etc. para filtrar las señales MACD.

  2. Pruebe mecanismos de parada dinámicos que puedan manejar mejor las fluctuaciones en condiciones extremas de mercado.

  3. Optimice exhaustivamente los parámetros MACD tradicionales para encontrar mejores combinaciones.

  4. Utilice métodos de aprendizaje automático para encontrar los múltiplos óptimos de ATR para una mejor gestión del riesgo.

  5. Se realizará una prueba posterior de cada uno de los cinco tipos de señal por separado para determinar la señal óptima.

  6. Entrenar redes neuronales para juzgar la calidad de la señal y descubrir nuevas señales basadas en el MACD.

Conclusión

La estrategia de seguimiento de la tendencia MACD utiliza el indicador MACD para determinar la dirección de la tendencia y establece stop loss y take profit con el indicador ATR, que puede capturar eficazmente las oportunidades de negociación de tendencia. La estrategia tiene múltiples ventajas como parámetros sintonizables, mecanismos completos de stop y tipos de señal opcionales. El siguiente paso es mejorar la calidad de la señal, los mecanismos de stop loss y la optimización de selección de parámetros para obtener mejores resultados de backtest y en vivo.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vuagnouxb

//@version=4
strategy("BV's MACD SIGNAL TESTER", overlay=true)

//------------------------------------------------------------------------
//----------            Confirmation Calculation              ------------ INPUT
//------------------------------------------------------------------------

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.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=plot.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)

// -- Trade entry signals

signalChoice = input(title = "Choose your signal", defval = "Continuation", options = ["Continuation", "Reversal", "Histogram", "MACD Line ZC", "Signal Line ZC"])

continuationSignalLong = signalChoice == "Continuation" ? crossover(macd, signal) and macd > 0 :
   signalChoice == "Reversal" ? crossover(macd, signal) and macd < 0 : 
   signalChoice == "Histogram" ? crossover(hist, 0) : 
   signalChoice == "MACD Line ZC" ? crossover(macd, 0) :
   signalChoice == "Signal Line ZC" ? crossover(signal, 0) :
   false
   
continuationSignalShort = signalChoice == "Continuation" ? crossunder(macd, signal) and macd < 0 :
   signalChoice == "Reversal" ? crossover(signal, macd) and macd > 0 : 
   signalChoice == "Histogram" ? crossunder(hist, 0) : 
   signalChoice == "MACD Line ZC" ? crossunder(macd, 0) :
   signalChoice == "Signal Line ZC" ? crossunder(signal, 0) :
   false

longCondition = continuationSignalLong

shortCondition = continuationSignalShort

//------------------------------------------------------------------------
//----------             ATR MONEY MANAGEMENT                 ------------
//------------------------------------------------------------------------

SLmultiplier = 1.5
TPmultiplier = 1

JPYPair = input(type = input.bool, title = "JPY Pair ?", defval = false)
pipAdjuster = JPYPair ? 1000 : 100000


ATR = atr(14) * pipAdjuster // 1000 for jpy pairs : 100000
SL = ATR * SLmultiplier
TP = ATR * TPmultiplier

//------------------------------------------------------------------------
//----------                  TIME FILTER                     ------------
//------------------------------------------------------------------------

YearOfTesting = input(title = "How many years of testing ?" , type = input.integer, defval = 3)

_time = 2020 - YearOfTesting

timeFilter = (year > _time) 

//------------------------------------------------------------------------
//---------                 ENTRY FUNCTIONS                    ----------- INPUT
//------------------------------------------------------------------------

if (longCondition and timeFilter)  
    strategy.entry("Long", strategy.long)

if (shortCondition and timeFilter) 
    strategy.entry("Short", strategy.short)
    
//------------------------------------------------------------------------
//---------                 EXIT  FUNCTIONS                    -----------
//------------------------------------------------------------------------


strategy.exit("ATR", from_entry = "Long", profit = TP, loss = SL)  

strategy.exit("ATR", from_entry = "Short", profit = TP, loss = SL)  

Más.