MOD
MOD in ProBuilder geeft de rest terug van de deling van het ene getal door het andere, de modulo-operatie. Infixsyntaxis, gebruik voor cycli en deelbaarheid, voorbeelden.
Syntaxis
result = a MOD bParameters
| Naam | Type | Beschrijving |
|---|---|---|
a | getal | Het deeltal, de waarde die gedeeld wordt. |
b | getal | De deler. Mag niet nul zijn, omdat delen door nul niet gedefinieerd is. |
Formule
MOD(a, b) = remainder of a / bBijvoorbeeld 10 MOD 3 is 1, omdat 10 gedeeld door 3 gelijk is aan 3 met een rest van 1. Wanneer a is een exact veelvoud van b, is de rest 0.
Hoe het werkt
MOD wordt tussen zijn twee operanden geschreven, zoals a MOD b, in plaats van als MOD(a, b). Het geeft terug wat overblijft na een gehele deling. Daarmee is het het gereedschap bij uitstek voor twee taken: deelbaarheid testen, waarbij a MOD b = 0 betekent a is deelbaar door b, en het doorlopen van een herhalend bereik, waarbij barCount MOD n telt 0, 1, ... n-1 en begint weer bij 0.
De deler mag niet nul zijn. Een MOD 0 is niet gedefinieerd en geeft een fout, dus bescherm b wanneer die nul kan bereiken.
Voorbeelden
Voorbeeld 1, Rest van een deling (Indicator)
// Remainder when 10 is divided by 3
remainder = 10 MOD 3
RETURN remainder AS "10 MOD 3"Het resultaat is 1, wat overblijft na het delen van 10 door 3. Door de constanten door variabelen te vervangen wordt de berekening algemener.
Voorbeeld 2, Vlag voor elke derde bar (ProScreener)
// Flag instruments on a repeating three-bar cycle
cyclePos = BarIndex MOD 3
SCREENER[cyclePos = 0](cyclePos AS "Cycle position")BarIndex MOD 3 doorloopt 0, 1, 2 en weer terug, dus de voorwaarde gaat één keer per drie bars af.
Voorbeeld 3, Alleen traden op even bars (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
ENDIFDe MOD 2 test splitst bars in even en oneven, zodat de strategie maar op één van de twee handelt.
Veelvoorkomende fouten en valkuilen
- De deler mag niet nul zijn.
a MOD 0is niet gedefinieerd en veroorzaakt een fout. Bescherm de deler wanneer die nul kan worden. - Infixoperator, geen functie. Schrijf
a MOD b, nietMOD(a, b). De vorm met functieaanroep is een syntaxisfout. - Het teken van het resultaat volgt het deeltal. Bij negatieve deeltallen is de rest niet altijd wat je verwacht. Verpak met
ABSeerst als je een niet-negatieve cycluspositie nodig hebt.
Gerelateerde instructies
FLOOR, rondt naar beneden af op een geheel getal, verwant aan het quotiënt achterMOD.CEIL, rondt naar boven af tot een geheel getal.ROUND, rondt af op het dichtstbijzijnde gehele of decimale getal.ABS, absolute waarde, nuttig om eenMODresultaat naar niet-negatief.SGN, teken van een waarde.MAX, de grootste van twee waarden.MIN, de kleinste van twee waarden.