Variation
Variation i ProBuilder returnerar den procentuella förändringen i en prisserie mellan föregående bar och den aktuella baren. Syntax, formel och genomgångna exempel.
Syntax
Variation(price)Parametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
price | priskälla | ingen | Serie vars procentuella förändring över en bar returneras. Accepterar close, open, high, low eller någon egen variabel. |
Formel
Variation = 100 * (price - price[1]) / price[1]Resultatet är en procentandel med tecken: positiv när serien är högre än på föregående bar, negativ när den är lägre, noll när den är oförändrad.
Så fungerar det
På varje bar jämför funktionen det aktuella värdet i den angivna serien med dess värde en bar tidigare och uttrycker skillnaden som en procentandel av det tidigare värdet. Det är specialfallet med en enda bar av en förändringstakt; ROC generaliserar samma idé till ett N bar bakåtblick.
Eftersom utdata är en procentsats är den direkt jämförbar mellan instrument med olika prisnivåer, vilket råa differenser inte är. En rörelse på 2 procent per dag betyder samma sak på ett index på 18000 som på en aktie på 40. Detta gör Variation en naturlig byggsten för screeners som rangordnar marknader efter daglig rörelse, och för volatilitetsarbete: standardavvikelsen för variationer över en bar är en enkel skattning av realiserad volatilitet.
Serien är brusig av konstruktion, varje bar ger en ny oberoende avläsning. Att utjämna den med ett glidande medelvärde, eller banda den med en kanal av standardavvikelser som i det första exemplet, skiljer vanliga fluktuationer från statistiskt ovanliga rörelser.
Exempel
Exempel 1, Variation med ett adaptivt tröskelband (Indikator)
// One-bar percentage change of the high price
var = Variation(high)
// Smooth the changes, then build a 3 standard deviation band around them
averagingvar = 3 * STD[20](exponentialaverage[20](var))
RETURN var, averagingvarRitar den procentuella förändringen från bar till bar i topparna tillsammans med en tröskel som motsvarar tre standardavvikelser av dess utjämnade värden. Barer där var överstiger bandet markerar onormalt stora rörelser.
Exempel 2, Skanning av dagens rörare (ProScreener)
chg = Variation(close)
SCREENER[ABS(chg) > 3] (chg AS "Change %")Returnerar instrument vars stängning rörde sig mer än 3 procent i någon riktning på den aktuella baren, med den tecknade förändringen visad som rangordningskolumn.
Exempel 3, Momentum-entry med ett förändringsfilter (ProBacktest)
// Enter on a strong up bar, exit on a meaningful down bar
chg = Variation(close)
IF NOT ONMARKET AND chg > 1.5 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF ONMARKET AND chg < -1 THEN
SELL AT MARKET
ENDIFSystemet köper efter en bar som steg mer än 1.5 procent och stänger positionen efter varje bar som föll mer än 1 procent, ett minimalt exempel på logik baserad på procentuell förändring.
Tolkning
Positiva värden indikerar att serien steg under den senaste baren, negativa värden att den föll; storleken mäter hur kraftigt. Det finns inga universella trösklar, vad som räknas som en stor förändring över en bar beror på instrumentet och tidsramen. Ett praktiskt tillvägagångssätt är statistiskt: jämför den aktuella avläsningen med den senaste tidens fördelning av avläsningar, till exempel genom att flagga värden utanför två eller tre standardavvikelser. Klungor av stora absoluta variationer indikerar en regim med hög volatilitet, långa serier av små värden indikerar konsolidering.
Vanliga fel och fallgropar
- Endast en bar.
Variationjämför alltid mot den omedelbart föregående baren. För en förändring överNbarer använderROC[N](price)eller beräkna100 * (close - close[N]) / close[N]explicit. - Tidsramsberoende. Funktionen mäter förändring per bar i det aktuella diagrammet. På ett 5-minutersdiagram är värdena naturligt mycket mindre än på ett dagsdiagram, trösklar är inte överförbara mellan tidsramar.
- Divisionsbasen är föregående bar. Ett fall på 10 procent följt av en uppgång på 10 procent återvänder inte till startpriset. Att summera variationer över många barer ger bara en approximation av den totala rörelsen.
- Första baren är odefinierad. Beräkningen behöver
price[1], som inte finns på den första baren i den inlästa historiken. Bortse från det tidigaste värdet.
Relaterade instruktioner
ROC, förändringstakt över en valfri lookback på N barer.Momentum, absolut prisskillnad över N barer.STD, standardavvikelse, används för att banda avläsningar av variation.ExponentialAverage, utjämning för den brusiga råserien.Average, alternativ med enkelt glidande medelvärde för utjämning.VolumeROC, samma idé om förändringstakt applicerad på volym.HistoricVolatility, statistisk volatilitet från prisavkastning.Volatility, Chaikin Volatility byggd på spread mellan högsta och lägsta.