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

ROUND

ROUND i ProBuilder avrundar ett tal till närmaste heltal, eller till ett angivet antal decimaler. Syntax, noteringen om bankirsavrundning och genomgångna exempel.

Syntax

probuilder
ROUND(a, digits)

Parametrar

NamnTypBeskrivning
atalVärdet som ska avrundas.
digitsheltalValfritt. Antal decimaler att avrunda till. Om det utelämnas, a avrundas till närmaste heltal.

Formel

kod
ROUND(x) = nearest integer to x,   halves rounded to the nearest even value

Med digits, a avrundas till så många decimaler, så ROUND(3.14159, 2) returnerar 3.14.

Så fungerar det

ROUND väljer det närmaste värdet i båda riktningarna, till skillnad från CEIL som alltid avrundar uppåt och FLOOR som alltid avrundar nedåt. En decimaldel under 0.5 avrundas nedåt, över 0.5 avrundas uppåt. Exakta halvor följer bankavrundning: de går till närmaste jämna tal, så ROUND(2.5) ger 2 och ROUND(3.5) ger 4. Detta minskar den kumulativa snedvridningen vid avrundning av många värden.

Den valfria digits argumentet anger resultatets precision, användbart för att normalisera priser eller indikatorvärden till ett fast antal decimaler.

Exempel

Exempel 1, Avrunda en förändringstakt (Indikator)

probuilder
// Round the 10-period rate of change to a whole number
i1 = ROC[10](close)
roundedROCvalue = ROUND(i1)
RETURN i1 AS "ROC", roundedROCvalue AS "ROC rounded"

Om det råa värdet är 9.6, ROUND returnerar 10. Ett värde på 9.4 skulle avrundas nedåt till 9.

Exempel 2, Avrunda till två decimaler för gruppering (ProScreener)

probuilder
// Group instruments by a two-decimal ratio
ratio = close / Average[50](close)
r = ROUND(ratio, 2)
SCREENER[r >= 1](r AS "Ratio 2dp")

Avrundning till två decimaler slår ihop nästan identiska kvoter i gemensamma grupper.

Exempel 3, Avrunda ett beräknat målpris (ProOrder)

probuilder
// Round a target price to a whole number before display
entry = close
target = ROUND(entry * 1.015)
IF NOT LongOnMarket AND close CROSSES OVER Average[20](close) THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

ROUND normaliserar det beräknade målet till ett heltal. För att i stället fästa ett orderpris på en giltig tick, använd ROUNDEDUP eller ROUNDEDDOWN.

Vanliga fel och fallgropar

  • Hälftvärden avrundas till jämnt tal. ROUND(2.5) returnerar 2, inte 3, eftersom bankirsavrundning skickar exakta halvor till närmaste jämna tal. Utgå inte från att 0.5 alltid avrundas uppåt.
  • Avrundar i båda riktningarna. Till skillnad från CEIL och FLOOR, ROUND kan gå upp eller ner. Använd CEIL för att tvinga uppåt och FLOOR för att tvinga nedåt.
  • Inte avrundning till tick. ROUND fungerar på heltal och decimaltal. För att avrunda ett orderpris till instrumentets handelsbara tick, använd ROUNDEDUP eller ROUNDEDDOWN.
  • CEIL, avrundar uppåt till närmaste heltal eller decimal.
  • FLOOR, avrundar nedåt 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 parat med avrundning.
  • SGN, tecknet för ett värde.
  • MOD, resten av en division.