COUNTOFPOSITION
COUNTOFPOSITION returnerar den öppna positionens storlek med tecken i ProBacktest och ProOrder, positiv för long och negativ för short. Syntax och exempel.
Syntax
COUNTOFPOSITIONNyckelordet tar inga parametrar och används som en skrivskyddad variabel inuti uttryck.
Så fungerar det
På varje bar, COUNTOFPOSITION speglar den kvantitet som strategin håller just nu. Tecknet anger riktning: en strategi som är long 3 kontrakt visar 3, en strategi som är short 3 kontrakt läser -3, och en flat strategi läser 0. Värdet uppdateras när order fylls, så efter en delvis exit visar det den återstående kvantiteten, inte den ursprungliga entrystorleken.
Teckenkonventionen gör nyckelordet användbart i två situationer. Först, riktningskontroller: COUNTOFPOSITION > 0 motsvarar LONGONMARKET, och COUNTOFPOSITION < 0 till SHORTONMARKET. För det andra, exponeringstak: ABS(COUNTOFPOSITION) ger total storlek oberoende av riktning, vilket är det vanliga sättet att begränsa pyramidering när DEFPARAM CumulateOrders = true tillåter upprepade entries i samma riktning.
Endast fylld kvantitet räknas. Väntande limit- eller stoppordrar som inte har utförts ändrar inte värdet. För teckenlösa antal per riktning, COUNTOFLONGSHARES och COUNTOFSHORTSHARES rapporterar long- och short-kvantiteterna separat.
Exempel
Exempel 1, Begränsa en pyramiderad short-position (ProBacktest)
myMACD = MACD[12,26,9](close)
short = myMACD crosses under 0
// First short entry when flat on the short side
IF NOT ShortOnMarket AND short THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
// Allow re-entries only while total size stays at or below 10 contracts
MAXSHARES = abs(COUNTOFPOSITION) <= 10
IF TRADEINDEX(1) > 5 AND TRADEPRICE(1) - Close > 10 * pointsize AND ShortOnMarket AND MAXSHARES THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
SET STOP TRAILING 50Strategin skalar in i en short när priset faller. Eftersom COUNTOFPOSITION är negativt när positionen är short, ABS() omvandlar det till en total storlek innan den jämförs med taket på 10.
Exempel 2, Riktningskontroll utan ONMARKET-nyckelord (ProOrder)
DEFPARAM CumulateOrders = false
fastMA = Average[20](close)
slowMA = Average[50](close)
// Enter long on a bullish crossover when flat
IF COUNTOFPOSITION = 0 AND fastMA crosses over slowMA THEN
BUY 2 CONTRACTS AT MARKET
ENDIF
// Close the long on a bearish crossover
IF COUNTOFPOSITION > 0 AND fastMA crosses under slowMA THEN
SELL AT MARKET
ENDIFCOUNTOFPOSITION = 0 upptäcker en flat strategi och COUNTOFPOSITION > 0 upptäcker en öppen long, som speglar ONMARKET och LONGONMARKET med ett enda nyckelord.
Exempel 3, Dimensionera en delvis exit från den aktiva positionen (ProOrder)
DEFPARAM CumulateOrders = true
// Scale into a long, then bank half once the trade is 20 points onside
IF LongOnMarket AND close - TRADEPRICE >= 20 * pointsize AND COUNTOFPOSITION >= 4 THEN
// Exit half of whatever is currently held
SELL COUNTOFPOSITION / 2 CONTRACTS AT MARKET
ENDIFAtt läsa den aktuella storleken låter exiten anpassa sig till hur många entries som faktiskt fylldes, i stället för att hårdkoda en volym.
Vanliga fel och fallgropar
- Att glömma tecknet på shorts. Medan short,
COUNTOFPOSITIONär negativ, så ett skydd somCOUNTOFPOSITION <= 10är alltid sant och begränsar aldrig något. JämförABS(COUNTOFPOSITION)när avsikten är total storlek. - Att förvänta sig att väntande ordrar räknas med. Värdet speglar endast exekverad kvantitet. En liggande limitorder som inte har exekverats lämnar
COUNTOFPOSITIONoförändrad, så exponeringstak som bygger på den tar inte hänsyn till order som ligger hos mäklaren. - Ingen ackumulering utan CumulateOrders. Med standardvärdet
DEFPARAM CumulateOrders = false, staplas inte ytterligare ordrar i samma riktning, såCOUNTOFPOSITIONväxer aldrig utöver det första entryt och pyramidlogiken gör i tysthet ingenting. - Att använda det utanför strategier. Nyckelordet finns inte i ProBuilder-indikatorer eller ProScreener. Positionsmedveten logik måste ligga i själva ProBacktest- eller ProOrder-koden.
Relaterade instruktioner
COUNTOFLONGSHARES, antal aktier som innehas long, utan tecken.COUNTOFSHORTSHARES, antal aktier som innehas short, utan tecken.CumulateOrders, DEFPARAM-parameter som gör det möjligt att stapla entries i samma riktning.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.TRADEINDEX, barindex för exekveringen av en tidigare affär.TRADEPRICE, entrypriset för den aktuella eller en tidigare affären.