COUNTOFSHORTSHARES
COUNTOFSHORTSHARES geeft het aantal shares of lots dat short wordt aangehouden door de huidige ProBacktest- of ProOrder-strategie. Syntaxis, uitgewerkte voorbeelden en veelvoorkomende valkuilen.
Syntaxis
COUNTOFSHORTSHARESHet keyword neemt geen parameters en wordt binnen voorwaarden en expressies gelezen als een variabele.
Hoe het werkt
Elke keer dat de strategiecode loopt, COUNTOFSHORTSHARES geeft de uitgevoerde short-hoeveelheid op dat moment. In tegenstelling tot COUNTOFPOSITION, dat een teken heeft, is dit keyword altijd nul of positief, dus het kan direct met een bovengrens worden vergeleken zonder een ABS() wrapper. Wanneer de strategie flat of long is, geeft het 0.
Het typische patroon combineert drie onderdelen: DEFPARAM CumulateOrders = true zodat herhaalde SELLSHORT orders stapelen zich op in plaats van genegeerd te worden, een instapvoorwaarde die meer dan één keer kan afgaan, en een beveiliging zoals COUNTOFSHORTSHARES < 5 die voorkomt dat de positie ongelimiteerd groeit. De waarde wordt bijgewerkt zodra er uitvoeringen zijn, dus gedeeltelijke exits via EXITSHORT x SHARES verlagen het aantal dienovereenkomstig.
Pending orders worden niet meegerekend. Een openstaande SELLSHORT ... LIMIT order die niet is uitgevoerd laat de teller onveranderd tot hij wordt gevuld. De tegenhanger van dit keyword aan de long-zijde is COUNTOFLONGSHARES.
Voorbeelden
Voorbeeld 1, Gestapelde short instappen beperken tot vijf lots (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 50De guardvariabele MAXSHARES blokkeert nieuwe instappen zodra vijf contracten short staan, waardoor de exposure begrensd blijft terwijl de trendvolgende add-on-logica actief blijft.
Voorbeeld 2, Een short in helften afbouwen (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
ENDIFDoor de lopende short grootte uit te lezen verwijdert de gedeeltelijke uitstap altijd de helft van wat werkelijk wordt aangehouden, ongeacht hoeveel instappen zijn uitgevoerd.
Voorbeeld 3, Gehedgede herinstappen blokkeren (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
ENDIFHet aantal werkt zowel als controle voor de eerste instap als als grens voor pyramiding, aangezien 0 kleiner is dan 3 wanneer de strategie flat is.
Veelvoorkomende fouten en valkuilen
- Geen stapelen zonder CumulateOrders. Met de standaard
DEFPARAM CumulateOrders = false, een tweedeSELLSHORTterwijl je al short staat wordt genegeerd, dusCOUNTOFSHORTSHARESblijft op de eerste entry size staan en de add-on-logica triggert nooit. - Shares verwarren met instappen. Het trefwoord telt aandelen of lots, niet het aantal trades. Eén
SELLSHORT 5 CONTRACTSorder maakt het aantal 5, hetzelfde als vijf afzonderlijke entries van één contract. - Openstaande orders zijn onzichtbaar. Niet-uitgevoerde limiet- of stop-instaporders verhogen de teller niet, dus een limiet die alleen is geschreven tegen
COUNTOFSHORTSHARESkan binnen één bar nog steeds meer openstaande size in de wachtrij zetten dan bedoeld. - Verwarring tussen waarden met en zonder teken.
COUNTOFSHORTSHARESis positief terwijlCOUNTOFPOSITIONis negatief voor dezelfde short positie. De twee conventies in één voorwaarde mengen is een veelvoorkomende oorzaak van guards die nooit afgaan.
Gerelateerde instructies
COUNTOFLONGSHARES, het aantal long aangehouden aandelen zonder teken.COUNTOFPOSITION, grootte van de open positie met teken.CumulateOrders, DEFPARAM-parameter die het stapelen van instappen in dezelfde richting mogelijk maakt.SELLSHORT, opent een short positie of breidt deze uit.EXITSHORT, sluit een short positie geheel of gedeeltelijk.SHORTONMARKET, waar zolang er een short positie open is.TRADEINDEX, bar-index van de uitvoering van een eerdere trade.TRADEPRICE, instapprijs van de huidige of een eerdere trade.