CEIL
CEIL in ProBuilder rondt een getal naar boven af op het naaste gehele getal, of op een ingesteld aantal decimalen. Syntaxis, de optionele digits-parameter en voorbeelden.
Syntaxis
ceil(var, digits)Parameters
| Naam | Type | Beschrijving |
|---|---|---|
var | getal | De waarde die naar boven moet worden afgerond. |
digits | geheel getal | Optioneel. Aantal decimalen waarop naar boven wordt afgerond. Indien weggelaten, var wordt naar boven afgerond op het naastgelegen gehele getal. |
Formule
CEIL(x) = smallest integer >= xMet digits, wordt de waarde met 10^digits geschaald, naar boven afgerond en weer teruggeschaald, zodat ceil(x, d) rondt af x tot d decimalen.
Hoe het werkt
CEIL rondt altijd af naar plus oneindig, nooit naar nul. ceil(3.1) en ceil(3.9) geven beide 4 omdat elk gebroken deel het resultaat omhoog duwt. Bij negatieve getallen gaat het naar nul toe: ceil(-3.7) geeft -3, het kleinste gehele getal dat niet kleiner is dan -3.7.
De optionele digits argument laat je naar boven afronden op een gekozen precisie. ceil(3.14159, 2) geeft 3.15. Dit verschilt van ROUND, die de dichtstbijzijnde waarde in beide richtingen kiest, en van FLOOR, die altijd naar beneden afrondt.
Voorbeelden
Voorbeeld 1, Een gemiddelde naar boven afronden op hele eenheden (Indicator)
// Whole-number ceiling of a moving average
ma = Average[20](close)
upTicks = ceil(ma)
RETURN upTicks AS "MA rounded up"Elk fractioneel deel van het gemiddelde wordt opgehoogd naar het volgende gehele getal, dus de geplotte lijn ligt op of boven het ruwe gemiddelde.
Voorbeeld 2, Een ratio in bovenwaartse stappen groeperen (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")Naar boven afronden op één decimaal groepeert instrumenten in grove banden en behoudt daarbij het plafond van elke band.
Voorbeeld 3, Position size die een doel dekt (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
ENDIFDe ruwe hoeveelheid naar boven afronden zorgt ervoor dat de uitgevoerde grootte de beoogde exposure dekt in plaats van er net onder te blijven. Gebruik voor het afronden van een orderprijs naar een geldige tick ROUNDEDUP in plaats daarvan.
Veelvoorkomende fouten en valkuilen
- Rondt altijd naar boven af, niet naar het naaste.
ceil(3.1)is4, niet3. Als je het dichtstbijzijnde gehele getal wilt, gebruikROUND; om naar beneden af te ronden, gebruikFLOOR. - Negatieve waarden bewegen naar nul.
ceil(-2.5)geeft terug-2, niet-3, omdat -2 het kleinste gehele getal is dat minstens -2.5 is. - Niet hetzelfde als ROUNDEDUP.
CEILrondt naar boven af op gehele getallen of decimalen.ROUNDEDUProndt een orderprijs naar boven af op de dichtstbijzijnde geldige tick van het instrument.
Gerelateerde instructies
FLOOR, rondt naar beneden af op het naaste gehele getal of decimaal, de tegenovergestelde richting.ROUND, rondt af op het dichtstbijzijnde gehele of decimale getal.ROUNDEDUP, rondt een orderprijs naar boven af op de dichtstbijzijnde verhandelbare tick.ROUNDEDDOWN, rondt een orderprijs naar beneden af op de dichtstbijzijnde verhandelbare tick.ABS, absolute waarde, vaak gecombineerd met afronden.SGN, teken van een waarde.MOD, rest van een deling, nog een bewerking gericht op gehele getallen.