Jetzt beitreten
ProBacktest/probacktest · proorder

COUNTOFSHORTSHARES

COUNTOFSHORTSHARES gibt die Anzahl der von der aktuellen ProBacktest- oder ProOrder-Strategie short gehaltenen Aktien oder Lots zurück. Syntax, ausgearbeitete Beispiele und häufige Stolperfallen.

Syntax

probuilder
COUNTOFSHORTSHARES

Das Schlüsselwort nimmt keine Parameter und wird innerhalb von Bedingungen und Ausdrücken wie eine Variable gelesen.

So funktioniert es

Jedes Mal, wenn der Strategiecode läuft, COUNTOFSHORTSHARES meldet die zu diesem Zeitpunkt gefüllte Short-Menge. Anders als COUNTOFPOSITION, das ein Vorzeichen trägt, ist dieses Schlüsselwort immer null oder positiv, sodass es direkt mit einer Obergrenze verglichen werden kann, ohne ein ABS() Wrapper. Wenn die Strategie flat oder long ist, gibt sie 0 zurück.

Das typische Muster kombiniert drei Bestandteile: DEFPARAM CumulateOrders = true damit wiederholte SELLSHORT Orders stapeln sich, statt ignoriert zu werden, eine Einstiegsbedingung, die mehr als einmal auslösen kann, und eine Absicherung wie COUNTOFSHORTSHARES < 5 das verhindert, dass die Position unbegrenzt wächst. Der Wert aktualisiert sich, sobald Ausführungen erfolgen, sodass Teilausstiege über EXITSHORT x SHARES reduzieren die Anzahl entsprechend.

Pending-Orders werden nicht berücksichtigt. Eine ruhende SELLSHORT ... LIMIT Order, die nicht ausgeführt wurde, lässt die Zählung unverändert, bis sie gefüllt wird. Das Gegenstück dieses Schlüsselworts auf der Long-Seite ist COUNTOFLONGSHARES.

Beispiele

Beispiel 1, Begrenzung gestapelter Short-Einstiege auf fünf 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

Die Schutzvariable MAXSHARES blockiert neue Einstiege, sobald fünf Kontrakte short sind, und hält das Exposure begrenzt, während die trendfolgende Add-on-Logik aktiv bleibt.

Beispiel 2, Abbau einer Short-Position in Hälften (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

Das Auslesen der laufenden Short-Größe bedeutet, dass der Teilausstieg immer die Hälfte des tatsächlich Gehaltenen abbaut, unabhängig davon, wie viele Einstiege ausgeführt wurden.

Beispiel 3, Blockieren gehedgter Wiedereinstiege (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

Die Anzahl dient sowohl als Prüfung für den Ersteinstieg als auch als Obergrenze für das Pyramidisieren, da 0 kleiner als 3 ist, wenn die Strategie flat ist.

Häufige Fehler und Stolperfallen

  • Kein Stapeln ohne CumulateOrders. Mit dem Standard DEFPARAM CumulateOrders = false, ein zweites SELLSHORT während einer bestehenden Short-Position wird ignoriert, daher COUNTOFSHORTSHARES bleibt bei der ersten Einstiegsgröße und die Aufstockungslogik löst nie aus.
  • Verwechslung von Aktien mit Einstiegen. Das Schlüsselwort zählt Aktien oder Lots, nicht die Anzahl der Trades. Ein SELLSHORT 5 CONTRACTS Order ergibt eine Anzahl von 5, genauso wie fünf separate Einstiege mit je einem Kontrakt.
  • Ausstehende Orders sind unsichtbar. Nicht ausgeführte Limit- oder Stop-Einstiegsorders erhöhen den Zähler nicht, daher greift eine Obergrenze, die nur gegen COUNTOFSHORTSHARES kann innerhalb eines Bars dennoch mehr offene Größe einreihen als beabsichtigt.
  • Verwechslung von vorzeichenbehaftet und vorzeichenlos. COUNTOFSHORTSHARES ist positiv, während COUNTOFPOSITION ist für dieselbe Short-Position negativ. Das Vermischen der beiden Konventionen in einer Bedingung ist eine häufige Ursache für Absicherungen, die niemals auslösen.
  • COUNTOFLONGSHARES, vorzeichenlose Anzahl der long gehaltenen Aktien.
  • COUNTOFPOSITION, vorzeichenbehaftete Größe der offenen Position.
  • CumulateOrders, DEFPARAM-Parameter, der das Stapeln von Einstiegen in dieselbe Richtung ermöglicht.
  • SELLSHORT, eröffnet eine Short-Position oder baut sie aus.
  • EXITSHORT, schließt eine Short-Position ganz oder teilweise.
  • SHORTONMARKET, wahr, solange eine Short-Position offen ist.
  • TRADEINDEX, Bar-Index der Ausführung eines vorherigen Trades.
  • TRADEPRICE, Einstiegskurs des aktuellen oder eines vorherigen Trades.