Bli medlem i dag
Matematisk/probuilder · probacktest · proorder · proscreener

CEIL

CEIL i ProBuilder runder et tall opp til nærmeste heltall, eller til et angitt antall desimaler. Syntaks, den valgfrie digits-parameteren og eksempler.

Syntaks

probuilder
ceil(var, digits)

Parametere

NavnTypeBeskrivelse
vartallVerdien som skal rundes opp.
digitsheltallValgfritt. Antall desimaler det skal rundes opp til. Når det utelates, var rundes opp til nærmeste hele tall.

Formel

kode
CEIL(x) = smallest integer >= x

Med digits, skaleres verdien med 10^digits, rundes opp og skaleres tilbake, slik at ceil(x, d) runder av x opptil d desimaler.

Slik fungerer det

CEIL runder alltid mot positiv uendelig, aldri mot null. ceil(3.1) og ceil(3.9) returnerer begge 4 fordi enhver brøkdel skyver resultatet opp. For negative tall beveger den seg mot null: ceil(-3.7) returnerer -3, det minste heltallet som ikke er mindre enn -3.7.

Den valgfrie digits argumentet lar deg runde opp med valgt presisjon. ceil(3.14159, 2) returnerer 3.15. Dette skiller seg fra ROUND, som velger den nærmeste verdien i begge retninger, og fra FLOOR, som alltid runder ned.

Eksempler

Eksempel 1, Rund et gjennomsnitt opp til hele enheter (Indikator)

probuilder
// Whole-number ceiling of a moving average
ma = Average[20](close)
upTicks = ceil(ma)
RETURN upTicks AS "MA rounded up"

Enhver desimaldel av gjennomsnittet skyves opp til neste heltall, så den plottede linjen ligger på eller over det rå gjennomsnittet.

Eksempel 2, Grupper et forholdstall i øvre trinn (ProScreener)

probuilder
// 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")

Å runde opp til én desimal grupperer instrumenter i grove bånd samtidig som hvert bånds øvre grense beholdes.

Eksempel 3, Position size som dekker et mål (ProOrder)

probuilder
// 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
ENDIF

Å runde den rå mengden opp sikrer at den fylte størrelsen dekker måleksponeringen i stedet for å havne rett under den. For å runde en ordrepris til en gyldig tick, bruk ROUNDEDUP i stedet.

Vanlige feil og fallgruver

  • Runder alltid opp, ikke til nærmeste. ceil(3.1) er 4, ikke 3. Hvis du vil ha nærmeste heltall, bruk ROUND; for å runde ned, bruk FLOOR.
  • Negative tall beveger seg mot null. ceil(-2.5) returnerer -2, ikke -3, fordi -2 er det minste heltallet som er minst -2.5.
  • Ikke det samme som ROUNDEDUP. CEIL runder opp til heltall eller desimaler. ROUNDEDUP runder en ordrepris opp til nærmeste gyldige tick for instrumentet.
  • FLOOR, runder ned til nærmeste heltall eller desimal, motsatt retning.
  • ROUND, runder av til nærmeste heltall eller desimal.
  • ROUNDEDUP, runder en ordrepris opp til nærmeste omsettelige tick.
  • ROUNDEDDOWN, runder en ordrepris ned til nærmeste omsettelige tick.
  • ABS, absoluttverdi, ofte kombinert med avrunding.
  • SGN, fortegnet til en verdi.
  • MOD, resten av en divisjon, en annen heltallsorientert operasjon.