Bli medlem idag
ProBacktest/probacktest · proorder

COUNTOFSHORTSHARES

COUNTOFSHORTSHARES returnerar antalet aktier eller lot som hålls short av den aktuella ProBacktest- eller ProOrder-strategin. Syntax, genomarbetade exempel och vanliga fallgropar.

Syntax

probuilder
COUNTOFSHORTSHARES

Nyckelordet tar inga parametrar och läses som en variabel inuti villkor och uttryck.

Så fungerar det

Varje gång strategikoden körs, COUNTOFSHORTSHARES rapporterar fylld short-kvantitet vid den tidpunkten. Till skillnad från COUNTOFPOSITION, som har tecken, är det här nyckelordet alltid noll eller positivt, så det kan jämföras direkt mot ett tak utan ett ABS() omslag. När strategin är flat eller long returnerar den 0.

Det typiska mönstret kombinerar tre delar: DEFPARAM CumulateOrders = true så att upprepade SELLSHORT staplas ordrar i stället för att ignoreras, ett entryvillkor som kan utlösas mer än en gång, och ett skydd som COUNTOFSHORTSHARES < 5 som hindrar positionen från att växa utan gräns. Värdet uppdateras när fyllningar sker, så partiella exits via EXITSHORT x SHARES minska antalet i motsvarande mån.

Väntande order räknas inte in. En liggande SELLSHORT ... LIMIT order som inte har exekverats lämnar räknaren oförändrad tills den fylls. Motsvarigheten på long-sidan till det här nyckelordet är COUNTOFLONGSHARES.

Exempel

Exempel 1, Begränsa staplade short-entries till fem lot (ProBacktest)

probuilder
// MACD used as the short trigger
myMACD = MACD[12,26,9](close)

// Short signal, MACD line falls through zero
short = myMACD crosses under 0

// First short entry only when no short is open
IF NOT ShortOnMarket AND short THEN
  SELLSHORT 1 CONTRACTS AT MARKET
ENDIF

// Guard, allow re-entry only below five short contracts
MAXSHARES = COUNTOFSHORTSHARES < 5

// Add to the short after a pullback in the strategy's favor
IF TRADEINDEX(1) > 5 AND TRADEPRICE(1) - Close > 10 AND ShortOnMarket AND MAXSHARES THEN
  SELLSHORT 1 CONTRACTS AT MARKET
ENDIF

// Trail the whole position
SET STOP TRAILING 50

Skyddsvariabeln MAXSHARES blockerar nya entries när fem kontrakt är short, vilket håller exponeringen begränsad medan den trendföljande påslagslogiken förblir aktiv.

Exempel 2, Skala ut ur en short i halvor (ProOrder)

probuilder
DEFPARAM CumulateOrders = true

// Take half the short off after 30 points of profit
IF ShortOnMarket AND TRADEPRICE - close >= 30 * pointsize AND COUNTOFSHORTSHARES >= 2 THEN
  EXITSHORT COUNTOFSHORTSHARES / 2 SHARES AT MARKET
ENDIF

Att läsa den aktuella short-storleken innebär att den delvisa exiten alltid tar bort hälften av vad som faktiskt hålls, oavsett hur många entries som fylldes.

Exempel 3, Blockera hedgade re-entries (ProOrder)

probuilder
DEFPARAM CumulateOrders = true

rsiVal = RSI[14](close)

// Only open or add to a short when RSI is overbought
// and the short book holds fewer than 3 lots
IF rsiVal > 70 AND COUNTOFSHORTSHARES < 3 THEN
  SELLSHORT 1 LOT AT MARKET
ENDIF

// Flatten the short when RSI normalises
IF ShortOnMarket AND rsiVal < 50 THEN
  EXITSHORT AT MARKET
ENDIF

Antalet fungerar både som kontroll av den första entryn och som pyramideringstak, eftersom 0 är mindre än 3 när strategin är utan position.

Vanliga fel och fallgropar

  • Ingen stapling utan CumulateOrders. Med standardvärdet DEFPARAM CumulateOrders = false, en andra SELLSHORT medan man redan är short ignoreras, så COUNTOFSHORTSHARES stannar på den första entrystorleken och påbyggnadslogiken utlöses aldrig.
  • Att förväxla aktier med entries. Nyckelordet räknar aktier eller lotter, inte antalet affärer. En SELLSHORT 5 CONTRACTS ordern gör antalet 5, samma sak som fem separata entryn på ett kontrakt vardera.
  • Väntande ordrar är osynliga. Ofyllda limit- eller stoppentryorder ökar inte räknaren, så ett tak som bara skrivs mot COUNTOFSHORTSHARES kan ändå köa mer väntande storlek än avsett inom en bar.
  • Förväxling mellan värden med och utan tecken. COUNTOFSHORTSHARES är positiv medan COUNTOFPOSITION är negativ för samma short-position. Att blanda de två konventionerna i ett villkor är en vanlig orsak till skydd som aldrig utlöses.
  • COUNTOFLONGSHARES, antal aktier som innehas long, utan tecken.
  • COUNTOFPOSITION, storleken på den öppna positionen med tecken.
  • CumulateOrders, DEFPARAM-parameter som gör det möjligt att stapla entries i samma riktning.
  • SELLSHORT, öppnar eller utökar en short-position.
  • EXITSHORT, stänger hela eller delar av en short-position.
  • SHORTONMARKET, sant så länge en short-position är öppen.
  • TRADEINDEX, barindex för exekveringen av en tidigare affär.
  • TRADEPRICE, entrypriset för den aktuella eller en tidigare affären.