En la carga de los recursos... Cargando...

Tendencia MACD dinámica de varios niveles siguiendo la estrategia con sistema de análisis de extensión alta/baja de 52 semanas

El autor:¿ Qué pasa?, fecha: 2024-12-27 14:27:51
Las etiquetas:El MACD- ¿Qué es?El EMALa SMAIndicador de riesgo

img

Resumen general

Esta estrategia combina señales cruzadas del MACD de múltiples marcos de tiempo con niveles de soporte y resistencia dinámicos basados en máximos y mínimos de 52 semanas. Confirma las señales comerciales a través de cruces del MACD en marcos de tiempo semanales y diarios mientras utiliza líneas de soporte y resistencia dinámicas formadas por máximos y mínimos de 52 semanas para ayudar en el análisis de tendencias del mercado, lo que permite decisiones comerciales más robustas. La estrategia emplea un mecanismo dinámico de stop-loss para controlar eficazmente el riesgo al tiempo que garantiza ganancias.

Principios de estrategia

La estrategia se basa en la siguiente lógica central:

  1. Las señales de entrada se confirman tanto por las cruces doradas semanales como diarias del MACD, lo que requiere señales alcistas en ambos marcos de tiempo.
  2. Las señales de salida son activadas por cruces de muerte diarios del MACD, con posiciones cerradas una vez que aparece una señal bajista.
  3. El valor de las pérdidas de suspensión dinámicas se fija en el precio más bajo del día en que se activan las señales de salida.
  4. Las líneas de máximos/bajos de 52 semanas se generan dinámicamente sobre la base del cálculo seleccionado por el usuario (precios máximos/bajos o de cierre) y se extienden hacia la derecha como niveles de referencia importantes.
  5. La estrategia emplea un 5% de gestión de posiciones con un coste de transacción de 1 unidad monetaria por operación.

Ventajas estratégicas

  1. Confirmación de marcos de tiempo múltiples: Filtra las fallas falsas a través de la resonancia de las señales MACD en niveles semanales y diarios, mejorando la precisión de las operaciones.
  2. Apoyo/resistencia dinámico: las líneas de alza/baja de 52 semanas proporcionan importantes referencias psicológicas de precios, ayudando a evaluar la fuerza de la tendencia.
  3. Control integral del riesgo: el mecanismo dinámico de stop-loss se ajusta a las fluctuaciones del mercado para proteger las ganancias.
  4. Alta visualización: una interfaz gráfica clara muestra los niveles y señales clave de precios, facilitando la comprensión y el funcionamiento.
  5. Comercio sistemático: reglas estrictas de entrada/salida evitan la interferencia emocional, lo que mejora la objetividad del comercio.

Riesgos estratégicos

  1. No es adecuado para mercados variados: los cruces frecuentes del MACD en mercados laterales pueden generar señales falsas excesivas.
  2. Riesgo de retraso: el retraso inherente del indicador MACD puede perder los puntos de entrada óptimos.
  3. Riesgo de gestión de capitales: el posicionamiento en proporción fija puede carecer de flexibilidad en determinadas condiciones de mercado.
  4. Riesgo de brecha de mercado: las brechas grandes pueden dar lugar a precios de stop-loss reales muy por debajo de los niveles esperados.
  5. Riesgo de optimización de parámetros: la optimización excesiva puede dar lugar a problemas de sobreajuste.

Direcciones para la optimización de la estrategia

  1. Incorporar el análisis de la relación volumen-precio: Considere agregar confirmación de volumen a las señales MACD existentes.
  2. Optimizar la gestión de posiciones: diseñar mecanismos de gestión de posiciones más flexibles, ajustándose dinámicamente a la volatilidad del mercado.
  3. Mejorar el mecanismo de stop-loss: Considere la posibilidad de añadir paradas de trailing o paradas dinámicas basadas en ATR.
  4. Añadir filtrado del entorno de mercado: Introducir indicadores de fuerza de tendencia, abriendo sólo posiciones en mercados de fuerte tendencia.
  5. Desarrollar un mecanismo de filtrado de señales: diseñar condiciones de confirmación de señales más estrictas para reducir las señales falsas.

Resumen de las actividades

