Estrategia de seguimiento de tendencia de divergencia del indicador MACD de velas de Pitágoras


Fecha de creación: 2024-02-04 15:06:58 Última modificación: 2024-02-04 15:06:58
Copiar: 0 Número de Visitas: 745
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia de divergencia del indicador MACD de velas de Pitágoras

Descripción general

La estrategia calcula el indicador MACD y su columna MACD, detecta la señal de desviación entre la columna MACD y el movimiento del precio, y genera una señal de negociación. Cuando se detecta un nuevo precio alto pero la columna MACD no crea un nuevo alto, genera una señal de desviación bajista; Cuando se detecta un nuevo precio bajo pero la columna MACD no crea un nuevo bajo, genera una señal de desviación bajista.

Principio de estrategia

El principio central de la estrategia es utilizar el indicador MACD y su columnar MACD para reflejar los cambios en la tendencia de los precios y detectar la señal de desviación entre la columnar MACD y el precio como condición de activación de la señal de negociación.

En concreto, la estrategia primero calcula la línea MACD, la línea de señal y la columna MACD. Luego, mediante la definición de la función fractal, se detecta el pico y el valle de la columna MACD, se extraen los valores locales máximos y mínimos.

Cuando el precio crea un nuevo alto, pero la columna MACD no crea un nuevo alto, genera una señal regulark_bearish_div de desviación; cuando el precio crea un nuevo bajo, pero la columna MACD no crea un nuevo bajo, genera una señal regulark_bullish_div de desviación.

Finalmente, la estrategia emite órdenes de hacer y de hacer más cuando se producen señales de retracción de la baja y de retracción de la baja, y se retira de la posición con un stop loss y un stop loss ATR.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de la característica de desviación entre la columna del MACD y el precio permite capturar los cambios en la tendencia de los precios con anticipación.

  2. La configuración de la parada de pérdidas de ATR es razonable y permite controlar eficazmente la pérdida máxima de una sola transacción.

  3. El uso de métodos de seguimiento de tendencias puede maximizar los beneficios.

  4. La configuración de los parámetros es razonable y permite filtrar parte del ruido de las señales de transacción.

  5. La lógica de la estrategia es clara y fácil de entender, fácil de verificar en el campo.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. La desviación del MACD no necesariamente produce una reversión de los precios, y existe un cierto riesgo de falsas señales.

  2. La imposibilidad de ajustar razonablemente el Stop Loss Barrier puede provocar pérdidas excesivas o ganancias demasiado pequeñas.

  3. El desvío de la señal es muy corto, puede ser causado por el ruido, y debe filtrarse adecuadamente.

  4. La variedad de transacciones y la configuración de los parámetros no coinciden, lo que también afecta la eficacia de la estrategia.

Resolución de las mismas:

  1. Aumentar adecuadamente la longitud de desviación y la amplitud de desviación requeridas para filtrar las señales falsas.

  2. Utiliza el ATR como indicador de stop loss y ajusta el multiplicador del ATR para controlar el riesgo de una sola transacción.

  3. Seleccionar diferentes parámetros para diferentes variedades de transacciones. Optimizar los parámetros para encontrar la combinación óptima de parámetros.

Dirección de optimización

La estrategia también puede ser optimizada en las siguientes direcciones:

  1. Las confirmaciones de desviación más complejas, como la confirmación de desviación de volumen.

  2. Optimización de los parámetros del MACD para encontrar la combinación óptima de parámetros.

  3. Optimización del ATR para el multiplicador de la parada de pérdidas.

  4. El aumento de algoritmos de aprendizaje automático para ayudar a determinar la fiabilidad de las señales desviadas.

  5. Aumentar las predicciones de los modelos para determinar la probabilidad de una reversión de los precios.

  6. Ajuste dinámico de los parámetros de la estrategia en función de los cambios en el entorno del mercado.

Resumir

En general, el MACD de Pitágoras se aleja de la estrategia de seguimiento de tendencias, aprovechando las características de la separación entre la línea columnar del MACD y el precio para capturar la tendencia. La configuración del stop loss ATR es razonable y permite controlar el riesgo de una sola operación. La lógica de la estrategia es clara y fácil de entender y vale la pena comprobarla en el mercado.

Código Fuente de la Estrategia
/*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)