ABS
ABS in ProBuilder geeft de absolute waarde van een getal, de grootte zonder teken, zodat een negatieve invoer positief wordt. Syntaxis, parameters en voorbeelden.
Syntaxis
ABS(expression)Parameters
| Naam | Type | Beschrijving |
|---|---|---|
expression | getal | De numerieke waarde of formule waarvan de absolute waarde wordt teruggegeven. Kan een constante, een variabele of een volledige expressie zijn. |
Formule
ABS(x) = |x|Voor elke input, ABS retourneert een waarde die nul of positief is. Een positieve invoer gaat onveranderd door, bij een negatieve invoer wordt het teken omgedraaid en nul retourneert nul.
Hoe het werkt
Op elke bar ABS evalueert zijn argument en haalt het teken weg. Het is een pure functie zonder lookback en zonder geheugen, dus ABS(close - open) geeft de grootte van het lichaam van de huidige bar, ongeacht of de bar hoger of lager sloot. Daarmee is het het standaardgereedschap voor het meten van afstanden, gaps en afwijkingen waar de richting niet van belang is.
ABS gaat natuurlijk samen met SGN, die het teken als -1, 0 of 1 teruggeeft. Samen splitsen ze een waarde in grootte en richting: value = SGN(value) * ABS(value).
Voorbeelden
Voorbeeld 1, Grootte van de body van de huidige bar (Indicator)
// Absolute distance between open and close, regardless of direction
bodySize = ABS(close - open)
RETURN bodySize AS "Body size"De aftrekking is negatief op dalende bars en positief op stijgende bars. Het verpakken ervan in ABS geeft in beide gevallen de absolute grootte, dus de geplotte reeks is altijd nul of positief.
Voorbeeld 2, Grote bewegingen binnen één bar (ProScreener)
// 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 %")Gebruiken ABS maakt de scan symmetrisch: een daling van 2% en een stijging van 2% kwalificeren beide. Zonder dit zou de voorwaarde alleen bewegingen in één richting opvangen.
Voorbeeld 3, Afstandsgebaseerde stopbescherming (ProOrder)
// 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
ENDIFABS(close - ma) meet hoe ver de prijs van de moving average is uitgerekt zonder te letten op welke kant hij staat, zodat één drempel zowel de gevallen boven als onder dekt.
Veelvoorkomende fouten en valkuilen
- Het verandert alleen negatieve waarden.
ABSmaakt een waarde nooit kleiner in grootte en geeft nooit een negatief getal. Toepassen op een reeks die al positief is heeft geen effect en kan een teken verbergen dat je juist nodig had. - Grootte negeert richting. Na
ABSkun je niet zien of de oorspronkelijke waarde omhoog of omlaag was. Bewaar de ruwe waarde, of gebruikSGN, als het teken later van belang is. - Geen afrondingsfunctie.
ABS(-3.7)is3.7, niet4. Gebruik voor afrondenROUND,CEILofFLOOR.
Gerelateerde instructies
SGN, geeft het teken van een waarde als -1, 0 of 1, de richting dieABSverwerpt.SQRT, de vierkantswortel, alleen gedefinieerd voor niet-negatieve invoer dieABSkan aanleveren.SQUARE, kwadrateert een waarde, een andere manier om het teken te verwijderen ten koste van de schaal.MAX, grootste van twee waarden, nuttig bijABSom afstanden te begrenzen.MIN, de kleinste van twee waarden.ROUND, rondt af op het naastbijgelegen gehele getal of decimaal, anders danABS.Momentum, ruwe prijsverandering die vaak wordt verpakt inABSom de grootte te meten.Variation, procentuele verandering tussen bars.