Únete hoy
Matemáticas/probuilder · probacktest · proorder · proscreener

ABS

ABS en ProBuilder devuelve el valor absoluto de un número, su magnitud sin signo, de modo que una entrada negativa se vuelve positiva. Sintaxis, parámetros y ejemplos.

Sintaxis

probuilder
ABS(expression)

Parámetros

NombreTipoDescripción
expressionnúmeroEl valor numérico o la fórmula cuyo valor absoluto se devuelve. Puede ser una constante, una variable o una expresión completa.

Fórmula

código
ABS(x) = |x|

Para cualquier entrada, ABS devuelve un valor cero o positivo. Una entrada positiva pasa sin cambios, una entrada negativa cambia de signo y el cero devuelve cero.

Cómo funciona

En cada bar ABS evalúa su argumento y elimina el signo. Es una función pura, sin retroceso y sin memoria, por lo que ABS(close - open) da el tamaño del cuerpo del bar actual con independencia de si el bar cerró al alza o a la baja. Esto lo convierte en la herramienta estándar para medir distancias, gaps y desviaciones donde la dirección no importa.

ABS combina naturalmente con SGN, que devuelve el signo como -1, 0 o 1. Juntas descomponen un valor en magnitud y dirección: value = SGN(value) * ABS(value).

Ejemplos

Ejemplo 1, Tamaño del cuerpo de la bar actual (Indicador)

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

La resta es negativa en bars bajistas y positiva en bars alcistas. Envolverla en ABS devuelve la magnitud en cualquier caso, por lo que la serie trazada es siempre cero o positiva.

Ejemplo 2, Movimientos grandes en una sola 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 %")

Usar ABS hace el escaneo simétrico: una caída del 2% y una subida del 2% cumplen las dos. Sin él, la condición solo captaría movimientos en una dirección.

Ejemplo 3, Protección de stop basada en la distancia (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) mide cuánto se ha alejado el precio de la media móvil sin importar en qué lado está, por lo que un único umbral cubre tanto los casos de estiramiento por encima como por debajo.

Errores y trampas habituales

  • Solo cambia los negativos. ABS nunca hace un valor menor en magnitud y nunca devuelve un negativo. Aplicarlo a una serie ya positiva no tiene efecto y puede ocultar un signo que realmente necesitabas.
  • La magnitud descarta la dirección. Después de ABS no puedes saber si el valor original era al alza o a la baja. Conserva el valor bruto, o usa SGN, si el signo importa después.
  • No es una función de redondeo. ABS(-3.7) es 3.7, no 4. Para redondear usa ROUND, CEIL o FLOOR.
  • SGN, devuelve el signo de un valor como -1, 0 o 1, la dirección que ABS descarta.
  • SQRT, raíz cuadrada, definida solo para entradas no negativas que ABS puede proporcionar.
  • SQUARE, eleva un valor al cuadrado, otra forma de eliminar el signo a costa de la escala.
  • MAX, el mayor de dos valores, útil con ABS para limitar distancias.
  • MIN, el menor de dos valores.
  • ROUND, redondea al entero o decimal más cercano, a diferencia de ABS.
  • Momentum, cambio de precio en bruto que a menudo se envuelve en ABS para medir el tamaño.
  • Variation, variación porcentual entre bars.