ABS
ABS en ProBuilder renvoie la valeur absolue d'un nombre, sa magnitude sans signe, de sorte qu'une entrée négative devient positive. Syntaxe, paramètres et exemples.
Syntaxe
ABS(expression)Paramètres
| Nom | Type | Description |
|---|---|---|
expression | nombre | La valeur numérique ou la formule dont la valeur absolue est renvoyée. Peut être une constante, une variable ou une expression complète. |
Formule
ABS(x) = |x|Pour toute entrée, ABS renvoie une valeur nulle ou positive. Une entrée positive est transmise telle quelle, une entrée négative voit son signe inversé, et zéro renvoie zéro.
Comment ça marche
À chaque bar ABS évalue son argument et en retire le signe. C'est une fonction pure, sans profondeur et sans mémoire, donc ABS(close - open) donne la taille du corps du bar en cours, que le bar ait clôturé en hausse ou en baisse. Cela en fait l'outil standard pour mesurer des distances, des gaps et des écarts lorsque le sens n'est pas le sujet.
ABS s'associe naturellement à SGN, qui renvoie le signe sous forme de -1, 0 ou 1. Ensemble, elles décomposent une valeur en magnitude et direction : value = SGN(value) * ABS(value).
Exemples
Exemple 1, Taille du corps de la bar en cours (Indicateur)
// Absolute distance between open and close, regardless of direction
bodySize = ABS(close - open)
RETURN bodySize AS "Body size"La soustraction est négative sur les bars baissières et positive sur les bars haussières. L'encapsuler dans ABS renvoie la magnitude dans les deux cas, donc la série tracée est toujours nulle ou positive.
Exemple 2, Mouvements importants sur une seule 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 %")Utiliser ABS rend le scan symétrique : une baisse de 2% et une hausse de 2% se qualifient toutes deux. Sans cela, la condition ne capterait que les mouvements dans un seul sens.
Exemple 3, Garde-fou de stop basé sur la distance (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) mesure de combien le prix s'est écarté de la moyenne mobile sans tenir compte du côté où il se trouve, de sorte qu'un seul seuil couvre à la fois les écarts au-dessus et en dessous.
Erreurs et pièges courants
- Elle ne modifie que les valeurs négatives.
ABSne réduit jamais la magnitude d'une valeur et ne renvoie jamais de négatif. L'appliquer à une série déjà positive n'a aucun effet et peut masquer un signe dont vous aviez réellement besoin. - La magnitude écarte la direction. Après
ABSon ne peut pas savoir si la valeur d'origine était positive ou négative. Conservez la valeur brute, ou utilisezSGN, si le signe importe plus tard. - Ce n'est pas une fonction d'arrondi.
ABS(-3.7)est3.7, pas4. Pour arrondir, utilisezROUND,CEILouFLOOR.
Instructions liées
SGN, renvoie le signe d'une valeur sous forme de -1, 0 ou 1, la direction queABSignore.SQRT, racine carrée, définie uniquement pour des entrées non négatives quiABSpeut fournir.SQUARE, élève une valeur au carré, une autre façon de supprimer le signe au prix de l'échelle.MAX, la plus grande de deux valeurs, utile avecABSpour borner les distances.MIN, la plus petite de deux valeurs.ROUND, arrondit à l'entier ou à la décimale la plus proche, contrairement àABS.Momentum, variation de prix brute souvent encapsulée dansABSpour mesurer la taille.Variation, variation en pourcentage entre bars.