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
result = a MOD bParametri
| Nome | Tipo | Descrizione |
|---|---|---|
a | numero | Il dividendo, il valore che viene diviso. |
b | numero | Il divisore. Non deve essere zero, poiché la divisione per zero non è definita. |
Formula
MOD(a, b) = remainder of a / bPer 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)
// 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)
// 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)
// 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
ENDIFIl 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 0non è definito e genera un errore. Proteggi il divisore quando può raggiungere lo zero. - Operatore infisso, non una funzione. Scrivi
a MOD b, nonMOD(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
ABSprima, se ti serve una posizione di ciclo non negativa.
Istruzioni correlate
FLOOR, arrotonda per difetto a un numero intero, correlato al quoziente alla base diMOD.CEIL, arrotonda per eccesso a un intero.ROUND, arrotonda all'intero o al decimale più vicino.ABS, valore assoluto, utile per normalizzare unMODil risultato a non negativo.SGN, segno di un valore.MAX, il maggiore di due valori.MIN, il minore di due valori.