Word nu lid
ProBacktest/probacktest · proorder

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

probuilder
COUNTOFSHORTSHARES

Het 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)

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

De 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)

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

Door 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)

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

Het 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 tweede SELLSHORT terwijl je al short staat wordt genegeerd, dus COUNTOFSHORTSHARES blijft 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 CONTRACTS order 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 COUNTOFSHORTSHARES kan binnen één bar nog steeds meer openstaande size in de wachtrij zetten dan bedoeld.
  • Verwarring tussen waarden met en zonder teken. COUNTOFSHORTSHARES is positief terwijl COUNTOFPOSITION is negatief voor dezelfde short positie. De twee conventies in één voorwaarde mengen is een veelvoorkomende oorzaak van guards die nooit afgaan.
  • 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.