DEFPARAM
DEFPARAM sets execution parameters for a ProRealTime™ strategy, such as CumulateOrders, FlatBefore, and FlatAfter, and must appear at the top of the code.
Syntaks
DEFPARAM ParameterName = ValueParametere
| Navn | Type | Standard | Beskrivelse |
|---|---|---|---|
| CumulateOrders | boolsk | true | Når true legger nye signaler til den åpne posisjonen. Når false er bare én posisjon åpen om gangen, og et nytt signal erstatter den gjeldende. |
| FlatBefore | tidspunkt (HHMMSS) | ingen | Tidspunkt før hvilket strategien holder seg flat: posisjoner lukkes og ingen nye ordrer legges inn før dette tidspunktet. |
| FlatAfter | tidspunkt (HHMMSS) | ingen | Tidspunkt etter hvilket strategien går flat: åpne posisjoner lukkes og ingen nye posisjoner åpnes resten av sesjonen. |
| PreLoadBars | heltall | 200 | Antall historiske barer som lastes før starten slik at indikatorene har data fra den første evaluerte baren. |
| NoCashUpdate | boolsk | false | Når true endrer realiserte gevinster og tap ikke kapitalen som brukes til position size, som forblir på sin opprinnelige verdi. |
Slik fungerer det
DEFPARAM lines are directives, not per-bar instructions. They are read when the strategy starts and fix its execution environment for the whole run. Place them at the top of the code, before any variable assignments or trading logic, one parameter per line.
CumulateOrders styrer hva et gjentatt inngangssignal betyr. Med standardverdien true stabler hvert signal en ny ordre oppå posisjonen. Å sette den til false tvinger gjennom én enkelt åpen posisjon, som er oppførselen de fleste strategier med én inngang forventer.
FlatBefore og FlatAfter begrenser strategien til et handelsvindu inne i sesjonen. Begge tar et tidspunkt i HHMMSS-format, tolket i den lokale tidssonen til instrumentets børs. PreLoadBars og NoCashUpdate justerer selve simuleringen: hvor mye historikk indikatorene kan se ved starten, og om position size vokser sammen med resultatene.
Eksempler
Eksempel 1, Sesjonsvindu med enkeltposisjoner (ProOrder)
DEFPARAM CumulateOrders = false // one position at a time
DEFPARAM FlatBefore = 090000 // stay flat before 9:00 AM
DEFPARAM FlatAfter = 173000 // go flat after 5:30 PMDenne headeren holder strategien flat utenfor 9:00 til 17:30 børstid, og erstatter posisjoner ved hvert nye signal i stedet for å akkumulere dem.
Eksempel 2, Forhåndslastet historikk for langsomme indikatorer (ProBacktest)
DEFPARAM PreLoadBars = 300 // enough history for the 200-bar average
DEFPARAM NoCashUpdate = true // size positions on initial capital only
ma = Average[200](close)
IF close CROSSES OVER ma AND NOT onmarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF close CROSSES UNDER ma THEN
SELL AT MARKET
ENDIFForhåndslasting av 300 barer betyr at gjennomsnittet over 200 perioder er gyldig fra den første testede baren, og NoCashUpdate holder størrelsen i backtesten konstant uansett akkumulert gevinst eller tap.
Eksempel 3, Pyramidering med akkumulerte ordrer (ProOrder)
DEFPARAM CumulateOrders = true // allow entries to stack
IF close CROSSES OVER Average[20](close) AND countofposition < 3 THEN
// add one contract per signal, up to three
BUY 1 CONTRACT AT MARKET
ENDIF
IF close CROSSES UNDER Average[50](close) THEN
SELL AT MARKET
ENDIFMed CumulateOrders aktivert legger hver nye krysning til en kontrakt til posisjonsgrensen er nådd, og utgangen lukker hele stabelen på én gang.
Vanlige feil og fallgruver
- DEFPARAM below other code. Direktivet må komme før strategilogikken. En DEFPARAM som plasseres etter kjørbare setninger avvises ved kompilering.
- Å glemme at CumulateOrders har true som standard. En strategi som gir signal på hver bar i en trend vil fortsette å legge til posisjoner med mindre CumulateOrders eksplisitt settes til false. Uventet store posisjoner i en backtest kan vanligvis spores tilbake til denne standardverdien.
- Feil tidsformat. FlatBefore og FlatAfter forventer HHMMSS som et rent tall, så 9:00 AM er 090000 og 5:30 PM er 173000. Verdier leses i børsens lokale tidssone, ikke maskinens, noe som har betydning når man handler utenlandske markeder.
- For få forhåndslastede barer. Hvis PreLoadBars er mindre enn den lengste indikatorhistorikken, beregner tidlige barer indikatorer på delvise data og kan gi signaler som avviker fra diagrammet. Sett den høyere enn den største perioden som brukes i koden.
Relaterte instruksjoner
CumulateOrders, parameteren for ordreakkumulering i detalj.FLATBEFORE, begrensningen for sesjonsstart i detalj.FLATAFTER, begrensningen for sesjonsslutt i detalj.PRELOADBARS, parameteren for forhåndslasting av historikk i detalj.NOCASHUPDATE, parameteren for kontanthåndtering i detalj.ONCE, engangsinitialisering av variabler inne i skriptkroppen.