MOD
MOD i ProBuilder returnerar resten vid division av ett tal med ett annat, modulooperationen. Infixsyntax, användning för cykler och delbarhet, exempel.
Syntax
result = a MOD bParametrar
| Namn | Typ | Beskrivning |
|---|---|---|
a | tal | Dividenden, det värde som divideras. |
b | tal | Divisorn. Får inte vara noll, eftersom division med noll är odefinierad. |
Formel
MOD(a, b) = remainder of a / bTill exempel 10 MOD 3 är 1, eftersom 10 delat med 3 är 3 med resten 1. När a är en exakt multipel av b, är resten 0.
Så fungerar det
MOD skrivs mellan sina två operander, som a MOD b, snarare än som MOD(a, b). Den returnerar vad som återstår efter heltalsdivision. Det gör den till förstahandsvalet för två uppgifter: att testa delbarhet, där a MOD b = 0 betyder a är jämnt delbart med b, och cykling genom ett repeterande intervall, där barCount MOD n räknar 0, 1, ... n-1 och går tillbaka till 0.
Divisorn får inte vara noll. En MOD 0 är odefinierad och ger ett fel, så gardera b närhelst det kan bli noll.
Exempel
Exempel 1, Rest vid en division (Indikator)
// Remainder when 10 is divided by 3
remainder = 10 MOD 3
RETURN remainder AS "10 MOD 3"Resultatet är 1, det som återstår efter division av 10 med 3. Att byta ut konstanterna mot variabler generaliserar beräkningen.
Exempel 2, Flagga var tredje bar (ProScreener)
// Flag instruments on a repeating three-bar cycle
cyclePos = BarIndex MOD 3
SCREENER[cyclePos = 0](cyclePos AS "Cycle position")BarIndex MOD 3 växlar genom 0, 1, 2 och tillbaka, så villkoret utlöses en gång var tredje bar.
Exempel 3, Handla endast på jämna barer (ProOrder)
// Restrict entries to every second bar using MOD
phase = BarIndex MOD 2
IF phase = 0 AND NOT LongOnMarket AND close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFDen MOD 2 testet delar barer i jämna och ojämna, så att strategin bara agerar på en av de två.
Vanliga fel och fallgropar
- Divisorn kan inte vara noll.
a MOD 0är odefinierat och ger ett fel. Skydda nämnaren när den kan bli noll. - Infixoperator, inte en funktion. Skriv
a MOD b, inteMOD(a, b). Formen med funktionsanrop är ett syntaxfel. - Resultatets tecken följer dividenden. För negativa täljare är resten inte alltid vad man förväntar sig. Omslut med
ABSförst om du behöver en icke-negativ cykelposition.
Relaterade instruktioner
FLOOR, avrundar nedåt till ett heltal, relaterat till kvoten bakomMOD.CEIL, avrundar uppåt till ett heltal.ROUND, avrundar till närmaste heltal eller decimal.ABS, absolutvärde, användbart för att normalisera enMODresultatet till icke-negativt.SGN, tecknet för ett värde.MAX, det största av två värden.MIN, det minsta av två värden.