Únete hoy
Constantes/probuilder · probacktest · proorder · proscreener

Decimals

Decimals devuelve el número de decimales del instrumento actual en ProBuilder. Usa Decimals para formatear la salida o ajustar los desplazamientos de precio a la precisión del instrumento.

Sintaxis

probuilder
Decimals

Decimals no acepta índice y devuelve un único entero para el instrumento sobre el que se ejecuta el código.

Cómo funciona

Decimals indica cuántos dígitos aparecen tras la coma decimal en las cotizaciones del instrumento. Una acción cotizada a dos decimales devuelve 2, un índice cotizado en puntos enteros devuelve 0, y un par de divisas cotizado a cinco decimales devuelve 5.

El valor es una propiedad del instrumento, no de un bar, por lo que no cambia de un bar al siguiente y no admite desplazamiento entre corchetes. Refleja la precisión de precio que la plataforma usa para ese mercado.

Lectura Decimals permite que un mismo script se comporte correctamente en instrumentos de distinta precisión. Resulta útil para construir un desplazamiento del paso mínimo, decidir cómo redondear un nivel calculado, o dar formato a un valor para que el número de dígitos mostrados coincida con el mercado.

Ejemplos

Ejemplo 1, Informar de la precisión del instrumento (Indicador)

probuilder
// Show how many decimals the current instrument uses
numDecimals = Decimals
RETURN numDecimals AS "Decimals"

El indicador dibuja una línea plana en el número de decimales del instrumento, confirmando su precisión de cotización.

Ejemplo 2, Búsqueda por precisión de cotización (ProScreener)

probuilder
// Instruments quoted to more than two decimal places
precise = Decimals > 2

SCREENER[precise] (Decimals AS "Decimals")

El screener aísla los instrumentos cuyos precios tienen más de dos decimales.

Ejemplo 3, Desplazamiento que tiene en cuenta la precisión (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// One smallest price unit, derived from the instrument's decimals
oneUnit = Pow(10, -Decimals)

IF Close CROSSES OVER Average[20](Close) THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Place the stop one unit below the recent low
IF LONGONMARKET THEN
  SELL AT Lowest[10](Low) - oneUnit STOP
ENDIF

El desplazamiento del stop se construye a partir de Decimals, por lo que se adapta al menor paso cotizado de cada instrumento.

Errores y trampas habituales

  • No es un tamaño de tick. Decimals da el número de decimales, no el incremento mínimo de precio. Los instrumentos que hacen tick en pasos mayores que una unidad decimal necesitan POINTSIZE o TICKSIZE para el paso real.
  • Fijo para cada instrumento. El valor no varía entre bars, por lo que aplicar un desplazamiento entre corchetes como Decimals[1] no tiene sentido.
  • Cero en cotizaciones con números enteros. Los instrumentos cotizados en unidades enteras devuelven 0, por lo que el código que divide por Decimals debe protegerse contra ese caso.
  • Close, el precio de cierre de un bar.
  • Open, el precio de apertura de un bar.
  • High, el precio más alto de un bar.
  • Low, el precio más bajo de un bar.
  • Range, el high menos el low de un bar.
  • TypicalPrice, la media de high, low y close.
  • Volume, el volumen negociado de un bar.
  • CustomClose, la fuente de precio seleccionable por el usuario.