Iscriviti ora
Istruzioni/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.

Sintassi

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 */

Come funziona

Tutto ciò che segue REM sulla stessa riga viene ignorato dal compilatore. La parola chiave esiste puramente per la documentazione: spiegare cosa calcola un blocco, perché è stata scelta una soglia, o contrassegnare sezioni di uno script più lungo. I commenti non hanno costo di esecuzione perché vengono rimossi prima dell'esecuzione.

ProBuilder supporta tre forme di commento. REM e // commentano entrambi il resto di una riga e sono interscambiabili. Il / / la coppia commenta tutto ciò che si trova tra i marcatori, incluse le interruzioni di riga, il che è adatto a spiegazioni più lunghe e a disattivare temporaneamente blocchi di codice durante il debug. I marcatori di commento non possono essere annidati l'uno nell'altro, un / / il blocco non riparte se un altro /* appare al suo interno.

I commenti sono validi in qualsiasi punto del codice di indicatori, strategie e screener. Le convenzioni comuni includono un commento di intestazione che descrive lo scopo e i parametri dello script, una breve nota sopra ogni calcolo non ovvio e // commenti in coda che spiegano le singole assegnazioni. Disattivare una riga prefissandola con REM o // è il modo standard per testare varianti senza eliminare codice.

Poiché i nomi delle variabili in ProBuilder sono spesso brevi, i commenti si fanno carico di gran parte del lavoro di rendere uno script manutenibile. Uno script ripreso mesi dopo si legge prima di tutto attraverso i suoi commenti.

Esempi

Esempio 1, Documentare un calcolo (Indicatore)

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"

Tutti e tre gli stili di commento compaiono insieme. Nessuno di essi influisce sul valore restituito.

Esempio 2, Intestazione della strategia e riga di test disattivata (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 // il prefisso mantiene nel file una riga di ordine alternativa senza eseguirla.

Esempio 3, Condizione di screener commentata (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 riga REM dichiara l'intento del filtro, quindi la condizione sottostante non richiede ulteriori spiegazioni.

Errori e insidie comuni

  • Nessun annidamento. I marcatori di commento non possono contenersi a vicenda. Un / dentro un esistente / / blocco non apre un secondo blocco, e il primo / termina comunque il commento.
  • REM comments the whole rest of the line. Il codice posto dopo REM sulla stessa riga viene ignorato. REM init a = 5 non assegna nulla.
  • Commenti di blocco non chiusi. A / senza un corrispondente / inghiotte tutto il codice restante e in genere si manifesta come un errore di compilazione confuso, lontano dal marcatore di apertura.
  • I commenti obsoleti ingannano. I commenti non vengono verificati rispetto al codice. Dopo aver modificato un calcolo, aggiorna la nota sopra di esso, un commento obsoleto è peggio di nessun commento.
  • IF, blocco condizionale che trae vantaggio da un commento che ne dichiari l'intento.
  • FOR, ciclo contato, spesso annotato con ciò che l'iterazione accumula.
  • RETURN, restituisce il valore dell'indicatore descritto dai commenti di intestazione.
  • DEFPARAM, impostazioni di esecuzione della strategia, convenzionalmente raggruppate sotto un commento di intestazione.
  • ONCE, inizializzazione una sola volta, vale la pena segnalarla con un commento.
  • CALL, richiama un altro indicatore, i commenti dovrebbero dichiarare cosa restituisce il codice chiamato.