Rejoignez-nous
Mathématiques/probuilder · probacktest · proorder · proscreener

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

probuilder
ABS(expression)

Paramètres

NomTypeDescription
expressionnombreLa 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

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

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

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 %")

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)

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) 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. ABS ne 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 ABS on ne peut pas savoir si la valeur d'origine était positive ou négative. Conservez la valeur brute, ou utilisez SGN, si le signe importe plus tard.
  • Ce n'est pas une fonction d'arrondi. ABS(-3.7) est 3.7, pas 4. Pour arrondir, utilisez ROUND, CEIL ou FLOOR.
  • SGN, renvoie le signe d'une valeur sous forme de -1, 0 ou 1, la direction que ABS ignore.
  • SQRT, racine carrée, définie uniquement pour des entrées non négatives qui ABS peut 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 avec ABS pour 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 dans ABS pour mesurer la taille.
  • Variation, variation en pourcentage entre bars.