Jetzt beitreten
Mathematisch/probuilder · probacktest · proorder · proscreener

ROUND

ROUND rundet in ProBuilder eine Zahl auf die nächste ganze Zahl oder auf eine festgelegte Anzahl von Dezimalstellen. Syntax, der Hinweis zum Banker's Rounding und ausgearbeitete Beispiele.

Syntax

probuilder
ROUND(a, digits)

Parameter

NameTypBeschreibung
aZahlDer zu rundende Wert.
digitsGanzzahlOptional. Anzahl der Dezimalstellen, auf die gerundet wird. Wenn weggelassen, a wird auf die nächste ganze Zahl gerundet.

Formel

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

Mit digits, a wird auf so viele Dezimalstellen gerundet, daher ROUND(3.14159, 2) gibt 3.14 zurück.

So funktioniert es

ROUND wählt den nächstliegenden Wert in beide Richtungen, anders als CEIL das immer aufrundet und FLOOR das immer abrundet. Ein Bruchteil unter 0.5 wird abgerundet, über 0.5 aufgerundet. Genaue Hälften folgen der Bankiersrundung: Sie gehen zur nächsten geraden Zahl, daher ROUND(2.5) ergibt 2 und ROUND(3.5) ergibt 4. Das reduziert die kumulative Verzerrung beim Runden vieler Werte.

Der optionale digits Argument setzt die Genauigkeit des Ergebnisses, nützlich zum Normalisieren von Preisen oder Indikatorwerten auf eine feste Anzahl von Dezimalstellen.

Beispiele

Beispiel 1, Eine Änderungsrate runden (Indikator)

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"

Wenn der Rohwert 9.6 ist, ROUND gibt 10 zurück. Ein Wert von 9.4 würde auf 9 abgerundet.

Beispiel 2, Auf zwei Dezimalstellen runden zur Gruppierung (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")

Das Runden auf zwei Dezimalstellen fasst nahezu identische Verhältnisse in gemeinsame Gruppen zusammen.

Beispiel 3, Einen berechneten Zielpreis runden (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 normalisiert das berechnete Ziel auf eine ganze Zahl. Um stattdessen einen Orderkurs auf einen gültigen Tick zu runden, verwenden Sie ROUNDEDUP oder ROUNDEDDOWN.

Häufige Fehler und Stolperfallen

  • Halbe Werte werden zur geraden Zahl gerundet. ROUND(2.5) gibt 2 zurück, nicht 3, weil Banker's Rounding exakte Hälften auf die nächste gerade Zahl führt. Gehen Sie nicht davon aus, dass 0.5 immer aufgerundet wird.
  • Rundet in beide Richtungen. Anders als CEIL und FLOOR, ROUND kann steigen oder fallen. Verwenden Sie CEIL um Aufrunden zu erzwingen und FLOOR um Abrunden zu erzwingen.
  • Keine Rundung auf Ticks. ROUND funktioniert mit Ganzzahlen und Dezimalzahlen. Um einen Orderpreis auf den handelbaren Tick des Instruments zu runden, verwenden Sie ROUNDEDUP oder ROUNDEDDOWN.
  • CEIL, rundet auf die nächste ganze Zahl oder Dezimalstelle auf.
  • FLOOR, rundet auf die nächste ganze Zahl oder Dezimalstelle ab.
  • ROUNDEDUP, rundet einen Orderkurs auf den nächsten handelbaren Tick auf.
  • ROUNDEDDOWN, rundet einen Orderkurs auf den nächsten handelbaren Tick ab.
  • ABS, Absolutwert, oft in Kombination mit Rundung.
  • SGN, Vorzeichen eines Werts.
  • MOD, Rest einer Division.