MOD
MOD i ProBuilder returnerer resten av å dele ett tall på et annet, modulo-operasjonen. Infikssyntaks, bruk for sykluser og delelighet, eksempler.
Syntaks
result = a MOD bParametere
| Navn | Type | Beskrivelse |
|---|---|---|
a | tall | Dividenden, verdien som blir delt. |
b | tall | Divisoren. Må ikke være null, siden divisjon med null er udefinert. |
Formel
MOD(a, b) = remainder of a / bFor eksempel 10 MOD 3 er 1, fordi 10 delt på 3 er 3 med 1 i rest. Når a er et eksakt multiplum av b, er resten 0.
Slik fungerer det
MOD skrives mellom sine to operander, som a MOD b, heller enn som MOD(a, b). Den returnerer det som er til overs etter heltallsdivisjon. Det gjør den til førstevalget for to oppgaver: å teste delelighet, der a MOD b = 0 betyr a deler jevnt på b, og sykling gjennom et repeterende område, der barCount MOD n teller 0, 1, ... n-1 og går tilbake til 0.
Divisoren må ikke være null. En MOD 0 er udefinert og gir en feil, så sikre b når den kan nå null.
Eksempler
Eksempel 1, Rest av en divisjon (Indikator)
// Remainder when 10 is divided by 3
remainder = 10 MOD 3
RETURN remainder AS "10 MOD 3"Resultatet er 1, resten etter å ha delt 10 på 3. Å erstatte konstantene med variabler generaliserer beregningen.
Eksempel 2, Flagg for hver 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 går gjennom 0, 1, 2 og tilbake, så betingelsen utløses én gang hver tredje bar.
Eksempel 3, Trade bare på like 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 testen deler barene i like og odde, slik at strategien bare handler på én av de to.
Vanlige feil og fallgruver
- Divisoren kan ikke være null.
a MOD 0er udefinert og gir en feil. Sikre divisoren når den kan bli null. - Infiksoperator, ikke en funksjon. Skriv
a MOD b, ikkeMOD(a, b). Formen med funksjonskall er en syntaksfeil. - Resultatets fortegn følger dividenden. For negative dividender er resten ikke alltid den du forventer. Pakk inn med
ABSførst hvis du trenger en ikke-negativ syklusposisjon.
Relaterte instruksjoner
FLOOR, runder ned til et heltall, beslektet med kvotienten bakMOD.CEIL, runder opp til et heltall.ROUND, runder av til nærmeste heltall eller desimal.ABS, absoluttverdi, nyttig for å normalisere enMODresultatet til ikke-negativt.SGN, fortegnet til en verdi.MAX, den største av to verdier.MIN, den minste av to verdier.