Tendencia de Divergencia MACD de Candlestick Demigod Siguiendo la Estrategia

El autor:¿ Qué pasa?, Fecha: 2024-02-04 15:06:58
Las etiquetas:

img

Resumen general

Esta estrategia calcula el indicador MACD y su histograma MACD para detectar señales de divergencia entre el histograma MACD y el movimiento del precio, generando así señales de negociación. Cuando se detecta un nuevo máximo en el precio pero no se detecta ningún nuevo máximo en el histograma MACD, se genera una señal de divergencia bajista. Cuando se detecta un nuevo mínimo en el precio pero no se detecta ningún nuevo mínimo en el histograma MACD, se genera una señal de divergencia alcista. Combinado con el indicador ATR para detener pérdidas y obtener ganancias, realiza operaciones siguiendo la tendencia.

Estrategia lógica

El principio básico de esta estrategia es utilizar el indicador MACD y su histograma MACD para reflejar los cambios en las tendencias de precios y detectar señales de divergencia entre el histograma MACD y el precio como condición de activación de las señales de negociación.

Específicamente, la estrategia primero calcula la línea MACD, la línea de señal y el histograma MACD. Luego, definiendo la función fractal para detectar picos y valles del histograma MACD para extraer máximos y mínimos locales. Combinado con el precio más alto y el precio más bajo, determina si existe una divergencia entre el histograma MACD y el precio.

Cuando el precio alcanza un nuevo máximo pero el histograma MACD no alcanza un nuevo máximo, se genera una señal de divergencia bajista regular_bearish_div. Cuando el precio cae a un nuevo mínimo pero el histograma MACD no cae a un nuevo mínimo, se genera una señal de divergencia alcista regular_bullish_div.

Por último, cuando se generan señales de divergencia bajista y alcista, la estrategia emite órdenes cortas y largas, respectivamente, y sale de las posiciones con ATR stop loss y take profit.

Análisis de ventajas

Esta estrategia tiene las siguientes ventajas:

  1. Mediante la utilización de la característica de divergencia entre el histograma MACD y el precio, puede capturar los giros en las tendencias de precios temprano.

  2. Los ajustes de stop loss y take profit de ATR son razonables para controlar eficazmente la pérdida máxima por operación.

  3. El uso del método de seguimiento de tendencias puede maximizar el beneficio bloqueado.

  4. La configuración de parámetros razonables filtra algunas señales comerciales ruidosas.

  5. La lógica de la estrategia es clara y fácil de entender, fácil de validar en el comercio en vivo.

Análisis de riesgos

Esta estrategia también tiene algunos riesgos:

  1. La divergencia del MACD no conduce necesariamente a una reversión de precios, existen algunos riesgos de señal falsa.

  2. Los ajustes de stop loss y take profit no razonables pueden dar lugar a pérdidas excesivas o ganancias insuficientes.

  3. Las señales de divergencia con ciclos cortos pueden ser causadas por ruido y deben filtrarse adecuadamente.

  4. Los productos comerciales incompatibles y la configuración de parámetros también afectarán el rendimiento de la estrategia.

Soluciones correspondientes:

  1. Aumentar los requisitos de longitud y magnitud de la divergencia para filtrar las señales falsas.

  2. En el caso de las operaciones de negociación, el valor de las operaciones de negociación se calculará en función de las operaciones de negociación.

  3. Seleccione diferentes parámetros para diferentes productos comerciales. Realice la optimización de parámetros para encontrar combinaciones óptimas de parámetros.

Direcciones de optimización

Esta estrategia también puede optimizarse en las siguientes direcciones:

  1. Confirmación de divergencia más compleja, como la confirmación de divergencia de volumen.

  2. Optimizar los parámetros MACD para encontrar la mejor combinación de parámetros.

  3. Optimice los múltiplos de ATR stop loss y take profit.

  4. Añadir algoritmos de aprendizaje automático para ayudar a juzgar la fiabilidad de las señales de divergencia.

  5. Añadir la predicción del modelo para determinar la probabilidad de reversión de precios.

  6. Ajustar dinámicamente los parámetros de la estrategia de acuerdo con los cambios en las condiciones del mercado.

Resumen de las actividades

En resumen, esta estrategia de seguimiento de tendencia de la divergencia del MACD de Candlestick Demigod utiliza la divergencia entre el histograma del MACD y el precio para capturar tendencias. Las configuraciones razonables de stop loss y take profit de ATR pueden controlar los riesgos por comercio. La lógica de la estrategia es clara y fácil de entender, vale la pena validarla en el comercio en vivo. Se pueden hacer optimizaciones de seguimiento en muchos aspectos para obtener mejores resultados.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bigwin_sun
// copyright: Tradingvue Limited    

