D’une manière générale, il n’est pas prêté attention au fait que les lettres soient majuscules ou minuscules. UnExemple est équivalent a uneXEMPLE. Ceci vaut aussi bien pour les mots clef que pour les variables.

Evitez d’être trop créatif pour nommer les variables. Utilisez les caractères alphanumériques classiques, sans espace. Evitez tout caractère qui pourrait être interprété comme un opérateur, tel que + ou -.

Vous pouvez insérer des fonctions a l’intérieur d’autres fonctions, mais vous ne pouvez pas insérer des opérations comme paramètres de fonction. A titre d’exemple, RSI(12+3) déclenchera une alerte. Vous pouvez, néanmoins, définir une variable, puis la passer en paramètre fonction: uneVariable = 12 + 3, RSI(uneVariable).

Il n’est pas obligatoire, mais hautement recommande, de laisser un espace entre les mots clef et/ou les opérateurs. Il est parfois difficile de lever les ambiguïtés, sauf a interpréter les espaces. Le nombre d’espace n’a pas d’importance; plusieurs espaces, ou caractères de tabulation, sont interprétés comme un seul espace.

Tout d’abord, les mots clef incluent les indicateurs classiques tel que RSI(14) ou MACD(12,26,9), etc... Ces instructions retournent une table des valeurs de l’indicateur sur l’ensemble des données disponibles. Pour obtenir une valeur particuliers, stockey la fonction dans une variable comme dummy = RSI(14), puis utilisez l’instruction Var(dummy,1) pour obtenir la valeur de RSI correspondant a hier (0 est aujourd’hui, 1 hier, 2 le jour precedent, etc...)

De plus, les mots clef incluent les opérateurs classiques tels que +, -, /, * ou les comparateurs tels que <, >, ==, !=, &, |. Notez que l’opérateur de définition d’une variable « =«  est diffèrent de l’opérateur de comparaison « ==« . La confusion est aisée.

Enfin, certain mots spéciaux méritent un peu plus d’explication:
  • Controle des flux:
    • if(...test...) then xxx else xxx endIf: Définit un embranchement conditionnel ou les instructions suivant « then » sont exécutées si le test est vrai, et les instructions suivant « else » sont exécutées si test est faux.
    • While(...test...) xxx endWhile: Les opérations, entre « while » et « endWhile », sont exécutées tant que test est vrai. Attention, il est facile de définir une boucle infinie.
    • For(offset,longueur) xxxx endFor: Exécute les opérations un nombre de fois défini par « longueur ». Notez que la fonction « HistoRange » utilisée comme longueur, permet d’effectuer les opérations sur l’ensemble des données ou, plus exactement, sur un ensemble minimum de données nécessaires a l’affichage. « offset » définit le point de départ pour les instructions scalaires du type singleRSI(14,0). A chaque boucle d’exécution, l’offset est automatiquement incrémenté de 1.
  • Opérations Scalaires:
    • decrement(variable,x): Decroit la valeur de la variable de x
    • increment(variable,x): Accroit la valeur de la variable de x
    • SdDev(table): Retourne la valeur de l’écart type pour une table de valeurs
    • Var(table,offset): Retourne une valeur contenue dans une table a l’index « offset ». Pour mémoire, un index zéro représente la valeur la plus récente.
    • Maximum(x,y), minimum(x,y): Retourne une valeur si les deux paramètres sont scalaires, ou une table si l’un des deux paramètres est une table.
    • Accumulate(table,valeur): Ajoute une valeur a la fin d’une table. Si la variable table n’a pas été préalablement définie, elle peut être définie a la première apparition de « accumulate ». C’est l’une des deux manières (avec le mot =) de définir une variable.
  • Opérations sur les Tables:
    • CrossAbove(courbe1,courbe2), CrossBelow(courbe1,courbe2): Retourne une table d’index indiquant les jours ou les deux courbes se croisent. Si l’un des deux paramètres est scalaire, retourne les jours ou une courbe croise un certain niveau.
    • ShiftedLeft(courbe,offset), ShiftedRight(courbe,offset): Décale une courbe, vers le passé ou le futur, d’un nombre de jours défini par « offset ». Si la courbe est décalée vers la gauche, les dernières valeurs sont identiques a la dernière valeur connue. Si la courbe est décalée vers la droite, les dernières valeurs sont ignorées. ShiftedRight(close,1) est, par exemple, le moyen le plus simple d’obtenir une table de toutes les valeurs de clôture N-1.
    • Reverse(table): Retourne une nouvelle table ou la première valeur est la dernière valeur dans la table initiale.
    • Avg(table,param) ou Avg(param): Si un seul paramètre, retourne une moyenne mobile des cours (expAvg retourne une moyenne exponentielle). Si deux paramètres, retourne une moyenne mobile de la courbe définie par le premier paramètre.
  • Fonctions scalaires:
    • Day: Dans une boucle « For », retourne la valeur courante de l’offset
    • Date(index): Retourne une date correspondant a la valeur de l’index dans la table des cours
    • HistoRange: Retourne le nombre de valeurs approprié a l’affichage actuel. Utile dans les boucles « For ».
  • Utilités:
    • LogResult(ident1,ident2,...): Envoie les résultats vers la console. Les paramètres peuvent être des tables, valeurs ou texte
    • NotifyResult ou notifyResult(ident1,ident2,ident3): De zéro a trois paramètres qui définissent ce qui sera affiché. Dans le cas des indicateurs classiques ou écran, il s’agit de courbes. Dans le cas des « triggers », deux tables contenant des index, définissent les signaux achat (premier paramètre) et vente (deuxième paramètre).