Bli medlem idag
ProBacktest/probacktest · proorder

MARKET

MARKET i ProBacktest och ProOrder utför BUY- och SELL-order till aktuellt marknadspris. Order fylls vid öppningen av nästa bar utan prisgräns.

Syntax

probuilder
BUY quantity SHARES AT MARKET
SELL quantity SHARES AT MARKET

Så fungerar det

Varje ordersats avslutas med en ordertyp. AT MARKET betyder att ordern inte bär något prisvillkor: den utförs till det pris marknaden erbjuder vid utförandet. Alternativen, LIMIT och STOP, skapa i stället väntande ordrar som avvaktar en specifik prisnivå.

Eftersom strategikod körs en gång per bar vid stängningen skickas en marknadsorder som genereras på en bar och fylls vid öppningen av nästa bar. ProBacktest modellerar detta genom att fylla till nästa bars öppningspris. I live-ProOrder når ordern mäklaren i det ögonblicket och fylls till bästa tillgängliga pris, vilket kan skilja sig från den noterade öppningskursen på snabba eller tunna marknader.

En marknadsorder byter säkerhet i exekveringen mot osäkerhet i priset. Den passar signaler där det är viktigare att vara med i affären än den exakta nivån, till exempel trendföljande entryer eller tvingade exitar. När själva entrynivån är en del av edge är en väntande LIMIT eller STOP ordern uttrycker den avsikten bättre.

AT MARKET kombineras med alla orderverb: BUY och SELLSHORT för att öppna positioner, SELL och EXITSHORT för att stänga dem.

Exempel

Exempel 1, Omedelbart köp av tio aktier (ProBacktest)

probuilder
// enter when price closes above the 50-bar average
IF NOT OnMarket AND close > Average[50](close) THEN
  BUY 10 SHARES AT MARKET
ENDIF

När ingen position är öppen och villkoret håller vid barens stängning skickas en order på tio aktier som fylls vid öppningen av nästa bar till gällande pris.

Exempel 2, Tvingad exit av en short till marknadspris (ProOrder)

probuilder
// cover the short as soon as momentum turns positive
exitSignal = RSI[14](close) crosses under 30

IF ShortOnMarket AND exitSignal THEN
  EXITSHORT AT MARKET
ENDIF

Hela short-positionen stängs till marknadspris. Ingen kvantitet anges, så standardvärdet gäller och hela positionen täcks.

Exempel 3, Korsning av glidande medelvärde i båda riktningarna (ProOrder)

probuilder
fastMA = Average[20](close)
slowMA = Average[50](close)

IF fastMA crosses over slowMA THEN
  IF ShortOnMarket THEN
    EXITSHORT AT MARKET
  ENDIF
  BUY 1 CONTRACT AT MARKET
ENDIF

IF fastMA crosses under slowMA THEN
  IF LongOnMarket THEN
    SELL AT MARKET
  ENDIF
  SELLSHORT 1 CONTRACT AT MARKET
ENDIF

Ett stop-and-reverse-system. Varje korsning stänger en eventuell motsatt position och öppnar en ny, allt med marknadsorder så att strategin alltid är positionerad med korsningen.

Vanliga fel och fallgropar

  • Fyllningar sker vid nästa bars öppning. Villkoret utvärderas vid barens stängning, men fyllningspriset är nästa bars öppning. Backtestberäkningar som antar entry vid signalbarens stängning överskattar resultaten varje gång barer gapar.
  • Ingen prisgaranti. Marknadsorder garanterar exekvering, inte pris. Fyllningar i live kan slira förbi det backtestade öppningspriset under volatila förhållanden, så live-resultat försämras jämfört med ProBacktest, som antar rena fyllningar.
  • SELL och EXITSHORT är inte utbytbara. SELL AT MARKET stänger long-positioner och EXITSHORT AT MARKET stänger shorts. Att använda fel verb för den öppna sidan lämnar positionen orörd.
  • MARKET är inte en fristående sats. Nyckelordet existerar endast som del av en ordersats efter AT. Att skriva MARKET på egen rad kompilerar inte.
  • 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å.
  • ONMARKET, sant så länge någon position är öppen.
  • LONGONMARKET, sant så länge en long-position är öppen.
  • SHORTONMARKET, sant så länge en short-position är öppen.