//@version = 5
strategy(title = "Demigod : CDMA histogram Divergence strategy", shorttitle = "Demigod strategy", overlay = false, pyramiding = 100)

//macd input
fastMA = input.int(13, title = "fast Length", minval = 1,     group = "CDMA")
slowMA = input.int(34, title = "slow Length", minval = 1,     group = "CDMA")
src          = input.source(title = "source", defval = close, group = "CDMA")
signalSmooth = input.int(9, title="ma Length", minval = 1,    group = "CDMA")
//Divergenc
divLength    = input.int(title = "Divergenc Length",   defval = 5, minval = 1,   maxval = 50,  inline = "ATRLength",  group = "Divergence")
divStren     = input.float(title="Divergenc Strength", defval = 2, minval = 1.0, maxval = 5.0, inline = "ATRLength",  group = "Divergence")

//atr input
atrLength = input.int(13, title = "ATR Length", minval = 1,   inline = "ATRLength", group = "ATR")
m         = input.float(1.0,  "ATR multyple",   minval = 0.5, inline = "ATRLength", group = "ATR", step = 0.5)
collong   = input.color(color.teal, title = "upper color",  inline = "ATR显示", group = "ATR")
colshort  = input.color(color.red,  title = "under color",  inline = "ATR显示", group = "ATR")

// MACD---------------------------------------------------------------------------------------------------------------------------------
DivOffset = -2
macdLine   = ta.ema(src, fastMA) - ta.ema(src, slowMA)    
signalLine = ta.ema(macdLine, signalSmooth)
histogram  = macdLine - signalLine

histogramColor = if histogram > 0
    histogram > histogram[1] ? color.lime : color.green
else 
    histogram < histogram[1] ? color.maroon : color.red

// cdma histogram
plot(histogram, title = "MACD histogram", linewidth = 2, style = plot.style_histogram, color = histogramColor)
plot(0,         title = "zero line",      linewidth = 1,                               color = color.gray)

// Divergenc calculation-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//peak / valley fundation
f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0] and _src > 0
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0] and _src < 0
f_fractalize(_src)=>f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0

//peak / valley value
fractal_top1 = f_fractalize(histogram) > 0 ? true : false //histogram[2] : na
fractal_bot1 = f_fractalize(histogram) < 0 ? true : false //histogram[2] : na

//previouse peak or valley
high_prev1  = ta.valuewhen(fractal_top1, histogram[2], 0)[2]
high_price1 = ta.valuewhen(fractal_top1, high[2], 0)[2]
low_prev1   = ta.valuewhen(fractal_bot1, histogram[2], 0)[2]
low_price1  = ta.valuewhen(fractal_bot1, low[2], 0)[2]

//Divergenc : cdma histogram against candle value
regular_bearish_div1 = high[2] > high_price1 + divStren and histogram[2] < high_prev1 / divStren and ta.barssince(fractal_top1[1]) > divLength
regular_bullish_div1 = low[2]  < low_price1 - divStren  and histogram[2] > low_prev1 / divStren  and ta.barssince(fractal_bot1[1]) > divLength

//-------------------------cdma Divergenc range------------------------------------------------
//histogramColor
col1 = regular_bearish_div1 ? color.red : na
col2 = regular_bullish_div1 ? #00FF00EB : na
//plot
plot(title='看跌背离', series= fractal_top1 ? histogram[2] : na, color=col1, linewidth=3, offset=DivOffset)
plot(title='看涨背离', series= fractal_bot1 ? histogram[2] : na, color=col2, linewidth=3, offset=DivOffset)

// calculate ATR				--------------------------------------------------------------------------------------------------------------------------------------------------
atr = ta.ema(ta.tr(true), atrLength) * m
up = atr + high
dw = low - atr

//stratety : enrty and exit---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if regular_bearish_div1 and fractal_top1
//if regular_bullish_div1 and fractal_bot1
    //label.new(bar_index, histogram[2], text = "Short", textcolor = color.white, color = color.gray,  style = label.style_label_lower_left)
    strategy.entry("Short", strategy.short, qty = 1)
    strategy.exit("exitShort", "Short", stop = up, limit = dw - atr)
if regular_bullish_div1 and fractal_bot1
//if regular_bearish_div1 and fractal_top1   
    //label.new(bar_index, histogram[2], text = "Long", textcolor = color.white, color = color.fuchsia, style = label.style_label_upper_left)
	strategy.entry("Long", strategy.long, qty = 1)
    strategy.exit("exitLong", "Long", stop = dw, limit = up + atr)


Más.