Word nu lid
Indicatoren/probuilder · probacktest · proorder · proscreener

MACD

MACD in ProBuilder geeft het MACD-histogram, het verschil tussen de MACD-lijn en zijn signaallijn, met de standaardinstellingen 12/26/9. Syntaxis en voorbeelden.

Syntaxis

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

Parameters

NaamTypeStandaardBeschrijving
Sgeheel getal12Periode van het korte exponentieel voortschrijdend gemiddelde.
Lgeheel getal26Periode van de lange exponentiële moving average. Moet groter zijn dan S.
Sigeheel getal9Periode van het exponentieel voortschrijdend gemiddelde dat op de MACD wordt toegepast om de signaallijn te vormen.
priceprijsbroncloseDe koersreeks waarop de berekening loopt. Gebruikelijk is close, accepteert ook open, high, low, typicalprice, of een eigen variabele.

Formule

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

Het resultaat is onbegrensd en wordt uitgedrukt in de prijseenheden van het instrument. Wanneer de MACD-lijn boven zijn signaallijn ligt, is de waarde positief; wanneer hij eronder ligt, is de waarde negatief.

Hoe het werkt

Op elke bar berekent ProBuilder de MACD-lijn, de korte EMA van price min de lange EMA, en smooth die lijn vervolgens met een Si-periode EMA om de signaallijn te vormen. De MACD instructie geeft het verschil tussen de twee, de reeks die grafiekpakketten als het histogram tekenen. Een kruising door nul markeert daarom een crossover van de signaallijn, niet een EMA-crossover.

De twee componentreeksen zijn als aparte instructies beschikbaar: MACDLine geeft de ruwe lijn terug en MACDsignal geeft de signaallijn terug. MACDLine - MACDsignal reproduceert de waarde geretourneerd door MACD.

MACD is ontworpen door Gerald Appel als een trendvolgende momentumindicator. Hij combineert twee vragen in één reeks: aan welke kant van de trend het korte gemiddelde zich bevindt, en hoe snel het verschil tussen de gemiddelden verandert.

Voorbeelden

Voorbeeld 1, Stijgende MACD terwijl de prijs terugloopt (Indicator)

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

Overgenomen van de bronpagina. De voorwaarde combineert een dalende close met een stijgende MACD. Merk op dat elke doorloop van de lus overschrijft result, dus de teruggegeven waarde weerspiegelt alleen de laatste iteratie (i = 0), de huidige bar.

Voorbeeld 2, Strategie op kruising van de signaallijn (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

Omdat MACD geeft het histogram, een nulkruising betekent dat de MACD-lijn zijn signaallijn heeft gekruist, de klassieke MACD-instaptrigger uitgedrukt in één enkele voorwaarde.

Voorbeeld 3, Verbeterend momentum onder nul (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")

Geeft instrumenten die nog onder de signaallijn liggen maar met een krimpend verschil, een scan op momentumverbetering die afgaat vóór de werkelijke kruising.

Interpretatie

SignaalStand
Histogram boven nulMACD-lijn boven zijn signaallijn, opwaarts momentum.
Histogram onder nulMACD-lijn onder zijn signaallijn, neerwaarts momentum.
Histogram kruist boven nulBullish kruising van de signaallijn, een gangbare triggervoorwaarde.
Histogram krimpt naar nulMomentum dat afzwakt vooruitlopend op een mogelijke kruising.

Voor kruisingen van de nullijn door de MACD-lijn zelf, de EMA-crossover-uitlezing, test MACDLine in plaats daarvan met nul.

Divergenties. Een bullish divergentie treedt op wanneer de prijs een lagere low zet terwijl de MACD een hogere low vormt. Een bearish divergentie treedt op wanneer de prijs een hogere high zet terwijl de MACD een lagere high vormt. Beide worden gelezen als vroege tekenen van een mogelijke omkering, en de DivergenceMACD instructie detecteert ze direct.

Veelvoorkomende fouten en valkuilen

  • Histogram, niet de lijn. MACD geeft het histogram. Code die is overgezet van platforms waar MACD() geeft, werkt de lijn verkeerd. Gebruik MACDLine voor de lijn en MACDsignal voor het signaal.
  • Alle drie de periodes zijn verplicht. MACD[12,26](close) geeft een syntaxisfout. De periodes gaan tussen vierkante haken, de prijsbron tussen ronde haken: MACD[12,26,9](close).
  • Overschrijven in een loop. In het bronpatroon uit Voorbeeld 1 wijst de FOR-lus result bij elke iteratie, dus eerdere bars worden weggegooid. Gebruik een teller om treffers over 21 bars te tellen in plaats van te overschrijven.
  • Niet vergelijkbaar tussen instrumenten. MACD is onbegrensd en schaalt mee met de prijs. Een waarde van 2.5 op een index en 0.002 op een forexpaar hebben onderling geen relatieve betekenis. Screeners die op ruwe MACD rangschikken, mengen schalen.
  • Vertraging in trage markten. Twee geneste EMA's maken MACD een achterblijvende maatstaf. Bij hogere instellingen komen kruisingen ruim na de omslag, en het verkorten van de periodes ruilt vertraging in voor whipsaws.
  • MACDLine, de MACD-lijn als zelfstandige reeks.
  • MACDsignal, de signaallijn, een EMA van de MACD.
  • DivergenceMACD, ingebouwde divergentiedetectie.
  • ExponentialAverage, de EMA waarop MACD is gebouwd.
  • PriceOscillator, op percentages gebaseerde variant van hetzelfde idee.
  • Momentum, ruwe prijsverandering over N bars.
  • TRIX, veranderingssnelheid van een drievoudig gesmoothe EMA.
  • Average, eenvoudig voortschrijdend gemiddelde om de MACD-output te smoothen.