NextBarOpen
NextBarOpen är en utfasad modifierare i ProBacktest och ProOrder som fördröjde order till nästa bars öppning, vilket nu är standardbeteendet för varje marknadsorder.
Syntax
AT MARKET NextBarOpenSå fungerar det
I tidiga versioner av plattformen, NextBarOpen lades till på en marknadsorder för att uttryckligen ange att ordern skulle utföras till öppningspriset på nästa bar i stället för till det aktuella priset. Avsikten var att modellera realistisk exekvering: en signal som beräknas på en färdig bar kan först handlas när nästa bar börjar.
Den exekveringsmodellen blev senare den enda. Strategikod utvärderas en gång per bar, vid stängning, och varje marknadsorder som genereras under den utvärderingen skickas omedelbart därefter och fylls vid nästa bars öppning. Beteendet NextBarOpen tidigare begärde är nu villkorslös standard, vilket gör modifieraren överflödig.
Den officiella hållningen är att instruktionen inte längre är giltig och inte tjänar något syfte. Befintlig kod som bär modifieraren dokumenterar en avsikt som motorn redan garanterar, och ny kod bör aldrig innehålla den. När nyckelordet förekommer i äldre strategier som hittas i arkiv eller forum kan det tas bort utan att strategins beteende ändras under den nuvarande exekveringsmodellen.
NextBarOpen ska inte förväxlas med TomorrowOpen, som är en egen instruktion kopplad till ordertiming på dagsbarer och förblir ett separat nyckelord.
Exempel
Exempel 1, Äldre entry med modifieraren (ProBacktest)
// legacy code: NextBarOpen is redundant under the current engine
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET NextBarOpen
ENDIFOrdern fylls vid nästa bars öppning med eller utan modifieraren. Detta är den form som förekommer i äldre publicerade strategier.
Exempel 2, Äldre short-entry (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
ENDIFSamma mönster på short-sidan. Att ta bort det avslutande nyckelordet lämnar exekveringen identisk, shorten öppnas till nästa bars öppningspris i båda fallen.
Exempel 3, Migrera gammal kod (ProBacktest)
// before: BUY 2 CONTRACTS AT MARKET NextBarOpen
// after, same behavior:
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET
ENDIFDen moderniserade formen. Att ta bort NextBarOpen från en gammal strategi är en ren upprensning, ingen kompensation någon annanstans i koden behövs.
Vanliga fel och fallgropar
- Att förvänta sig en skillnad i timing. Att lägga till eller ta bort
NextBarOpenändrar ingenting. Alla marknadsordrar som genereras vid en bars stängning exekveras vid nästa bars öppning. Kodjämförelser som tillskriver modifieraren olika resultat tittar på fel variabel. - Möjlig avvisning av nuvarande kompilatorer. Instruktionen är dokumenterad som inte längre giltig. Beroende på plattformsversion kan kod som innehåller den misslyckas med att kompilera, så den säkra migreringen är att ta bort nyckelordet snarare än att behålla det av nostalgiska skäl.
- Förvirring med
TomorrowOpen. Namnen ser relaterade ut men instruktionerna är inte utbytbara.TomorrowOpengäller orderläggning på dagsbarer och är fortfarande ett aktivt nyckelord,NextBarOpenär en död modifierare. - Att anta att exekvering på samma bar finns. Att ta bort modifieraren aktiverar inte fills på samma bar. Det finns ingen ordertyp som exekveras vid signalbarens stängning, modellen med öppning på nästa bar är inbyggd i motorn.
Relaterade instruktioner
TomorrowOpen, instruktion för ordertiming på dagsbarer.MARKET, omedelbar exekvering till aktuellt marknadspris.BUY, öppnar eller utökar en long-position.SELL, stänger hela eller delar av en long-position.SELLSHORT, öppnar eller utökar en short-position.EXITSHORT, stänger hela eller delar av en short-position.LIMIT, väntande order som fylls till ett angivet pris eller bättre.STOP, väntande order som utlöses när priset når en nivå.