CEIL
CEIL rundet in ProBuilder eine Zahl auf die nächste ganze Zahl oder auf eine festgelegte Anzahl von Dezimalstellen auf. Syntax, der optionale Parameter für die Stellen und Beispiele.
Syntax
ceil(var, digits)Parameter
| Name | Typ | Beschreibung |
|---|---|---|
var | Zahl | Der aufzurundende Wert. |
digits | Ganzzahl | Optional. Anzahl der Dezimalstellen, auf die aufgerundet wird. Wenn weggelassen, var wird auf die nächste ganze Zahl aufgerundet. |
Formel
CEIL(x) = smallest integer >= xMit digits, wird der Wert mit 10^digits skaliert, aufgerundet und dann zurückskaliert, sodass ceil(x, d) rundet x bis zu d Dezimalstellen.
So funktioniert es
CEIL rundet immer in Richtung positiv unendlich, niemals in Richtung Null. ceil(3.1) und ceil(3.9) geben beide 4 zurück, weil jeder Bruchteil das Ergebnis nach oben treibt. Bei negativen Werten bewegt es sich Richtung Null: ceil(-3.7) gibt -3 zurück, die kleinste ganze Zahl, die nicht kleiner als -3.7 ist.
Der optionale digits Argument erlaubt das Aufrunden auf eine gewählte Genauigkeit. ceil(3.14159, 2) gibt 3.15 zurück. Das unterscheidet sich von ROUND, der den nächstgelegenen Wert in beide Richtungen wählt, und von FLOOR, das immer abrundet.
Beispiele
Beispiel 1, Einen Durchschnitt auf ganze Einheiten aufrunden (Indikator)
// Whole-number ceiling of a moving average
ma = Average[20](close)
upTicks = ceil(ma)
RETURN upTicks AS "MA rounded up"Jeder Bruchteil des Durchschnitts wird auf die nächste ganze Zahl aufgerundet, daher liegt die geplottete Linie auf oder über dem rohen Durchschnitt.
Beispiel 2, Ein Verhältnis in obere Stufen einteilen (ProScreener)
// 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")Das Aufrunden auf eine Dezimalstelle gruppiert Instrumente in grobe Bänder und behält dabei die Obergrenze jedes Bandes.
Beispiel 3, Position size, die ein Ziel abdeckt (ProOrder)
// 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
ENDIFDas Aufrunden der rohen Menge stellt sicher, dass die ausgeführte Größe das Zielexposure deckt und nicht knapp darunter bleibt. Zum Runden eines Orderkurses auf einen gültigen Tick verwenden Sie ROUNDEDUP stattdessen.
Häufige Fehler und Stolperfallen
- Rundet immer auf, nicht zum nächstliegenden Wert.
ceil(3.1)ist4, nicht3. Wenn Sie die nächste ganze Zahl möchten, verwenden SieROUND; zum Abrunden verwenden SieFLOOR. - Negative Werte bewegen sich in Richtung Null.
ceil(-2.5)gibt zurück-2, nicht-3, denn -2 ist die kleinste ganze Zahl, die mindestens -2.5 ist. - Nicht dasselbe wie ROUNDEDUP.
CEILrundet auf Ganzzahlen oder Dezimalstellen auf.ROUNDEDUPrundet einen Orderpreis auf den nächsten gültigen Tick des Instruments auf.
Verwandte Befehle
FLOOR, rundet auf die nächste ganze Zahl oder Dezimalstelle ab, die entgegengesetzte Richtung.ROUND, rundet auf die nächste Ganzzahl oder Dezimalstelle.ROUNDEDUP, rundet einen Orderkurs auf den nächsten handelbaren Tick auf.ROUNDEDDOWN, rundet einen Orderkurs auf den nächsten handelbaren Tick ab.ABS, Absolutwert, häufig mit Rundung kombiniert.SGN, Vorzeichen eines Werts.MOD, Rest einer Division, eine weitere ganzzahlorientierte Operation.