MACD
MACD i ProBuilder returnerar MACD-histogrammet, skillnaden mellan MACD-linjen och dess signallinje, med standardinställningarna 12/26/9. Syntax och exempel.
Syntax
MACD[S, L, Si](price)Parametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
S | heltal | 12 | Period för det korta exponentiella glidande medelvärdet. |
L | heltal | 26 | Period för det långa exponentiella glidande medelvärdet. Måste vara större än S. |
Si | heltal | 9 | Period för det exponentiella glidande medelvärdet som tillämpas på MACD för att bilda signallinjen. |
price | priskälla | close | Prisserien som beräkningen körs på. Vanligtvis close, accepterar även open, high, low, typicalprice, eller en egen variabel. |
Formel
MACD line = EMA[S](price) - EMA[L](price)
Signal = EMA[Si](MACD line)
MACD[S, L, Si](price) = MACD line - Signal // the histogramResultatet är obegränsat och uttrycks i instrumentets prisenheter. När MACD-linjen ligger över sin signallinje är värdet positivt; när den ligger under är värdet negativt.
Så fungerar det
På varje bar beräknar ProBuilder MACD-linjen, den korta EMA:n för price minus den långa EMA:n, utjämnar sedan den linjen med en Si-periods EMA för att bilda signallinjen. Den MACD -instruktionen returnerar skillnaden mellan de två, den serie som diagramprogram ritar som histogrammet. En korsning genom noll markerar därför en korsning av signallinjen, inte en EMA-korsning.
De två komponentserierna finns som separata instruktioner: MACDLine returnerar den råa linjen och MACDsignal returnerar signallinjen. MACDLine - MACDsignal återskapar värdet som returneras av MACD.
MACD utformades av Gerald Appel som en trendföljande momentumindikator. Den kombinerar två frågor i en serie: vilken sida av trenden det korta medelvärdet befinner sig på, och hur snabbt skillnaden mellan medelvärdena förändras.
Exempel
Exempel 1, Stigande MACD medan priset rekylerar (Indikator)
// 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 resultBevarad från källsidan. Villkoret kombinerar en fallande stängning med ett stigande MACD. Observera att varje varv i loopen skriver över result, så det returnerade värdet speglar endast den sista iterationen (i = 0), den aktuella baren.
Exempel 2, Strategi för korsning av signallinjen (ProOrder)
// 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
ENDIFEftersom MACD returnerar histogrammet, en nollkorsning betyder att MACD-linjen har korsat sin signallinje, den klassiska MACD-entryutlösaren uttryckt i ett enda villkor.
Exempel 3, Förbättrat momentum under noll (ProScreener)
// 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")Returnerar instrument som fortfarande ligger under signallinjen men med krympande skillnad, en skanning efter förbättrat momentum som utlöses före den faktiska korsningen.
Tolkning
| Signal | Avläsning |
|---|---|
| Histogram över noll | MACD-linjen över sin signallinje, momentum uppåt. |
| Histogram under noll | MACD-linjen under sin signallinje, momentum nedåt. |
| Histogram korsar över noll | Bullish korsning av signallinjen, ett vanligt triggervillkor. |
| Histogram krymper mot noll | Momentum avtar inför en möjlig korsning. |
För MACD-linjens egna korsningar av nollinjen, EMA-korsningsvärdet, testa MACDLine mot noll i stället.
Divergenser. En bullish divergens uppstår när priset sätter en lägre lägsta medan MACD formar en högre lägsta. En bearish divergens uppstår när priset sätter en högre högsta medan MACD formar en lägre högsta. Båda läses som tidiga tecken på en möjlig vändning, och DivergenceMACD instruktionen identifierar dem direkt.
Vanliga fel och fallgropar
- Histogram, inte linje.
MACDreturnerar histogrammet. Kod som flyttats från plattformar därMACD()returnerar kommer linjen att slå fel. AnvändMACDLineför linjen ochMACDsignalför signalen. - Alla tre perioder är obligatoriska.
MACD[12,26](close)ger ett syntaxfel. Perioderna står i hakparenteser, priskällan i parenteser:MACD[12,26,9](close). - Överskrivning i loop. I källmönstret från Exempel 1 tilldelar FOR-loopen
resultvid varje iteration, så tidigare barer kastas. För att räkna träffar över 21 barer, ackumulera i en räknare i stället för att skriva över. - Inte jämförbart mellan instrument. MACD är obegränsad och skalar med priset. Ett värde på 2.5 på ett index och 0.002 på ett forexpar har ingen relativ innebörd. Screeners som rangordnar efter rå MACD blandar skalor.
- Eftersläpning på långsamma marknader. Två nästlade EMA:er gör MACD till ett eftersläpande mått. Korsningar kommer långt efter vändningen vid högre inställningar, och att korta perioderna byter eftersläpning mot whipsaws.
Relaterade instruktioner
MACDLine, MACD-linjen som en fristående serie.MACDsignal, signallinjen, en EMA av MACD.DivergenceMACD, inbyggd divergensdetektering.ExponentialAverage, den EMA som MACD är byggd av.PriceOscillator, procentbaserad variant av samma idé.Momentum, rå prisförändring över N barer.TRIX, trippelutjämnad EMA-förändringstakt.Average, enkelt glidande medelvärde för att jämna ut MACD-utdata.