REM
REM starts a comment line in ProBuilder. Together with // and /* */ it lets ProRealTime™ code carry notes that the compiler ignores completely during execution.
Syntaks
REM This is a comment
// This is another way to comment the code
/* This is another way to comment the code
with multiple lines */Slik fungerer det
Alt som følger etter REM på samme linje blir ignorert av kompilatoren. Nøkkelordet finnes utelukkende for dokumentasjon: å forklare hva en blokk beregner, hvorfor en terskel ble valgt, eller å markere seksjoner i et lengre skript. Kommentarer har ingen kjøretidskostnad fordi de fjernes før kjøring.
ProBuilder støtter tre kommentarformer. REM og // kommenterer begge ut resten av én linje og kan brukes om hverandre. / / paret kommenterer ut alt mellom markørene, inkludert linjeskift, noe som passer til lengre forklaringer og til midlertidig å deaktivere kodeblokker under feilsøking. Kommentarmarkører kan ikke nøstes inni hverandre, en / / blokken starter ikke på nytt hvis en annen /* forekommer i den.
Kommentarer er gyldige overalt i indikator-, strategi- og screenerkode. Vanlige konvensjoner er en innledende kommentar som beskriver skriptets formål og parametere, en kort merknad over enhver beregning som ikke er åpenbar, og // etterfølgende kommentarer som forklarer enkelttilordninger. Å deaktivere en linje ved å prefikse den med REM eller // er standardmåten å teste varianter på uten å slette kode.
Siden variabelnavn i ProBuilder ofte er korte, bærer kommentarene mye av byrden med å gjøre et skript vedlikeholdbart. Et skript som leses igjen måneder senere, leses først gjennom kommentarene.
Eksempler
Eksempel 1, Dokumentere en beregning (Indikator)
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"Alle tre kommentarstilene vises sammen. Ingen av dem påvirker den returnerte verdien.
Eksempel 2, Strategitopptekst og deaktivert testlinje (ProOrder)
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 2REM lines document the system at the top, and a // prefikset beholder en alternativ ordrelinje i filen uten å kjøre den.
Eksempel 3, Kommentert screener-betingelse (ProScreener)
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")REM-linjen angir hensikten med filteret, så betingelsen under trenger ingen ytterligere forklaring.
Vanlige feil og fallgruver
- Ingen nøsting. Kommentarmarkører kan ikke inneholde hverandre. En
/inne i en eksisterende/ /blokken åpner ikke en andre blokk, og den første/avslutter kommentaren uansett. - REM comments the whole rest of the line. Kode som plasseres etter REM på samme linje ignoreres.
REM init a = 5tilordner ingenting. - Uavsluttede blokk-kommentarer. A
/uten et tilsvarende/svelger all gjenstående kode og dukker vanligvis opp som en forvirrende kompileringsfeil langt fra åpningsmarkøren. - Utdaterte kommentarer villeder. Kommentarer kontrolleres ikke mot koden. Etter at du har endret en beregning, oppdater notatet over den, en utdatert kommentar er verre enn ingen.
Relaterte instruksjoner
IF, betinget blokk som har nytte av en kommentar som angir hensikten.FOR, tellende løkke, ofte kommentert med hva iterasjonen akkumulerer.RETURN, returnerer indikatorverdien som toppkommentarene beskriver.DEFPARAM, innstillinger for strategiutførelse, tradisjonelt gruppert under en toppkommentar.ONCE, engangsinitialisering, verdt å markere med en kommentar.CALL, kaller en annen indikator, kommentarer bør angi hva den kalte koden returnerer.