Rejoignez-nous
Constantes/probuilder · probacktest · proorder · proscreener

Decimals

Decimals retourne le nombre de décimales de l'instrument actuel dans ProBuilder. Utilisez Decimals pour formater l'affichage ou dimensionner les décalages de prix selon la précision de l'instrument.

Syntaxe

probuilder
Decimals

Decimals n'accepte aucun indice et renvoie un seul entier pour l'instrument sur lequel le code s'exécute.

Comment ça marche

Decimals indique combien de chiffres figurent après la virgule dans les cotations de l'instrument. Une action cotée à deux décimales renvoie 2, un indice coté en points entiers renvoie 0, et une paire de devises cotée à cinq décimales renvoie 5.

La valeur est une propriété de l'instrument, pas d'un bar, elle ne change donc pas d'un bar au suivant et n'accepte pas de décalage entre crochets. Elle reflète la précision de prix que la plateforme utilise pour ce marché.

Lecture Decimals permet à un même script de se comporter correctement sur des instruments de précision différente. C'est utile pour construire un décalage d'un pas minimal, décider comment arrondir un niveau calculé, ou mettre en forme une valeur à afficher pour que le nombre de chiffres affichés corresponde au marché.

Exemples

Exemple 1, Afficher la précision de l'instrument (Indicateur)

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

L'indicateur trace une ligne plate au niveau du nombre de décimales de l'instrument, confirmant sa précision de cotation.

Exemple 2, Filtrage par précision de cotation (ProScreener)

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

SCREENER[precise] (Decimals AS "Decimals")

Le screener isole les instruments dont les prix comportent plus de deux décimales.

Exemple 3, Décalage adapté à la précision (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

Le décalage du stop provient de Decimals, donc elle s'adapte au plus petit pas de cotation de chaque instrument.

Erreurs et pièges courants

  • Pas une taille de tick. Decimals donne le nombre de décimales, pas l'incrément de prix minimum. Les instruments qui tickent par pas supérieurs à une unité décimale exigent POINTSIZE ou TICKSIZE pour le vrai pas.
  • Fixe par instrument. La valeur ne varie pas d'une bar à l'autre, donc appliquer un décalage entre crochets comme Decimals[1] n'a aucun sens.
  • Zéro pour les cotations en nombres entiers. Les instruments cotés en unités entières renvoient 0, donc un code qui divise par Decimals doit se prémunir contre ce cas.
  • Close, le prix de clôture d'un bar.
  • Open, le prix d'ouverture d'un bar.
  • High, le prix le plus haut d'un bar.
  • Low, le prix le plus bas d'un bar.
  • Range, le high moins le low d'un bar.
  • TypicalPrice, la moyenne de high, low et close.
  • Volume, le volume échangé d'un bar.
  • CustomClose, la source de prix sélectionnable par l'utilisateur.