Rejoignez-nous
Instructions/probuilder · probacktest · proorder · proscreener

REM

REM starts a comment line in ProBuilder. Together with // and /* */ it lets ProRealTime™ code carry notes that the compiler ignores completely during execution.

Syntaxe

probuilder
REM This is a comment
// This is another way to comment the code
/* This is another way to comment the code
with multiple lines */

Comment ça marche

Tout ce qui suit REM sur la même ligne est ignoré par le compilateur. Le mot-clé existe uniquement à des fins de documentation : expliquer ce qu'un bloc calcule, pourquoi un seuil a été choisi, ou marquer les sections d'un script plus long. Les commentaires n'ont aucun coût à l'exécution car ils sont supprimés avant celle-ci.

ProBuilder prend en charge trois formes de commentaires. REM et // mettent tous deux en commentaire le reste d'une ligne et sont interchangeables. Le / / paire met en commentaire tout ce qui se trouve entre les marqueurs, y compris les sauts de ligne, ce qui convient aux explications plus longues et à la désactivation temporaire de blocs de code pendant le débogage. Les marqueurs de commentaire ne peuvent pas être imbriqués les uns dans les autres, un / / bloc ne redémarre pas si un autre /* y apparaît.

Les commentaires sont valables partout dans le code d'indicateur, de stratégie et de screener. Les conventions courantes comprennent un commentaire d'en-tête décrivant l'objet et les paramètres du script, une courte note au-dessus de tout calcul non évident, et // commentaires en suffixe expliquant des affectations individuelles. Désactiver une ligne en la préfixant par REM ou // est la manière standard de tester des variantes sans supprimer de code.

Comme les noms de variables en ProBuilder sont souvent courts, les commentaires portent une grande part de la charge de rendre un script maintenable. Un script repris des mois plus tard se lit d'abord à travers ses commentaires.

Exemples

Exemple 1, Documenter un calcul (Indicateur)

probuilder
REM Compute the 10-period simple moving average of the high
i1 = average[10](high)
// i1 now holds the SMA value
/*
multi-line comment describing
the rest of the script
*/
RETURN i1 AS "SMA high 10"

Les trois styles de commentaire apparaissent ensemble. Aucun d'eux n'affecte la valeur renvoyée.

Exemple 2, En-tête de stratégie et ligne de test désactivée (ProOrder)

probuilder
REM Trend-following system, hourly timeframe
REM Entries on MA crossover, fixed percentage stop
DEFPARAM CumulateOrders = false

fastMA = average[20](close)
slowMA = average[100](close)

// BUY 2 CONTRACT AT MARKET  <- disabled while testing size 1
IF fastMA crosses over slowMA THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

SET STOP %LOSS 2

REM lines document the system at the top, and a // en préfixe conserve une ligne d'ordre alternative dans le fichier sans l'exécuter.

Exemple 3, Condition de screener annotée (ProScreener)

probuilder
REM Filter: price above its 50-bar average with rising volume
avgPrice = average[50](close)
volUp = volume > volume[1]

SCREENER[close > avgPrice AND volUp] (close AS "Last price")

La ligne REM énonce l'intention du filtre, de sorte que la condition en dessous n'a besoin d'aucune explication supplémentaire.

Erreurs et pièges courants

  • Pas d'imbrication. Les marqueurs de commentaire ne peuvent pas s'imbriquer. Un / à l'intérieur d'un existant / / bloc n'ouvre pas un second bloc, et le premier / termine quand même le commentaire.
  • REM comments the whole rest of the line. Le code placé après REM sur la même ligne est ignoré. REM init a = 5 n'affecte aucune valeur.
  • Commentaires de bloc non fermés. A / sans un correspondant / avale tout le code restant et se manifeste généralement par une erreur de compilation déroutante, loin du marqueur d'ouverture.
  • Les commentaires obsolètes induisent en erreur. Les commentaires ne sont pas vérifiés par rapport au code. Après avoir modifié un calcul, mettez à jour la note au-dessus, un commentaire obsolète est pire que pas de commentaire du tout.
  • IF, bloc conditionnel qui gagne à être accompagné d'un commentaire précisant son intention.
  • FOR, boucle comptée, souvent annotée avec ce que l'itération accumule.
  • RETURN, renvoie la valeur de l'indicateur que les commentaires d'en-tête décrivent.
  • DEFPARAM, réglages d'exécution de la stratégie, habituellement regroupés sous un commentaire d'en-tête.
  • ONCE, initialisation unique, qu'il vaut la peine de signaler par un commentaire.
  • CALL, appelle un autre indicateur, les commentaires doivent indiquer ce que le code appelé renvoie.