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

CEIL

CEIL en ProBuilder redondea un número hacia arriba al entero más cercano, o a un número determinado de decimales. Sintaxis, el parámetro opcional de dígitos y ejemplos.

Sintaxis

probuilder
ceil(var, digits)

Parámetros

NombreTipoDescripción
varnúmeroEl valor a redondear hacia arriba.
digitsenteroOpcional. Número de decimales a los que redondear hacia arriba. Si se omite, var se redondea al alza al número entero más cercano.

Fórmula

código
CEIL(x) = smallest integer >= x

Con digits, el valor se multiplica por 10^digits, se redondea al alza y se vuelve a escalar, de modo que ceil(x, d) redondea x hasta d decimales.

Cómo funciona

CEIL siempre redondea hacia infinito positivo, nunca hacia cero. ceil(3.1) y ceil(3.9) ambos devuelven 4 porque cualquier parte fraccionaria empuja el resultado hacia arriba. Para los negativos se mueve hacia cero: ceil(-3.7) devuelve -3, el menor entero que no es menor que -3.7.

El opcional digits permite redondear al alza con la precisión elegida. ceil(3.14159, 2) devuelve 3.15. Esto difiere de ROUND, que elige el valor más cercano en cualquier dirección, y de FLOOR, que siempre redondea hacia abajo.

Ejemplos

Ejemplo 1, Redondear una media hacia arriba a unidades enteras (Indicador)

probuilder
// Whole-number ceiling of a moving average
ma = Average[20](close)
upTicks = ceil(ma)
RETURN upTicks AS "MA rounded up"

Cualquier parte fraccionaria de la media se eleva al siguiente entero, por lo que la línea trazada se sitúa en la media bruta o por encima de ella.

Ejemplo 2, Agrupar un ratio en escalones superiores (ProScreener)

probuilder
// Group price-to-average ratio into 0.1 upper buckets
ratio = close / Average[50](close)
bucket = ceil(ratio, 1)
SCREENER[ratio > 1](bucket AS "Ratio ceiling")

Redondear hacia arriba a un decimal agrupa los instrumentos en bandas gruesas conservando el techo de cada banda.

Ejemplo 3, Position size que cubre un objetivo (ProOrder)

probuilder
// Round required contracts up so exposure is never short of target
targetExposure = 10000
priceValue = close
rawQty = targetExposure / priceValue
qty = ceil(rawQty)
IF NOT LongOnMarket AND close CROSSES OVER Average[20](close) THEN
  BUY qty CONTRACT AT MARKET
ENDIF

Redondear al alza la cantidad bruta garantiza que el tamaño ejecutado cubra la exposición objetivo en lugar de quedarse justo por debajo. Para redondear el precio de una orden a un tick válido, usa ROUNDEDUP en su lugar.

Errores y trampas habituales

  • Siempre redondea hacia arriba, no hacia el más cercano. ceil(3.1) es 4, no 3. Si quieres el entero más próximo, usa ROUND; para redondear a la baja, usa FLOOR.
  • Los negativos se mueven hacia cero. ceil(-2.5) devuelve -2, no -3, porque -2 es el entero más pequeño que es al menos -2.5.
  • No es lo mismo que ROUNDEDUP. CEIL redondea al alza a enteros o decimales. ROUNDEDUP redondea al alza un precio de orden al tick válido más cercano del instrumento.
  • FLOOR, redondea hacia abajo al entero o decimal más cercano, en la dirección opuesta.
  • ROUND, redondea al entero o decimal más próximo.
  • ROUNDEDUP, redondea al alza el precio de una orden al tick negociable más próximo.
  • ROUNDEDDOWN, redondea a la baja el precio de una orden al tick negociable más próximo.
  • ABS, valor absoluto, a menudo combinado con el redondeo.
  • SGN, signo de un valor.
  • MOD, resto de una división, otra operación orientada a enteros.