NextBarOpen
NextBarOpen er en utgått modifikator i ProBacktest og ProOrder som utsatte ordrer til åpningen av neste bar, noe som nå er standardoppførselen for alle markedsordrer.
Syntaks
AT MARKET NextBarOpenSlik fungerer det
I tidlige versjoner av plattformen, NextBarOpen ble lagt til en markedsordre for å si eksplisitt at ordren skulle utføres til åpningsprisen på den følgende baren og ikke til gjeldende pris. Hensikten var å modellere realistisk utførelse: et signal beregnet på en ferdig bar kan først handles når den neste baren starter.
Den utførelsesmodellen ble senere den eneste. Strategikode evalueres én gang per bar, ved lukk, og enhver markedsordre som genereres under den evalueringen sendes umiddelbart etterpå og fylles ved åpningen av neste bar. Oppførselen NextBarOpen pleide å be om, er nå den ubetingede standarden, noe som gjør modifikatoren overflødig.
Den offisielle posisjonen er at instruksjonen ikke lenger er gyldig og ikke tjener noe formål. Eksisterende kode som bærer modifikatoren dokumenterer en hensikt motoren allerede garanterer, og ny kode bør aldri inkludere den. Når nøkkelordet opptrer i eldre strategier funnet i arkiver eller på forum, kan det slettes uten å endre strategiens oppførsel under den gjeldende utførelsesmodellen.
NextBarOpen må ikke forveksles med TomorrowOpen, som er en egen instruksjon knyttet til ordretiming på dagsbarer og fortsatt er et separat nøkkelord.
Eksempler
Eksempel 1, Eldre inngang med modifikatoren (ProBacktest)
// legacy code: NextBarOpen is redundant under the current engine
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET NextBarOpen
ENDIFOrdren utføres ved åpningen av neste bar med eller uten modifikatoren. Dette er formen man finner i eldre publiserte strategier.
Eksempel 2, Eldre short-inngang (ProOrder)
short = close < Average[100](close)
// older strategies attached NextBarOpen to short entries as well
IF NOT ShortOnMarket AND short THEN
SELLSHORT 1 CONTRACT AT MARKET NextBarOpen
ENDIFSamme mønster på short-siden. Å fjerne det avsluttende nøkkelordet gjør utførelsen identisk, shorten åpnes til neste bars åpningskurs uansett.
Eksempel 3, Migrering av gammel kode (ProBacktest)
// before: BUY 2 CONTRACTS AT MARKET NextBarOpen
// after, same behavior:
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET
ENDIFDen moderniserte formen. Å slette NextBarOpen fra en gammel strategi er ren opprydding, ingen kompensasjon andre steder i koden er nødvendig.
Vanlige feil og fallgruver
- Å forvente en forskjell i timing. Å legge til eller fjerne
NextBarOpenendrer ingenting. Alle markedsordrer som genereres ved en barlukking, utføres ved neste baråpning. Kodesammenligninger som tilskriver modifikatoren ulike resultater, ser på feil variabel. - Mulig avvisning av gjeldende kompilatorer. Instruksjonen er dokumentert som ikke lenger gyldig. Avhengig av plattformversjonen kan kode som inneholder den mislykkes i å kompilere, så den trygge migreringen er å slette nøkkelordet i stedet for å beholde det av nostalgi.
- Forveksling med
TomorrowOpen. Navnene ser beslektede ut, men instruksjonene kan ikke byttes om.TomorrowOpengjelder ordreplassering på dagsbarer og er fortsatt et aktivt nøkkelord,NextBarOpener en død modifikator. - Å anta at utførelse på samme bar finnes. Å fjerne modifikatoren aktiverer ikke utførelse på samme bar. Det finnes ingen ordretype som utføres ved stengningen av signalbaren, modellen med åpning på neste bar er iboende i motoren.
Relaterte instruksjoner
TomorrowOpen, instruksjon for ordretiming på dagsbarer.MARKET, umiddelbar utførelse til gjeldende markedspris.BUY, åpner eller øker en long-posisjon.SELL, lukker hele eller deler av en long-posisjon.SELLSHORT, åpner eller øker en short-posisjon.EXITSHORT, lukker hele eller deler av en short-posisjon.LIMIT, ventende ordre som fylles til en fastsatt pris eller bedre.STOP, ventende ordre som utløses når prisen når et nivå.