Esta estrategia combina el indicador MACD con promedios móviles, yendo largo cuando ambos dan señales alineadas.
La lógica es:
Computación del MACD FAST, por lo general una EMA de 12 días
Computación del MACD lento, normalmente la EMA de 26 días
El MACD es rápido menos lento.
La línea de señal es típicamente un MA de 9 días del MACD
Calcular las MAs de 9 y 26 días
Considera largo cuando el MACD cruza por encima de la línea de señal
Venga largo cuando el MA de 9 días cruce el MA de 26 días
Cierre largo cuando el MACD cruza por debajo de la línea de señal y el MA de 9 días cruza por debajo del MA de 26 días
La estrategia aprovecha el indicador de sobrecompra y sobreventa del MACD y la capacidad de seguimiento de tendencia del MA, combinando ambos para operaciones de probabilidades más altas.
El MACD juzga sobrecomprado/sobrevendido, el MA determina la tendencia
La combinación proporciona oportunidades de largo plazo de alta probabilidad
Reglas claras y fáciles de aplicar
Requiere optimización para determinar los mejores parámetros
LONGO sólo incapaz de utilizar las oportunidades de corta duración
Las operaciones contra tendencia pueden aumentar las pérdidas
Esta estrategia utiliza las fortalezas del MACD y del MA
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MACD Cross+MA", overlay=true) //@version=4 // Getting inputs 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) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2019, title = "From Year", minval = 2009) 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() => time >= start and time <= finish ? true : false // create function "within window of time" // 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 plot(sma(close,9),color=color.red) plot(sma(close,26),color=color.green) //Condition BMacdcondition= (macd>signal) SMacdcondition= (macd<signal) longCondition = crossover(sma(close, 9), sma(close, 26)) shortCondition = crossunder(sma(close, 9), sma(close, 26)) //entry if (BMacdcondition) and window() (longCondition) strategy.entry("LONG", strategy.long) if (shortCondition) and window() (SMacdcondition) strategy.close("LONG", qty_percent=100 , comment="หนีตาย")