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

ABS

ABS i ProBuilder returnerar absolutvärdet av ett tal, dess storlek utan tecken, så att ett negativt indata blir positivt. Syntax, parametrar och exempel.

Syntax

probuilder
ABS(expression)

Parametrar

NamnTypBeskrivning
expressiontalDet numeriska värdet eller den formel vars absolutvärde returneras. Kan vara en konstant, en variabel eller ett fullständigt uttryck.

Formel

kod
ABS(x) = |x|

För alla indata, ABS returnerar ett värde som är noll eller positivt. Ett positivt indata passerar oförändrat, ett negativt indata får sitt tecken omvänt och noll returnerar noll.

Så fungerar det

På varje bar ABS utvärderar sitt argument och tar bort tecknet. Den är en ren funktion utan lookback och utan minne, så ABS(close - open) ger storleken på den aktuella barens kropp oavsett om baren stängde upp eller ner. Det gör den till standardverktyget för att mäta avstånd, gap och avvikelser där riktningen inte är det väsentliga.

ABS hör naturligt samman med SGN, som returnerar tecknet som -1, 0 eller 1. Tillsammans delar de upp ett värde i magnitud och riktning: value = SGN(value) * ABS(value).

Exempel

Exempel 1, Storleken på den aktuella barens kropp (Indicator)

probuilder
// Absolute distance between open and close, regardless of direction
bodySize = ABS(close - open)
RETURN bodySize AS "Body size"

Subtraktionen är negativ på fallande barer och positiv på stigande barer. Att omsluta den med ABS returnerar magnituden i båda fallen, så den ritade serien är alltid noll eller positiv.

Exempel 2, Stora rörelser på en enda bar (ProScreener)

probuilder
// Instruments whose last bar moved more than 2% in either direction
pct = ABS(close - close[1]) / close[1] * 100
SCREENER[pct > 2](pct AS "Abs move %")

Att använda ABS gör skanningen symmetrisk: ett fall på 2% och en uppgång på 2% kvalificerar båda. Utan den skulle villkoret bara fånga rörelser i en riktning.

Exempel 3, Avståndsbaserat stoppskydd (ProOrder)

probuilder
// Block new entries when price sits far from its average
ma = Average[50](close)
gap = ABS(close - ma)
IF gap < close * 0.01 THEN
  IF NOT LongOnMarket AND close CROSSES OVER ma THEN
    BUY 1 CONTRACT AT MARKET
  ENDIF
ENDIF

ABS(close - ma) mäter hur långt priset har sträckt sig från det glidande medelvärdet utan hänsyn till vilken sida det ligger på, så ett enda tröskelvärde täcker både fallen ovanför och under.

Vanliga fel och fallgropar

  • Den ändrar bara negativa värden. ABS gör aldrig ett värde mindre i storlek och returnerar aldrig ett negativt tal. Att tillämpa den på en redan positiv serie har ingen effekt och kan skymma ett tecken du faktiskt behövde.
  • Storlek förkastar riktning. Efter ABS kan du inte avgöra om det ursprungliga värdet var upp eller ner. Behåll råvärdet, eller använd SGN, om tecknet har betydelse senare.
  • Inte en avrundningsfunktion. ABS(-3.7) är 3.7, inte 4. För avrundning använd ROUND, CEIL eller FLOOR.
  • SGN, returnerar tecknet för ett värde som -1, 0 eller 1, den riktning som ABS förkastar.
  • SQRT, kvadratrot, definierad endast för icke-negativa indata som ABS kan ange.
  • SQUARE, kvadrerar ett värde, ett annat sätt att ta bort tecken till priset av skala.
  • MAX, det större av två värden, användbart med ABS för att begränsa avstånd.
  • MIN, det minsta av två värden.
  • ROUND, avrundar till närmaste heltal eller decimal, till skillnad från ABS.
  • Momentum, rå prisförändring som ofta kapslas in i ABS för att mäta storlek.
  • Variation, procentuell förändring mellan barer.