Esta estrategia construye un sistema comercial completo de seguimiento de tendencias mediante la combinación de señales cruzadas MACD de varios marcos de tiempo con líneas de soporte y resistencia dinámicas basadas en máximos y mínimos de 52 semanas. Sus fortalezas se encuentran en la confiabilidad de la confirmación de señales y el control integral del riesgo, aunque se debe prestar atención a los riesgos de mercado y retraso. A través de la optimización y mejora continuas, esta estrategia muestra promesa para lograr rendimientos estables en los mercados de tendencia.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD Bitcoin strategy con 52W High/Low (linee estese)", overlay=true)

// === MACD SETTINGS ===
fastLength = 12
slowLength = 26
signalSmoothing = 9

// Funzione per ottenere i valori MACD
getMACD(source, timeframe) =>
    [macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)
    [macdLine, signalLine]

// Valori MACD Settimanali
[macdWeekly, signalWeekly] = request.security(syminfo.tickerid, "W", getMACD(close, "W"), lookahead=barmerge.lookahead_on)

// Valori MACD Giornalieri
[macdDaily, signalDaily] = getMACD(close, "D")

// Variabile per lo stop loss
var float lowOfSignalCandle = na

// Condizione per l'ingresso
longConditionWeekly = ta.crossover(macdWeekly, signalWeekly)
exitConditionDaily = ta.crossunder(macdDaily, signalDaily)

// Imposta Stop Loss sulla candela giornaliera
if (exitConditionDaily)
    lowOfSignalCandle := low

// Condizione di ingresso nel trade
enterTradeCondition = macdWeekly > signalWeekly and ta.crossover(macdDaily, signalDaily)

if (enterTradeCondition)
    strategy.entry("MACD Long", strategy.long)

if (not na(lowOfSignalCandle))
    strategy.exit("Stop Loss", "MACD Long", stop=lowOfSignalCandle)

if (strategy.position_size == 0)
    lowOfSignalCandle := na

// // === 52 WEEK HIGH/LOW SETTINGS ===
// // Input per selezionare tra Highs/Lows o Close
// high_low_close = input.string(defval="Highs/Lows", title="Base 52 week values on candle:", options=["Highs/Lows", "Close"])

// // Calcolo dei valori delle 52 settimane
// weekly_hh = request.security(syminfo.tickerid, "W", ta.highest(high, 52), lookahead=barmerge.lookahead_on)
// weekly_ll = request.security(syminfo.tickerid, "W", ta.lowest(low, 52), lookahead=barmerge.lookahead_on)
// weekly_hc = request.security(syminfo.tickerid, "W", ta.highest(close, 52), lookahead=barmerge.lookahead_on)
// weekly_lc = request.security(syminfo.tickerid, "W", ta.lowest(close, 52), lookahead=barmerge.lookahead_on)

// // Selezione dei valori in base all'input
// high_plot = high_low_close == "Highs/Lows" ? weekly_hh : weekly_hc
// low_plot = high_low_close == "Highs/Lows" ? weekly_ll : weekly_lc

// // === LINEE ORIZZONTALI ESTESE FINO AL PREZZO ATTUALE ===
// var line highLine = na
// var line lowLine = na

// // Linea Orizzontale per il 52W High
// if (na(highLine))
//     highLine := line.new(bar_index, high_plot, bar_index + 1, high_plot, color=color.green, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(highLine, high_plot)
//     line.set_y2(highLine, high_plot)

// // Linea Orizzontale per il 52W Low
// if (na(lowLine))
//     lowLine := line.new(bar_index, low_plot, bar_index + 1, low_plot, color=color.red, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(lowLine, low_plot)
//     line.set_y2(lowLine, low_plot)

// // Etichette per le linee orizzontali
// var label highLabel = na
// var label lowLabel = na

// if (na(highLabel))
//     highLabel := label.new(bar_index, high_plot, "52W High", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.small)
// else
//     label.set_y(highLabel, high_plot)
//     label.set_x(highLabel, bar_index)

// if (na(lowLabel))
//     lowLabel := label.new(bar_index, low_plot, "52W Low", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.small)
// else
//     label.set_y(lowLabel, low_plot)
//     label.set_x(lowLabel, bar_index)

// // Tracciamento delle Linee Estese
// plot(high_plot, title="52W High", color=color.green, style=plot.style_linebr)
// plot(low_plot, title="52W Low", color=color.red, style=plot.style_linebr)


Relacionados

Más.