ExponentialAverage
ExponentialAverage i ProBuilder returnerar det exponentiella glidande medelvärdet (EMA) för ett pris eller en serie över N barer. Syntax, formel, exempel och fallgropar.
Syntax
ExponentialAverage[N](price)Parametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
N | heltal | 20 | Medelvärdets period. Bestämmer utjämningsfaktorn 2 / (N + 1). Vanliga inställningar är 9, 12, 21, 26, 50 och 200. |
price | priskälla | close | Serien som ska jämnas ut. Accepterar vilken priskonstant eller numerisk variabel som helst, inklusive andra indikatorer. |
Formel
EMA(t) = alpha * price(t) + (1 - alpha) * EMA(t-1)
where alpha = 2 / (N + 1)Varje nytt värde blandar det aktuella priset med den föregående EMA:n. Vikten för en enskild bar avtar exponentiellt med åldern, vilket är där namnet kommer från. Till skillnad från ett enkelt medelvärde behåller varje tidigare bar ett litet kvarvarande inflytande.
Så fungerar det
Ett enkelt glidande medelvärde behandlar alla N barer lika, så en gammal bar som faller ur fönstret kan flytta linjen lika mycket som ett nytt pris som kommer in. Det exponentiella medelvärdet tar bort den artefakten genom att vikta barerna geometriskt: den senaste stängningen väger mest, den närmast före något mindre, och så vidare. Den praktiska effekten är mindre eftersläpning för samma nominella period.
Den rekursiva definitionen innebär att beräkningen beror på tidigare värden. ProRealTime™ startar serien från den tidigaste inlästa baren, så de första värdena efter datats start är mindre meningsfulla. På korta datafönster, eller i ProOrder med låg bar-preload, kan tidiga avläsningar skilja sig från samma EMA ritad på ett längre diagram.
ExponentialAverage[N](price) ger samma utdata som Average[N,1](price); den särskilda funktionen gör bara avsikten tydlig. Som alla medelvärden i ProBuilder tar den emot vilken numerisk serie som helst, så den används ofta för att utjämna oscillatorer snarare än rått pris.
Exempel
Exempel 1, Utjämning av RSI (Indikator)
// Smooth a 14-period RSI with a 10-period EMA
i1 = RSI[14]
i2 = ExponentialAverage[10](i1)
RETURN i1 as "RSI", i2 coloured(147,112,216) as "smoothed RSI"Tillämpar ett 10-periods exponentiellt medelvärde på RSI och ritar både den råa oscillatorn och dess utjämnade version i lila. EMA:n håller den utjämnade linjen närmare den råa serien än en SMA med samma längd skulle göra.
Exempel 2, EMA-korsningsstrategi (ProOrder)
// Hold long while the 12-period EMA is above the 26-period EMA
fastEMA = ExponentialAverage[12](close)
slowEMA = ExponentialAverage[26](close)
IF fastEMA CROSSES OVER slowEMA THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF fastEMA CROSSES UNDER slowEMA AND LongOnMarket THEN
SELL AT MARKET
ENDIFAnvänder perioderna 12 och 26 som är bekanta från MACD. Den minskade eftersläpningen hos exponentiella medelvärden utlöser entries och exits tidigare än motsvarande SMA-korsning, till priset av fler whipsaws i hackiga förhållanden.
Exempel 3, Stängning som korsar över 50-EMA (ProScreener)
// List instruments whose close just crossed above the 50-period EMA
ema50 = ExponentialAverage[50](close)
SCREENER[close CROSSES OVER ema50](close AS "Close")Returnerar bara de instrument där den senaste stängningen gick från under till över det 50-periods exponentiella medelvärdet på den aktuella baren, en skanning efter momentum-skifte.
Tolkning
Pris mot EMA:n. Pris som håller sig över en stigande EMA indikerar en upptrend på den horisonten; pris under en fallande EMA, en nedtrend. På grund av sin minskade eftersläpning följer EMA:n priset tätare än en SMA, så den föredras ofta som en efterföljande trendlinje på kortare tidsramar.
Korsningar. Korsningar där en snabb EMA går över en långsam signalerar ett skifte i momentum, mekanismen bakom MACD-linjen. Korsningarna kommer tidigare än med enkla medelvärden men vänder också oftare; avvägningen är känslighet mot falska signaler.
Lutning. En EMA som planar ut markerar avtagande momentum innan någon korsning sker, och är ofta den tidigare varningen.
Vanliga fel och fallgropar
- Fel typ av parentes.
ExponentialAverage(10, close)ger ett syntaxfel. Perioden skrivs inom hakparenteser, serien inom parenteser:ExponentialAverage[10](close). - Beroende av historik. Den rekursiva formeln innebär att de första barerna av inlästa data ger en osäker EMA. I ProOrder, öka
PRELOADBARSnär en EMA med lång period driver logiken; i diagram bör värden nära vänsterkanten ignoreras. - Att jämföra EMA och SMA med samma period. En
N-periods EMA har ett kortare effektivt minne än ettN-periods SMA. Att översätta en strategi från den ena till den andra med samma period ändrar dess beteende. - Att förvänta sig en typparameter. Till skillnad från
Average, denna funktion tar inget andra argument inom hakparentes.ExponentialAverage[10,1](close)är ogiltigt; typen är redan fastställd.
Relaterade instruktioner
Average, generellt glidande medelvärde;Average[N,1]är samma EMA.WeightedAverage, linjär viktning, ett mellanting mellan SMA och EMA.WilderAverage, EMA-variant medalpha = 1 / N, används inuti RSI och ATR.ZLEMA, zero-lag exponentiellt glidande medelvärde.DEMA, dubbelt exponentiellt glidande medelvärde, ytterligare minskad eftersläpning.TEMA, trippelt exponentiellt glidande medelvärde.HullAverage, alternativ med låg fördröjning byggt på viktade medelvärden.RSI, oscillator som ofta jämnas ut med en EMA, som i Exempel 1.