CEIL
CEIL i ProBuilder avrundar ett tal uppåt till närmaste heltal, eller till ett angivet antal decimaler. Syntax, den valfria digits-parametern och exempel.
Syntax
ceil(var, digits)Parametrar
| Namn | Typ | Beskrivning |
|---|---|---|
var | tal | Värdet som ska avrundas uppåt. |
digits | heltal | Valfritt. Antal decimaler att avrunda uppåt till. Om det utelämnas, var avrundas uppåt till närmaste heltal. |
Formel
CEIL(x) = smallest integer >= xMed digits, skalas värdet med 10^digits, avrundas uppåt och skalas sedan tillbaka, så ceil(x, d) avrundar x upp till d decimaler.
Så fungerar det
CEIL avrundar alltid mot plus oändligheten, aldrig mot noll. ceil(3.1) och ceil(3.9) returnerar båda 4 eftersom varje decimaldel trycker resultatet uppåt. För negativa tal flyttas det mot noll: ceil(-3.7) returnerar -3, det minsta heltalet som inte är mindre än -3.7.
Den valfria digits argumentet låter dig avrunda uppåt med valfri precision. ceil(3.14159, 2) returnerar 3.15. Detta skiljer sig från ROUND, som väljer det närmaste värdet i båda riktningarna, och från FLOOR, som alltid avrundar nedåt.
Exempel
Exempel 1, Avrunda ett medelvärde uppåt till hela enheter (Indikator)
// Whole-number ceiling of a moving average
ma = Average[20](close)
upTicks = ceil(ma)
RETURN upTicks AS "MA rounded up"Varje decimaldel av medelvärdet skjuts upp till nästa heltal, så den plottade linjen ligger på eller över det råa medelvärdet.
Exempel 2, Dela in ett förhållande i övre steg (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")Avrundning uppåt till en decimal grupperar instrument i grova band samtidigt som varje bands tak behålls.
Exempel 3, Position size som täcker ett mål (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
ENDIFAtt avrunda den råa kvantiteten uppåt säkerställer att den fyllda storleken täcker målexponeringen i stället för att hamna strax under den. För att avrunda ett orderpris till en giltig tick, använd ROUNDEDUP istället.
Vanliga fel och fallgropar
- Avrundar alltid uppåt, inte mot närmaste.
ceil(3.1)är4, inte3. Om du vill ha närmaste heltal, användROUND; för att avrunda nedåt, användFLOOR. - Negativa tal rör sig mot noll.
ceil(-2.5)returnerar-2, inte-3, eftersom -2 är det minsta heltal som är minst -2.5. - Inte samma som ROUNDEDUP.
CEILavrundar uppåt till heltal eller decimaler.ROUNDEDUPavrundar ett orderpris uppåt till instrumentets närmaste giltiga tick.
Relaterade instruktioner
FLOOR, avrundar nedåt till närmaste heltal eller decimal, i motsatt riktning.ROUND, avrundar till närmaste heltal eller decimal.ROUNDEDUP, avrundar ett orderpris uppåt till närmaste handelsbara tick.ROUNDEDDOWN, avrundar ett orderpris nedåt till närmaste handelsbara tick.ABS, absolutvärde, ofta kombinerat med avrundning.SGN, tecknet för ett värde.MOD, resten vid en division, en annan heltalsorienterad operation.