Jetzt beitreten
Mathematisch/probuilder · probacktest · proorder · proscreener

MOD

MOD in ProBuilder gibt den Rest der Division einer Zahl durch eine andere zurück, die Modulo-Operation. Infix-Syntax, Verwendung für Zyklen und Teilbarkeit, Beispiele.

Syntax

probuilder
result = a MOD b

Parameter

NameTypBeschreibung
aZahlDer Dividend, der zu teilende Wert.
bZahlDer Divisor. Darf nicht Null sein, da die Division durch Null undefiniert ist.

Formel

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

Zum Beispiel 10 MOD 3 ist 1, weil 10 geteilt durch 3 gleich 3 ist mit Rest 1. Wenn a ist ein exaktes Vielfaches von b, ist der Rest 0.

So funktioniert es

MOD wird zwischen seine beiden Operanden geschrieben, etwa a MOD b, anstatt als MOD(a, b). Sie gibt zurück, was nach der Ganzzahldivision übrig bleibt. Das macht sie zum Standardwerkzeug für zwei Aufgaben: Teilbarkeit prüfen, wobei a MOD b = 0 bedeutet a ist ohne Rest teilbar durch b, und das Durchlaufen eines sich wiederholenden Bereichs, wobei barCount MOD n zählt 0, 1, ... n-1 und springt zurück auf 0.

Der Divisor darf nicht null sein. Ein MOD 0 ist undefiniert und löst einen Fehler aus, also prüfen Sie b wann immer es null erreichen kann.

Beispiele

Beispiel 1, Rest einer Division (Indikator)

probuilder
// Remainder when 10 is divided by 3
remainder = 10 MOD 3
RETURN remainder AS "10 MOD 3"

Das Ergebnis ist 1, der Rest nach der Division von 10 durch 3. Das Ersetzen der Konstanten durch Variablen verallgemeinert die Berechnung.

Beispiel 2, Markierung jeder dritten 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 zählt zyklisch 0, 1, 2 und zurück, daher löst die Bedingung einmal alle drei Bars aus.

Beispiel 3, Nur auf geraden Bars handeln (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

Der MOD 2 Test teilt Bars in gerade und ungerade, sodass die Strategie nur auf einer der beiden handelt.

Häufige Fehler und Stolperfallen

  • Der Divisor darf nicht Null sein. a MOD 0 ist undefiniert und löst einen Fehler aus. Sichern Sie den Divisor ab, wenn er null erreichen kann.
  • Infix-Operator, keine Funktion. Schreiben Sie a MOD b, nicht MOD(a, b). Die Form als Funktionsaufruf ist ein Syntaxfehler.
  • Das Vorzeichen des Ergebnisses folgt dem Dividenden. Bei negativen Dividenden ist der Rest nicht immer der erwartete. Umschließen mit ABS zuerst, wenn Sie eine nicht negative Zyklusposition benötigen.
  • FLOOR, rundet auf eine ganze Zahl ab, verwandt mit dem Quotienten hinter MOD.
  • CEIL, rundet auf eine ganze Zahl auf.
  • ROUND, rundet auf die nächste Ganzzahl oder Dezimalstelle.
  • ABS, Absolutwert, nützlich zum Normalisieren eines MOD Ergebnis auf nicht negativ.
  • SGN, Vorzeichen eines Werts.
  • MAX, größerer von zwei Werten.
  • MIN, kleinerer von zwei Werten.