MOD
MOD dans ProBuilder renvoie le reste de la division d'un nombre par un autre, l'opération modulo. Syntaxe infixe, usage pour les cycles et la divisibilité, exemples.
Syntaxe
result = a MOD bParamètres
| Nom | Type | Description |
|---|---|---|
a | nombre | Le dividende, la valeur qui est divisée. |
b | nombre | Le diviseur. Il ne doit pas être zéro, car la division par zéro n'est pas définie. |
Formule
MOD(a, b) = remainder of a / bPar exemple 10 MOD 3 vaut 1, car 10 divisé par 3 donne 3 avec un reste de 1. Lorsque a est un multiple exact de b, le reste est 0.
Comment ça marche
MOD s'écrit entre ses deux opérandes, comme a MOD b, plutôt que comme MOD(a, b). Il renvoie le reste de la division entière. Cela en fait l'outil de référence pour deux tâches : tester la divisibilité, où a MOD b = 0 signifie a se divise exactement par b, et le parcours cyclique d'une plage répétée, où barCount MOD n compte 0, 1, ... n-1 puis revient à 0.
Le diviseur ne doit pas être nul. Un MOD 0 n'est pas défini et génère une erreur, donc protégez b dès qu'elle peut atteindre zéro.
Exemples
Exemple 1, Reste d'une division (Indicateur)
// Remainder when 10 is divided by 3
remainder = 10 MOD 3
RETURN remainder AS "10 MOD 3"Le résultat est 1, le reste après avoir divisé 10 par 3. Remplacer les constantes par des variables généralise le calcul.
Exemple 2, Marqueur un bar sur trois (ProScreener)
// Flag instruments on a repeating three-bar cycle
cyclePos = BarIndex MOD 3
SCREENER[cyclePos = 0](cyclePos AS "Cycle position")BarIndex MOD 3 parcourt 0, 1, 2 puis recommence, de sorte que la condition se déclenche une fois toutes les trois bars.
Exemple 3, Trader uniquement sur les bars pairs (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
ENDIFLe MOD 2 répartit les bars en paires et impaires, ce qui permet à la stratégie de n'agir que sur l'une des deux.
Erreurs et pièges courants
- Le diviseur ne peut pas être zéro.
a MOD 0n'est pas défini et génère une erreur. Protégez le diviseur lorsqu'il peut atteindre zéro. - Opérateur infixe, pas une fonction. Écrire
a MOD b, pasMOD(a, b). La forme en appel de fonction est une erreur de syntaxe. - Le signe du résultat suit celui du dividende. Pour les dividendes négatifs, le reste n'est pas toujours celui attendu. Encapsulez avec
ABSd'abord si vous avez besoin d'une position de cycle non négative.
Instructions liées
FLOOR, arrondit à l'entier inférieur, lié au quotient derrièreMOD.CEIL, arrondit à l'entier supérieur.ROUND, arrondit à l'entier ou à la décimale la plus proche.ABS, valeur absolue, utile pour normaliser unMODrésultat aux valeurs non négatives.SGN, signe d'une valeur.MAX, la plus grande de deux valeurs.MIN, la plus petite de deux valeurs.