Bli medlem i dag
Instruksjoner/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.

Syntaks

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

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)

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"

Alle tre kommentarstilene vises sammen. Ingen av dem påvirker den returnerte verdien.

Eksempel 2, Strategitopptekst og deaktivert testlinje (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 // prefikset beholder en alternativ ordrelinje i filen uten å kjøre den.

Eksempel 3, Kommentert screener-betingelse (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")

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 = 5 tilordner 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.
  • 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.