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
COUNTOFSHORTSHARESNyckelordet 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)
// 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 50Skyddsvariabeln 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)
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
ENDIFAtt 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)
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
ENDIFAntalet 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 andraSELLSHORTmedan man redan är short ignoreras, såCOUNTOFSHORTSHARESstannar 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 CONTRACTSordern 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
COUNTOFSHORTSHARESkan ä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 medanCOUNTOFPOSITIONä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.
Relaterade instruktioner
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.