Únete hoy
Indicadores/probuilder · probacktest · proorder · proscreener

MACD

MACD en ProBuilder devuelve el histograma del MACD, la diferencia entre la línea MACD y su línea de señal, con los ajustes estándar 12/26/9. Sintaxis y ejemplos.

Sintaxis

probuilder
MACD[S, L, Si](price)

Parámetros

NombreTipoPor defectoDescripción
Sentero12Periodo de la media móvil exponencial corta.
Lentero26Periodo de la media móvil exponencial larga. Debe ser mayor que S.
Sientero9Periodo de la media móvil exponencial aplicada al MACD para formar la línea de señal.
pricefuente de preciocloseLa serie de precios sobre la que se ejecuta el cálculo. Habitualmente close, también acepta open, high, low, typicalprice, o una variable personalizada.

Fórmula

código
MACD line = EMA[S](price) - EMA[L](price)
Signal    = EMA[Si](MACD line)
MACD[S, L, Si](price) = MACD line - Signal   // the histogram

El resultado no está acotado y se expresa en las unidades de precio del instrumento. Cuando la línea MACD se sitúa por encima de su línea de señal el valor es positivo; cuando se sitúa por debajo, el valor es negativo.

Cómo funciona

En cada bar, ProBuilder calcula la línea MACD, la EMA corta de price menos la EMA larga, y luego suaviza esa línea con una Si-periodos EMA para formar la línea de señal. La MACD instrucción devuelve la diferencia entre ambas, la serie que los programas de gráficos dibujan como histograma. Un cruce por cero marca por tanto un cruce de la línea de señal, no un cruce de EMA.

Las dos series componentes están disponibles como instrucciones separadas: MACDLine devuelve la línea bruta y MACDsignal devuelve la línea de señal. MACDLine - MACDsignal reproduce el valor devuelto por MACD.

El MACD fue diseñado por Gerald Appel como un indicador de momentum seguidor de tendencia. Combina dos preguntas en una sola serie: en qué lado de la tendencia está la media corta, y con qué rapidez cambia la diferencia entre las medias.

Ejemplos

Ejemplo 1, MACD subiendo mientras el precio retrocede (Indicador)

probuilder
// MACD with the standard 12, 26, 9 settings on closing prices
i1 = MACD[12,26,9](close)
FOR i = 20 DOWNTO 0 DO
    IF(close[i] < close[i+1] AND i1 > i1[1]) THEN
        result = 100
    ELSE
        result = 0
    ENDIF
NEXT
RETURN result

Conservado de la página de origen. La condición combina un cierre descendente con un MACD ascendente. Ten en cuenta que cada pasada del bucle sobrescribe result, por lo que el valor devuelto refleja solo la última iteración (i = 0), el bar actual.

Ejemplo 2, Estrategia de cruce de la línea de señal (ProOrder)

probuilder
// Go long when the histogram turns positive, exit when it turns negative
DEFPARAM CumulateOrders = false
m = MACD[12,26,9](close)

IF NOT LongOnMarket AND m CROSSES OVER 0 THEN
  BUY 1 CONTRACT AT MARKET
ENDIF
IF LongOnMarket AND m CROSSES UNDER 0 THEN
  SELL AT MARKET
ENDIF

Porque MACD devuelve el histograma, un cruce de cero significa que la línea MACD ha cruzado su línea de señal, el disparador de entrada clásico del MACD expresado en una sola condición.

Ejemplo 3, Momentum mejorando por debajo de cero (ProScreener)

probuilder
// Instruments where a negative histogram has risen two bars in a row
hist = MACD[12,26,9](close)
improving = hist < 0 AND hist > hist[1] AND hist[1] > hist[2]
SCREENER[improving](hist AS "MACD hist")

Devuelve los instrumentos que siguen por debajo de la línea de señal pero con una diferencia que se reduce, un escaneo de mejora del momentum que se activa antes del cruce real.

Interpretación

SeñalLectura
Histograma por encima de ceroLínea MACD por encima de su línea de señal, momentum al alza.
Histograma por debajo de ceroLínea MACD por debajo de su línea de señal, momentum a la baja.
El histograma cruza por encima de ceroCruce alcista de la línea de señal, una condición de disparo habitual.
Histograma reduciéndose hacia ceroMomentum debilitándose antes de un posible cruce.

Para cruces de la línea cero de la propia línea MACD, la lectura del cruce de EMA, comprueba MACDLine contra cero en su lugar.

Divergencias. Una divergencia alcista se produce cuando el precio marca un mínimo más bajo mientras el MACD forma un mínimo más alto. Una divergencia bajista se produce cuando el precio marca un máximo más alto mientras el MACD forma un máximo más bajo. Ambas se leen como señales tempranas de una posible reversión, y el DivergenceMACD instrucción los detecta directamente.

Errores y trampas habituales

  • Histograma, no línea. MACD devuelve el histograma. El código portado desde plataformas donde MACD() devuelve la línea fallará. Usa MACDLine para la línea y MACDsignal para la señal.
  • Los tres periodos son obligatorios. MACD[12,26](close) genera un error de sintaxis. Los periodos van entre corchetes y la fuente de precio entre paréntesis: MACD[12,26,9](close).
  • Sobrescritura en el bucle. En el patrón de origen del Ejemplo 1, el bucle FOR asigna result en cada iteración, por lo que las barras anteriores se descartan. Para contar coincidencias a lo largo de 21 barras, acumula en un contador en lugar de sobrescribir.
  • No comparable entre instrumentos. El MACD no está acotado y escala con el precio. Una lectura de 2.5 en un índice y 0.002 en un par de forex no tienen ningún significado relativo. Los screeners que ordenan por MACD en bruto mezclan escalas.
  • Retardo en mercados lentos. Dos EMA anidadas hacen del MACD una medida retardada. Los cruces llegan bastante después del giro con ajustes más altos, y acortar los periodos cambia retardo por señales falsas.
  • MACDLine, la línea MACD como serie independiente.
  • MACDsignal, la línea de señal, una EMA del MACD.
  • DivergenceMACD, detección de divergencias integrada.
  • ExponentialAverage, la EMA a partir de la cual se construye el MACD.
  • PriceOscillator, variante basada en porcentaje de la misma idea.
  • Momentum, variación bruta de precio en N bars.
  • TRIX, tasa de cambio de una EMA con triple suavizado.
  • Average, media móvil simple para suavizar la salida del MACD.