PRELOADBARS
PRELOADBARS er en DEFPARAM-parameter som angir hvor mange historiske barer ProBacktest og ProOrder laster inn før en strategi starter, slik at indikatorene starter med korrekte verdier.
Syntaks
DEFPARAM PRELOADBARS = number_of_barsParametere
| Navn | Type | Standard | Beskrivelse |
|---|---|---|---|
number_of_bars | heltall | plattformstandard | Antall historiske barer som lastes inn før den første baren strategien utføres på. Tilpass størrelsen til det lengste tilbakeblikket som brukes av noen indikator i koden. |
Slik fungerer det
PRELOADBARS er en av parameterne som DEFPARAM-instruksjonen godtar, sammen med innstillinger som CUMULATEORDERS, FLATAFTER, FLATBEFORE, og NOCASHUPDATE. Som alle DEFPARAM-linjer må den stå øverst i koden, før alle andre instruksjoner, og den evalueres én gang ved oppstart i stedet for på hver bar.
Formålet er oppvarming av indikatorer. Et glidende gjennomsnitt over 100 barer trenger 100 tidligere lukk før det gir en stabil verdi. Uten nok forhåndslastet historikk beregnes indikatorverdiene på de første barene i en backtest eller en live kjøring fra en avkortet serie, og de kan avvike fra verdiene som vises i diagrammet og utløse falske signaler. Forhåndslasting av n barer gir hver indikator opptil n barer med kontekst før den første handelsbeslutningen, uten å generere ordrer på de historiske barene.
Å bestemme verdien er en avveining. Den bør med god margin overstige det lengste tilbakeblikket i koden, inkludert nestede tilbakeblikk som et gjennomsnitt av et gjennomsnitt, men for store forhåndslastinger øker minnebruk og oppstartstid. En vanlig regel er den lengste perioden pluss en margin på 25 til 50 prosent.
Eksempler
Eksempel 1, Varme opp et 100-bars glidende gjennomsnitt (ProOrder)
// Preload 150 bars so the 100 bar average is valid from the first decision
DEFPARAM PRELOADBARS = 150
myMA = average[100](close)
IF NOT ShortOnMarket AND close[1] < myMA[1] THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
SET STOP %TRAILING 2100-bars gjennomsnittet krever 100 sluttkurser, så å forhåndslaste 150 barer garanterer korrekte verdier fra strategiens første utførte bar. Dette er referanseeksempelet fra kildedokumentasjonen med omskrevne kommentarer.
Eksempel 2, Breakout på en 200-bars kanal (ProBacktest)
// Preload enough history for the 200 bar channel
DEFPARAM PRELOADBARS = 250
upperBand = highest[200](high[1])
IF NOT onmarket AND close > upperBand THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
SET STOP %TRAILING 1.5Uten forhåndslastingen ville 200-bars høyeste blitt beregnet fra færre barer i starten av testen, slik at tidlige breakout-signaler utløses på en kunstig lav kanal.
Eksempel 3, Kombinere flere DEFPARAM-innstillinger (ProOrder)
// All DEFPARAM lines must precede any other instruction
DEFPARAM CUMULATEORDERS = FALSE
DEFPARAM PRELOADBARS = 500
slowMA = average[200](close)
fastMA = average[50](close)
IF NOT onmarket AND fastMA CROSSES OVER slowMA THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
IF longonmarket AND fastMA CROSSES UNDER slowMA THEN
SELL AT MARKET
ENDIFPRELOADBARS står sammen med de andre DEFPARAM-erklæringene øverst i filen. Forhåndslastingen på 500 barer dekker 200-bars gjennomsnittet med god margin.
Vanlige feil og fallgruver
- DEFPARAM placement. Alle DEFPARAM-linjer, inkludert PRELOADBARS, må komme før alle andre setninger. En DEFPARAM etter den første vanlige instruksjonen kompilerer ikke.
- Forhåndslasting mindre enn tilbakeblikket. Hvis verdien er lavere enn den lengste indikatorperioden, beregnes tidlige signaler fra avkuttede data og kan avvike fra verdiene i diagrammet. Backtest-innganger nær starten av testen er det vanlige symptomet.
- Skjulte nestede tilbakeblikk. En
average[50]av enaverage[100]trenger i praksis rundt 150 barer. Dimensjoner forhåndslastingen etter den samlede dybden, ikke bare den største enkeltperioden. - Begrenset av tilgjengelig historikk. Plattformen kan bare forhåndslaste barer som finnes i datakilden for den valgte tidsrammen. Å be om mer enn det som er tilgjengelig gir færre forhåndslastede barer, så svært lange tilbakeblikk på høye tidsrammer kan fortsatt starte delvis oppvarmet.
Relaterte instruksjoner
DEFPARAM, instruksjonen som PRELOADBARS er en parameter til.CumulateOrders, DEFPARAM-parameter som styrer ordreakkumulering.FLATAFTER, DEFPARAM-parameter som tvinger flat posisjon etter et klokkeslett.FLATBEFORE, DEFPARAM-parameter som blokkerer posisjoner før et klokkeslett.NOCASHUPDATE, DEFPARAM-parameter som fryser kapital mellom handler.Average, glidende gjennomsnitt hvis tilbakeblikk bestemmer størrelsen på forhåndslastingen.BarIndex, teller barer siden starten av de innlastede dataene.ONCE, initialiserer en variabel én gang ved oppstart.