
Esta estrategia es una estrategia automática de negociación basada en indicadores técnicos MACD que se cruzan con dos medias móviles. Utiliza las señales de cruce de líneas rápidas y lentas de los indicadores MACD para determinar la dirección de la tendencia y realizar el seguimiento de la tendencia.
La estrategia calcula primero las tres curvas del indicador MACD: la línea rápida, la línea lenta y la línea de diferencia. La línea rápida es la media móvil más rápida en un período determinado, y la línea lenta es la media móvil de un período más largo. La diferencia es la diferencia entre la línea rápida y la línea lenta.
La estrategia utiliza este principio para hacer más en el momento de la horquilla de oro y cerrar la posición en el momento de la horquilla de oro; o hacer vacío en el momento de la horquilla de oro y cerrar la posición en el momento de la horquilla de oro, para lograr un seguimiento automático de la tendencia. Al mismo tiempo, la estrategia también juzga que el valor absoluto de la línea MACD es positivo-negativo, evita falsas señales y asegura que realmente capte el punto de inflexión de la tendencia.
La solución al riesgo:
La estrategia puede ser optimizada en los siguientes aspectos:
En combinación con otras señales de confirmación de indicadores, como el indicador KDJ, el indicador Brin, etc., filtra las señales falsas
Mecanismos de entrada modificados, como la inclusión de filtros de ruptura para evitar entradas anticipadas o tardías
Optimización de la configuración de los parámetros para ajustar el ciclo de línea rápida y lenta según los diferentes ciclos y el entorno del mercado para adaptarse al mercado
Adherirse a una estrategia de stop loss para controlar las pérdidas individuales
Extensión a otras variedades, como divisas, monedas digitales, etc.
La estrategia de seguimiento de tendencias MACD de doble media móvil cruzada utiliza indicadores MACD para determinar la dirección de la tendencia, junto con una señal de filtro de línea cruzada rápida y lenta, que puede capturar de manera efectiva el cambio de tendencia y seguir la tendencia automáticamente. La ventaja de la estrategia reside en la precisión de la tendencia, la flexibilidad de ajuste de parámetros y la optimización según el entorno del mercado. Se debe tener en cuenta el control del riesgo para evitar la generación de señales falsas.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © DeMindSET
//@version=4
strategy("MACD Trend Follow Strategy", overlay=false)
// Getting inputs
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
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)
//
Bull= macd > signal
Bear= macd < signal
ConBull=macd>0
ConBear=macd<0
//
Green= Bull and ConBull
Red= Bear and ConBear
Yellow= Bull and ConBear
Blue= Bear and ConBull
//
bcolor = Green ? color.green : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2019, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
if LSB == "Long only" and Green
strategy.entry("L",true)
if LSB == "Long only" and Red
strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Green
strategy.entry("L",true)
if LSB == "Both" and Red
strategy.entry("S",false)
if LSB == "Short only" and Red
strategy.entry("S",false)
if LSB == "Short only" and Green
strategy.close("S",qty_percent=100,comment="TP Short")