Iscriviti ora
Matematica/probuilder · probacktest · proorder · proscreener

ROUND

ROUND in ProBuilder arrotonda un numero all'intero più vicino, o a un numero stabilito di cifre decimali. Sintassi, la nota sull'arrotondamento bancario ed esempi svolti.

Sintassi

probuilder
ROUND(a, digits)

Parametri

NomeTipoDescrizione
anumeroIl valore da arrotondare.
digitsinteroOpzionale. Numero di decimali a cui arrotondare. Se omesso, a è arrotondato al numero intero più vicino.

Formula

codice
ROUND(x) = nearest integer to x,   halves rounded to the nearest even value

Con digits, a viene arrotondato a quel numero di decimali, quindi ROUND(3.14159, 2) restituisce 3.14.

Come funziona

ROUND sceglie il valore più vicino in entrambe le direzioni, a differenza di CEIL che arrotonda sempre per eccesso e FLOOR che arrotonda sempre per difetto. Una parte frazionaria inferiore a 0.5 arrotonda per difetto, superiore a 0.5 per eccesso. I mezzi esatti seguono l'arrotondamento bancario: vanno al numero pari più vicino, quindi ROUND(2.5) dà 2 e ROUND(3.5) dà 4. Questo riduce la distorsione cumulativa quando si arrotondano molti valori.

L'opzionale digits argomento imposta la precisione del risultato, utile per normalizzare prezzi o letture di indicatori a un numero fisso di decimali.

Esempi

Esempio 1, Arrotondare un tasso di variazione (Indicatore)

probuilder
// Round the 10-period rate of change to a whole number
i1 = ROC[10](close)
roundedROCvalue = ROUND(i1)
RETURN i1 AS "ROC", roundedROCvalue AS "ROC rounded"

Se la lettura grezza è 9.6, ROUND restituisce 10. Un valore di 9.4 verrebbe arrotondato per difetto a 9.

Esempio 2, Arrotondare a due decimali per il raggruppamento (ProScreener)

probuilder
// Group instruments by a two-decimal ratio
ratio = close / Average[50](close)
r = ROUND(ratio, 2)
SCREENER[r >= 1](r AS "Ratio 2dp")

Arrotondare a due decimali raccoglie rapporti quasi identici in gruppi condivisi.

Esempio 3, Arrotondare un prezzo obiettivo calcolato (ProOrder)

probuilder
// Round a target price to a whole number before display
entry = close
target = ROUND(entry * 1.015)
IF NOT LongOnMarket AND close CROSSES OVER Average[20](close) THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

ROUND normalizza il target calcolato a un numero intero. Per allineare invece un prezzo d'ordine a un tick valido, usa ROUNDEDUP o ROUNDEDDOWN.

Errori e insidie comuni

  • I mezzi si arrotondano al pari. ROUND(2.5) restituisce 2, non 3, perché l'arrotondamento bancario porta i mezzi esatti al numero pari più vicino. Non dare per scontato che 0.5 venga sempre arrotondato per eccesso.
  • Arrotonda in entrambe le direzioni. A differenza di CEIL e FLOOR, ROUND può salire o scendere. Usa CEIL per forzare verso l'alto e FLOOR per forzare verso il basso.
  • Non è un arrotondamento al tick. ROUND funziona su interi e decimali. Per arrotondare il prezzo di un ordine al tick negoziabile dello strumento, usa ROUNDEDUP o ROUNDEDDOWN.
  • CEIL, arrotonda per eccesso al numero intero o decimale più vicino.
  • FLOOR, arrotonda per difetto al numero intero o decimale più vicino.
  • ROUNDEDUP, arrotonda per eccesso il prezzo di un ordine al tick negoziabile più vicino.
  • ROUNDEDDOWN, arrotonda per difetto il prezzo di un ordine al tick negoziabile più vicino.
  • ABS, valore assoluto, spesso abbinato all'arrotondamento.
  • SGN, segno di un valore.
  • MOD, resto di una divisione.