Word nu lid
Wiskundig/probuilder · probacktest · proorder · proscreener

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

probuilder
result = a MOD b

Parameters

NaamTypeBeschrijving
agetalHet deeltal, de waarde die gedeeld wordt.
bgetalDe deler. Mag niet nul zijn, omdat delen door nul niet gedefinieerd is.

Formule

code
MOD(a, b) = remainder of a / b

Bijvoorbeeld 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)

probuilder
// 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)

probuilder
// 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)

probuilder
// 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
ENDIF

De 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 0 is niet gedefinieerd en veroorzaakt een fout. Bescherm de deler wanneer die nul kan worden.
  • Infixoperator, geen functie. Schrijf a MOD b, niet MOD(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 ABS eerst als je een niet-negatieve cycluspositie nodig hebt.
  • FLOOR, rondt naar beneden af op een geheel getal, verwant aan het quotiënt achter MOD.
  • CEIL, rondt naar boven af tot een geheel getal.
  • ROUND, rondt af op het dichtstbijzijnde gehele of decimale getal.
  • ABS, absolute waarde, nuttig om een MOD resultaat naar niet-negatief.
  • SGN, teken van een waarde.
  • MAX, de grootste van twee waarden.
  • MIN, de kleinste van twee waarden.