Bli medlem i dag
Indikatorer/probuilder · probacktest · proorder · proscreener

MACD

MACD i ProBuilder returnerer MACD-histogrammet, avstanden mellom MACD-linjen og signallinjen, med standardinnstillingene 12/26/9. Syntaks og eksempler.

Syntaks

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

Parametere

NavnTypeStandardBeskrivelse
Sheltall12Perioden til det korte eksponentielle glidende gjennomsnittet.
Lheltall26Periode for det lange eksponentielle glidende gjennomsnittet. Må være større enn S.
Siheltall9Perioden til det eksponentielle glidende gjennomsnittet som anvendes på MACD for å danne signallinjen.
pricepriskildelukkPrisserien beregningen kjører på. Vanligvis close, godtar også open, high, low, typicalprice, eller en egendefinert variabel.

Formel

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

Resultatet er ubegrenset og uttrykt i instrumentets prisenheter. Når MACD-linjen ligger over signallinjen er verdien positiv; når den ligger under, er verdien negativ.

Slik fungerer det

På hver bar beregner ProBuilder MACD-linjen, den korte EMA-en av price minus den lange EMA-en, og utjevner deretter den linjen med en Si-periode EMA for å danne signallinjen. Den MACD instruksjonen returnerer differansen mellom de to, serien diagramprogrammer tegner som histogrammet. En kryssing gjennom null markerer derfor en kryssing av signallinjen, ikke en EMA-kryssing.

De to komponentseriene er tilgjengelige som separate instruksjoner: MACDLine returnerer den rå linjen og MACDsignal returnerer signallinjen. MACDLine - MACDsignal gjenskaper verdien som returneres av MACD.

MACD ble utformet av Gerald Appel som en trendfølgende momentum-indikator. Den kombinerer to spørsmål i én serie: hvilken side av trenden det korte gjennomsnittet er på, og hvor raskt avstanden mellom gjennomsnittene endrer seg.

Eksempler

Eksempel 1, Stigende MACD mens prisen korrigerer (Indikator)

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

Bevart fra kildesiden. Betingelsen kombinerer en fallende lukkekurs med en stigende MACD. Merk at hver gjennomgang av løkken overskriver result, så den returnerte verdien gjenspeiler bare siste iterasjon (i = 0), den gjeldende baren.

Eksempel 2, Strategi for kryss av signallinjen (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

Fordi MACD returnerer histogrammet, betyr en nullkryssing at MACD-linjen har krysset signallinjen sin, den klassiske MACD-inngangstriggeren uttrykt i én enkelt betingelse.

Eksempel 3, Forbedret momentum under null (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")

Returnerer instrumenter som fortsatt ligger under signallinjen men med en krympende avstand, et søk etter momentum-forbedring som utløses før selve krysset.

Tolkning

SignalAvlesning
Histogram over nullMACD-linjen over signallinjen, momentum oppover.
Histogram under nullMACD-linjen under signallinjen, momentum nedover.
Histogram krysser over nullBullish kryss over signallinjen, en vanlig utløserbetingelse.
Histogram som krymper mot nullMomentum som avtar foran et mulig kryss.

For kryssinger av nullinjen for selve MACD-linjen, EMA-kryssingsavlesningen, test MACDLine mot null i stedet.

Divergenser. En bullish divergens oppstår når prisen setter en lavere bunn mens MACD danner en høyere bunn. En bearish divergens oppstår når prisen setter en høyere topp mens MACD danner en lavere topp. Begge leses som tidlige tegn på en mulig vending, og DivergenceMACD instruksjonen oppdager dem direkte.

Vanlige feil og fallgruver

  • Histogram, ikke linje. MACD returnerer histogrammet. Kode portert fra plattformer der MACD() returnerer linjen vil slå feil. Bruk MACDLine for linjen og MACDsignal for signalet.
  • Alle tre periodene er påkrevd. MACD[12,26](close) gir en syntaksfeil. Periodene står i hakeparenteser, priskilden i runde parenteser: MACD[12,26,9](close).
  • Overskriving i løkke. I kildemønsteret fra eksempel 1 tilordner FOR-løkken result ved hver iterasjon, så tidligere bars forkastes. For å telle treff over 21 bars, akkumuler i en teller i stedet for å overskrive.
  • Ikke sammenlignbart på tvers av instrumenter. MACD er ubegrenset og skalerer med prisen. En verdi på 2.5 på en indeks og 0.002 på et forexpar har ingen relativ betydning. Screenere som rangerer etter rå MACD blander skalaer.
  • Forsinkelse i trege markeder. To nøstede EMA-er gjør MACD til et etterslepende mål. Kryss kommer godt etter vendingen ved høyere innstillinger, og å forkorte periodene bytter forsinkelse mot falske vendinger.