COUNTOFLONGSHARES
COUNTOFLONGSHARES returnerar antalet enheter som hålls long av en ProBacktest- eller ProOrder-strategi, används för att begränsa position size när flera ordrar ackumuleras.
Syntax
COUNTOFLONGSHARESSå fungerar det
Funktionen läser den öppna positionen och returnerar ett heltal: antalet enheter som hålls på long-sidan vid utvärderingstillfället. Den kräver inga parametrar och inga parenteser. När strategin är utan position eller short returnerar den 0.
Antalet uttrycks i enheter, inte i affärer. En enskild order på 3 kontrakt och tre kumulerade ordrar på 1 kontrakt returnerar båda 3. För att resonera om enskilda entryer, kombinera den med TRADEINDEX och TRADEPRICE, som adresserar ordrar via deras index.
Det typiska sammanhanget är en strategi med DEFPARAM CumulateOrders = true, där flera entryordrar kan staplas till en position. Att jämföra COUNTOFLONGSHARES mot ett tak före varje ytterligare BUY håller den totala exponeringen inom en planerad gräns. Motsvarigheten på short-sidan är COUNTOFSHORTSHARES, och COUNTOFPOSITION rapporterar den tecknade storleken på vilken position som än är öppen.
Exempel
Exempel 1, Pyramidering begränsad till tre enheter (ProBacktest)
DEFPARAM CumulateOrders = true
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
// First entry when flat
IF NOT LongOnMarket AND long THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Allow additions only while holding three units or fewer
MAXSHARES = COUNTOFLONGSHARES <= 3
// Add a unit if the last entry is seasoned and in profit
IF TRADEINDEX(1) > 5 AND Close - TRADEPRICE(1) > 10 AND LongOnMarket AND MAXSHARES THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
SET STOP TRAILING 50Strategin öppnar på en MACD-korsning och lägger sedan till ett kontrakt i taget så länge det löpande antalet håller sig på tre eller lägre, den senaste entryn är minst fem barer gammal och priset har rört sig 10 punkter bortom den.
Exempel 2, Hårt exponeringstak före varje påfyllning (ProOrder)
DEFPARAM CumulateOrders = true
trendUp = close > Average[100](close)
pullback = RSI[7](close) < 35
// Never hold more than 5 units long
IF trendUp AND pullback AND COUNTOFLONGSHARES < 5 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
SET STOP %TRAILING 2Varje pullback i en uppgående trend lägger till en enhet, men villkoret på COUNTOFLONGSHARES garanterar att den staplade positionen aldrig överstiger fem enheter.
Exempel 3, Skala ut när positionen är stor (ProOrder)
DEFPARAM CumulateOrders = true
IF close crosses over Average[50](close) AND COUNTOFLONGSHARES < 4 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// When fully loaded and momentum fades, shed one unit
IF COUNTOFLONGSHARES >= 4 AND RSI[14](close) crosses under 70 THEN
SELL 1 CONTRACT AT MARKET
ENDIF
SET STOP %LOSS 3Antalet styr i båda riktningarna: det spärrar nya entries under fyra enheter och triggar en delvis exit när positionen är fullt uppbyggd och momentum vänder.
Vanliga fel och fallgropar
- Enheter, inte affärer. Returvärdet räknar aktier, kontrakt eller lotter, inte antalet entryordrar. En strategi som köper 2 kontrakt per signal når ett tak på 6 efter tre signaler, inte efter sex.
- Meningslöst utan ackumulerade ordrar. Med standardvärdet
CumulateOrders = false, håller en strategi högst en entry åt gången, så funktionen returnerar bara den enda orderns kvantitet eller 0. Pyramideringslogik behöverDEFPARAM CumulateOrders = trueatt ha betydelse. - Noll när short eller utan position. Funktionen ignorerar short-exponering helt och returnerar 0. Att testa
COUNTOFLONGSHARES = 0betyder inte att strategin är flat; kombinera medONMARKETellerCOUNTOFSHORTSHARESför hela bilden. - Utvärderas vid barens tidpunkt. Antalet speglar fyllda ordrar per den aktuella baren. En order som skickats denna bar men ännu inte utförts räknas inte med, så påfyllningar direkt efter varandra inom en bar kan överskrida ett tak som kontrollerats tidigare i koden.
Relaterade instruktioner
COUNTOFSHORTSHARES, antal enheter som hålls short.COUNTOFPOSITION, storleken på den öppna positionen med tecken.CumulateOrders, DEFPARAM som gör det möjligt att stapla flera entryordrar.LONGONMARKET, sant så länge en long-position är öppen.ONMARKET, sant så länge någon position är öppen.TRADEINDEX, barindex för en given entryorder.TRADEPRICE, entrypris för en given order.BUY, öppnar eller utökar en long-position.