Bli medlem idag
Indikatorer/probuilder · probacktest · proorder · proscreener

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

probuilder
Variation(price)

Parametrar

NamnTypStandardBeskrivning
pricepriskällaingenSerie vars procentuella förändring över en bar returneras. Accepterar close, open, high, low eller någon egen variabel.

Formel

kod
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)

probuilder
// 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, averagingvar

Ritar 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)

probuilder
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)

probuilder
// 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
ENDIF

Systemet 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. Variation jämför alltid mot den omedelbart föregående baren. För en förändring över N barer använder ROC[N](price) eller beräkna 100 * (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.
  • 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.