
Esta estrategia combina el indicador de la difusión y el indicador MACD para juzgar la tendencia, y es una estrategia típica de seguimiento de tendencias. Haga más cuando el precio se rompa la trayectoria y el indicador MACD aparece en la horquilla de oro.
Calcula los indicadores MACD, incluidas las líneas rápidas, lentas e histogramas.
Calcular el canal de difusión ascendente y descendente. El precio más alto en N días en la vía ascendente y el precio más bajo en N días en la vía descendente.
Haga más cuando el precio rompa la línea alta y la línea rápida MACD rompa la línea lenta hacia arriba.
Cuando el precio se desvía y la línea rápida MACD rompe la línea lenta hacia abajo, haga un vacío.
El indicador ATR se utiliza para calcular el Stop Loss de esta estrategia, que se establece como el valor de la distancia entre el precio y el Stop Loss, ATR, multiplicado por un factor .
Cuando se produzca una señal de cambio de precio, se borrará la posición actual.
Esta estrategia combina un indicador de tendencia y un indicador de canal para un seguimiento eficaz de la tendencia. El indicador MACD puede determinar la tendencia y la intensidad de los precios, mientras que el indicador de canal disperso determina la dirección. El stop loss ATR puede limitar las pérdidas individuales.
Las ventajas son las siguientes:
Los parámetros de la estrategia son sencillos y fáciles de implementar.
En la actualidad, la mayoría de los inversores de la región están en el mercado de divisas, lo que les permite abrir posiciones rápidamente y capturar oportunidades de tendencia a tiempo.
El deterioro del ATR puede controlar el riesgo.
La retirada puede ser controlada.
La estrategia también tiene sus riesgos:
La configuración incorrecta de los parámetros del canal de difusión puede causar señales falsas.
La configuración incorrecta de los parámetros del MACD también puede causar un retraso en la señal de aviso del Sistema de Administración de Viticultura.
El exceso de paradas de pérdidas puede aumentar las pérdidas.
En caso de un cambio brusco de la situación, puede haber pérdidas.
La estrategia es propensa a generar un exceso de comercio.
Resolución de las mismas:
Optimizar los parámetros y elegir las acciones con cuidado.
El objetivo de la medida es reducir el riesgo de pérdidas y reducir el riesgo de pérdidas.
Ajuste adecuado de la gestión de posiciones.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros MACD para mejorar la sensibilidad de los indicadores.
Optimizar los algoritmos de stop loss para que estén más cerca del precio.
Aumentar el mecanismo de gestión de posiciones y ajustar las posiciones de acuerdo con la tendencia de fortaleza y debilidad.
Se añaden las condiciones de filtración para evitar señales falsas.
Aumentar los criterios de selección de las variedades comercializadas
Aumentar el juicio sobre el período de negociación.
La estrategia en su conjunto es una estrategia típica de seguimiento de tendencias. Combina la dirección de la tendencia de los indicadores de la difusión y la fuerza de la tendencia de los indicadores MACD. Puede controlar el riesgo de manera efectiva y sin complicaciones.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 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/
// © Robrecht99
//@version=5
strategy("Trend Following with Donchian Channels and MACD", overlay=false, margin_long=100, margin_short=100, pyramiding=3)
// MACD //
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.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
col_macd = input(#2962FF, "MACD Line ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.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)))
plot(macd, title="MACD", color=col_macd)
plot(signal, title="Signal", color=col_signal)
// Donchian Channels //
Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
//ATR and Position Size //
strategy.initial_capital = 50000
length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))
// Buy and Sell Conditions //
entrycondition1 = ta.crossover(macd, signal)
entrycondition2 = macd > signal
entrycondition3 = macd and signal > hist
sellcondition1 = ta.crossover(signal, macd)
sellcondition2 = signal > macd
sellcondition3 = macd and signal < hist
// Buy and Sell Signals //
if (close > h1 and entrycondition2 and entrycondition3)
strategy.entry("long", strategy.long, qty=amount)
stoploss = close - atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2 and sellcondition3)
strategy.close(id="long")
if (close < l1 and sellcondition2 and sellcondition3)
strategy.entry("short", strategy.short, qty=amount)
stoploss = close + atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2 and entrycondition3)
strategy.close(id="short")