Bli medlem idag
ProBacktest/probacktest · proorder

SELL

SELL i ProBacktest och ProOrder stänger en öppen long-position. SELL stänger longs medan SELLSHORT öppnar shorts. Syntax, ordertyper och exempel förklarade.

Syntax

probuilder
SELL AT MARKET
probuilder
SELL x CONTRACT AT MARKET
probuilder
SELL AT price STOP

Så fungerar det

SELL är exitinstruktionen för long-sidan. Skriven utan kvantitet, SELL AT MARKET stänger hela den öppna long-positionen till nästa tillgängliga pris. Med en kvantitet, till exempel SELL 1 CONTRACT AT MARKET, stänger den bara en del av en större position, vilket är så utskalning uttrycks.

Väntande former finns också: SELL AT price LIMIT exitar på en angiven nivå eller bättre över marknaden, en vinsthemtagningsorder, och SELL AT price STOP går ur så snart priset faller genom en nivå, en manuell stopporder. Som med alla väntande order i ProBacktest och ProOrder avbryts en ofylld order efter en bar och måste skickas in igen så länge exitregeln fortfarande gäller.

Skillnaden mot SELLSHORT har betydelse. SELL kan bara minska eller stänga en long-position; när strategin är utan position eller short har en SELL-order ingen effekt. SELLSHORT öppnar en ny short-position, och EXITSHORT stänger den. De fyra orderinstruktionerna hör samman som BUY med SELL för long-sidan, och SELLSHORT med EXITSHORT för short-sidan.

Exempel

Exempel 1, Regelbaserad exit från en long-position (ProBacktest)

probuilder
// Close the long at market when the exit conditions are met
IF LongOnMarket AND ExitConditions THEN
    SELL AT MARKET
ENDIF

Positionen stängs till aktuellt marknadspris när exitregeln utlöses medan en long-affär är öppen. Detta är exemplet från den officiella referensen.

Exempel 2, Skala ur halva positionen efter en vinst (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Enter with two contracts when flat
IF NOT onmarket AND close CROSSES OVER Average[50](close) THEN
  BUY 2 CONTRACT AT MARKET
ENDIF

// Take half off after a 2 percent gain from entry
IF longonmarket AND close >= tradeprice * 1.02 AND countofposition = 2 THEN
  SELL 1 CONTRACT AT MARKET
ENDIF

// Close the remainder when the trend turns
IF longonmarket AND close CROSSES UNDER Average[50](close) THEN
  SELL AT MARKET
ENDIF

En SELL med angiven kvantitet stänger en del av positionen, medan den avslutande SELL utan kvantitet nollar det som återstår.

Exempel 3, Väntande stop-exit under entryn (ProOrder)

probuilder
// Maintain a resting exit 50 points below the entry price
IF longonmarket THEN
  SELL AT tradeprice - 50 * pointsize STOP
ENDIF

Den väntande stop-ordern läggs på nytt varje bar så länge longen är öppen, vilket håller en hård exit 50 punkter under fyllningspriset.

Vanliga fel och fallgropar

  • SELL är inte SELLSHORT. SELL stänger longs; SELLSHORT öppnar shorts. En strategi som är tänkt att gå short men som lägger SELL när den är utan position gör ingenting, och felet är tyst eftersom ordern helt enkelt ignoreras.
  • Ingen long att stänga. När strategin är flat eller short har SELL ingen effekt. Skydda exitblock med IF LongOnMarket THEN så att kodens avsikt förblir tydlig.
  • Väntande exits löper ut efter en bar. En vilande SELL ... STOP eller SELL ... LIMIT ordern avbryts om den inte fylls efter nästa bar. Skicka in den på nytt på varje bar medan positionen är öppen, som i exempel 3.
  • Avvikelse i delkvantiteten. En SELL med angiven kvantitet som är större än den öppna positionen stänger bara positionen; den vänder inte till en short. Kontrollera storleken med COUNTOFPOSITION innan du skalar ur fasta mängder.
  • BUY, öppnar en long-position.
  • SELLSHORT, öppnar en short-position.
  • EXITSHORT, stänger en short-position.
  • MARKET, omedelbar exekvering till aktuellt pris.
  • LIMIT, väntande order till angivet pris eller bättre.
  • STOP, väntande order som utlöses när priset korsar en nivå.
  • LONGONMARKET, sant så länge en long-position är öppen.
  • ONMARKET, sant så länge någon position är öppen.
  • TRADEPRICE, exekveringspriset för en tidigare affär.