Iscriviti ora
ProBacktest/probacktest · proorder

COUNTOFSHORTSHARES

COUNTOFSHORTSHARES restituisce il numero di azioni o lotti detenuti short dalla strategia ProBacktest o ProOrder corrente. Sintassi, esempi svolti e insidie comuni.

Sintassi

probuilder
COUNTOFSHORTSHARES

La parola chiave non accetta parametri e si legge come una variabile all'interno di condizioni ed espressioni.

Come funziona

Ogni volta che il codice della strategia viene eseguito, COUNTOFSHORTSHARES riporta la quantità short eseguita in quel momento. A differenza di COUNTOFPOSITION, che è dotato di segno, questa parola chiave è sempre zero o positiva, quindi può essere confrontata direttamente con un limite massimo senza un ABS() wrapper. Quando la strategia è flat o long, restituisce 0.

Il pattern tipico combina tre elementi: DEFPARAM CumulateOrders = true così che ripetuti SELLSHORT gli ordini si accumulano invece di essere ignorati, una condizione di ingresso che può attivarsi più di una volta e una protezione come COUNTOFSHORTSHARES < 5 che impedisce alla posizione di crescere senza limiti. Il valore si aggiorna al verificarsi delle esecuzioni, quindi le uscite parziali tramite EXITSHORT x SHARES riducono il conteggio di conseguenza.

Gli ordini pendenti non sono inclusi. Un ordine in attesa SELLSHORT ... LIMIT un ordine che non è stato eseguito lascia il conteggio invariato fino all'esecuzione. Il corrispettivo lato long di questa parola chiave è COUNTOFLONGSHARES.

Esempi

Esempio 1, Limitare a cinque lotti gli ingressi short accumulati (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

La variabile di guardia MAXSHARES blocca nuovi ingressi quando cinque contratti sono short, mantenendo l'esposizione limitata mentre la logica di aggiunta trend-following resta attiva.

Esempio 2, Uscita graduale da uno short a metà alla volta (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

Leggere la dimensione short in corso significa che l'uscita parziale rimuove sempre la metà di ciò che è effettivamente detenuto, indipendentemente da quanti ingressi sono stati eseguiti.

Esempio 3, Bloccare i rientri in copertura (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

Il conteggio funge sia da controllo dell'ingresso iniziale sia da limite di piramidazione, poiché 0 è minore di 3 quando la strategia è flat.

Errori e insidie comuni

  • Nessun accumulo senza CumulateOrders. Con il predefinito DEFPARAM CumulateOrders = false, un secondo SELLSHORT mentre si è già short viene ignorato, quindi COUNTOFSHORTSHARES rimane alla size del primo ingresso e la logica di incremento non si attiva mai.
  • Confondere le azioni con gli ingressi. La parola chiave conta azioni o lotti, non il numero di operazioni. Una SELLSHORT 5 CONTRACTS l'ordine porta il conteggio a 5, come cinque ingressi separati da un contratto.
  • Gli ordini pendenti sono invisibili. Gli ordini di ingresso limite o stop non eseguiti non aumentano il conteggio, quindi un limite scritto solo su COUNTOFSHORTSHARES può comunque mettere in coda più size pendente del previsto all'interno di una sola bar.
  • Confusione tra valori con segno e senza segno. COUNTOFSHORTSHARES è positivo mentre COUNTOFPOSITION è negativo per la stessa posizione short. Mescolare le due convenzioni in una sola condizione è una causa frequente di controlli che non scattano mai.
  • COUNTOFLONGSHARES, conteggio senza segno delle azioni detenute long.
  • COUNTOFPOSITION, dimensione con segno della posizione aperta.
  • CumulateOrders, parametro DEFPARAM che abilita l'accumulo di ingressi nella stessa direzione.
  • SELLSHORT, apre o incrementa una posizione short.
  • EXITSHORT, chiude tutta o parte di una posizione short.
  • SHORTONMARKET, vero mentre una posizione short è aperta.
  • TRADEINDEX, indice di bar dell'esecuzione di un'operazione precedente.
  • TRADEPRICE, prezzo di ingresso dell'operazione corrente o di una precedente.