COUNTOFSHORTSHARES
COUNTOFSHORTSHARES restituisce il numero di azioni o lotti detenuti short dalla strategia ProBacktest o ProOrder corrente. Sintassi, esempi svolti e insidie comuni.
Sintassi
COUNTOFSHORTSHARESLa 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)
// 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 50La 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)
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
ENDIFLeggere 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)
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
ENDIFIl 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 secondoSELLSHORTmentre si è già short viene ignorato, quindiCOUNTOFSHORTSHARESrimane 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 CONTRACTSl'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
COUNTOFSHORTSHARESpuò 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 mentreCOUNTOFPOSITIONè negativo per la stessa posizione short. Mescolare le due convenzioni in una sola condizione è una causa frequente di controlli che non scattano mai.
Istruzioni correlate
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.