Bli medlem idag
Matematik/probuilder · probacktest · proorder · proscreener

FLOOR

FLOOR i ProBuilder avrundar ett tal nedåt till närmaste heltal, eller till ett bestämt antal decimaler. Syntax, valfri decimalparameter och exempel.

Syntax

probuilder
floor(var, digits)

Parametrar

NamnTypBeskrivning
vartalVärdet som ska avrundas nedåt.
digitsheltalValfritt. Antal decimaler att avrunda nedåt till. Om det utelämnas, var avrundas nedåt till närmaste heltal.

Formel

kod
FLOOR(x) = largest integer <= x

Med digits, skalas värdet med 10^digits, avrundas nedåt och skalas sedan tillbaka, så floor(x, d) avrundar x ner till d decimaler.

Så fungerar det

FLOOR avrundar alltid mot negativ oändlighet och förkastar all decimaldel för positiva tal. floor(3.1) och floor(3.9) returnerar båda 3. För negativa tal rör det sig bort från noll: floor(-3.2) returnerar -4, det största heltalet som inte är större än -3.2.

Den valfria digits argumentet anger precisionen. floor(3.756, 1) returnerar 3.7. Detta är spegelbilden av CEIL, som alltid avrundar uppåt, och skiljer sig från ROUND, som väljer det närmaste värdet i båda riktningarna.

Exempel

Exempel 1, Avrunda ett medelvärde nedåt till hela enheter (Indikator)

probuilder
// Whole-number floor of a moving average
ma = Average[20](close)
downTicks = floor(ma)
RETURN downTicks AS "MA rounded down"

Decimaldelen av medelvärdet tas bort, så den ritade linjen ligger på eller under det råa medelvärdet.

Exempel 2, Dela in ett förhållande i lägre steg (ProScreener)

probuilder
// Group price-to-average ratio into 0.1 lower buckets
ratio = close / Average[50](close)
bucket = floor(ratio, 1)
SCREENER[ratio < 1](bucket AS "Ratio floor")

Avrundning nedåt till en decimal grupperar instrument i grova band ankrade vid varje bands golv.

Exempel 3, Konservativ position size (ProOrder)

probuilder
// Round required contracts down so exposure never overshoots the budget
budget = 10000
priceValue = close
rawQty = budget / priceValue
qty = floor(rawQty)
IF qty >= 1 AND NOT LongOnMarket AND close CROSSES OVER Average[20](close) THEN
  BUY qty CONTRACT AT MARKET
ENDIF

Att avrunda den råa kvantiteten nedåt håller den totala exponeringen inom budgeten. För att avrunda ett orderpris nedåt till en giltig tick, använd ROUNDEDDOWN istället.

Vanliga fel och fallgropar

  • Avrundar alltid nedåt, inte till närmaste. floor(3.9) är 3, inte 4. För närmaste heltal använd ROUND; för att avrunda uppåt använd CEIL.
  • Negativa tal rör sig bort från noll. floor(-2.5) returnerar -3, inte -2, eftersom -3 är det största heltal som inte är större än -2.5.
  • Inte samma som ROUNDEDDOWN. FLOOR avrundar nedåt till heltal eller decimaler. ROUNDEDDOWN avrundar ett orderpris nedåt till instrumentets närmaste giltiga tick.
  • CEIL, avrundar uppåt till närmaste heltal eller decimal, den motsatta riktningen.
  • ROUND, avrundar till närmaste heltal eller decimal.
  • ROUNDEDDOWN, avrundar ett orderpris nedåt till närmaste handelsbara tick.
  • ROUNDEDUP, avrundar ett orderpris uppå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.