Iscriviti ora
Matematica/probuilder · probacktest · proorder · proscreener

MOD

MOD in ProBuilder restituisce il resto della divisione di un numero per un altro, l'operazione di modulo. Sintassi infissa, uso per cicli e divisibilità, esempi.

Sintassi

probuilder
result = a MOD b

Parametri

NomeTipoDescrizione
anumeroIl dividendo, il valore che viene diviso.
bnumeroIl divisore. Non deve essere zero, poiché la divisione per zero non è definita.

Formula

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

Per esempio 10 MOD 3 è 1, perché 10 diviso 3 fa 3 con resto 1. Quando a è un multiplo esatto di b, il resto è 0.

Come funziona

MOD si scrive tra i suoi due operandi, come a MOD b, anziché come MOD(a, b). Restituisce ciò che resta dopo la divisione intera. Questo lo rende lo strumento di riferimento per due compiti: verificare la divisibilità, dove a MOD b = 0 significa a è divisibile esattamente per b, e ciclare attraverso un intervallo ripetuto, dove barCount MOD n conta 0, 1, ... n-1 e torna a 0.

Il divisore non deve essere zero. Un MOD 0 non è definito e genera un errore, quindi proteggi b ogni volta che può raggiungere zero.

Esempi

Esempio 1, Resto di una divisione (Indicatore)

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

Il risultato è 1, ciò che resta dopo aver diviso 10 per 3. Sostituire le costanti con variabili generalizza il calcolo.

Esempio 2, Segnalazione di ogni terzo 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 cicla tra 0, 1, 2 e ricomincia, quindi la condizione scatta una volta ogni tre bar.

Esempio 3, Operare solo sui bar pari (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

Il MOD 2 il test divide i bar in pari e dispari, permettendo alla strategia di agire su uno solo dei due.

Errori e insidie comuni

  • Il divisore non può essere zero. a MOD 0 non è definito e genera un errore. Proteggi il divisore quando può raggiungere lo zero.
  • Operatore infisso, non una funzione. Scrivi a MOD b, non MOD(a, b). La forma con chiamata di funzione è un errore di sintassi.
  • Il segno del risultato segue il dividendo. Per dividendi negativi il resto non è sempre quello che ti aspetti. Racchiudi con ABS prima, se ti serve una posizione di ciclo non negativa.
  • FLOOR, arrotonda per difetto a un numero intero, correlato al quoziente alla base di MOD.
  • CEIL, arrotonda per eccesso a un intero.
  • ROUND, arrotonda all'intero o al decimale più vicino.
  • ABS, valore assoluto, utile per normalizzare un MOD il risultato a non negativo.
  • SGN, segno di un valore.
  • MAX, il maggiore di due valori.
  • MIN, il minore di due valori.