COUNTOFLONGSHARES
COUNTOFLONGSHARES restituisce il numero di unità detenute long da una strategia ProBacktest o ProOrder, usato per limitare la position size quando si accumulano più ordini.
Sintassi
COUNTOFLONGSHARESCome funziona
La funzione legge la posizione aperta e restituisce un intero: la quantità di unità detenute sul lato long al momento della valutazione. Non richiede parametri né parentesi. Quando la strategia è flat o short, restituisce 0.
Il conteggio è espresso in unità, non in operazioni. Un singolo ordine di 3 contratti e tre ordini cumulati di 1 contratto restituiscono entrambi 3. Per ragionare sui singoli ingressi, combinalo con TRADEINDEX e TRADEPRICE, che indirizzano gli ordini tramite il loro indice.
Il contesto tipico è una strategia con DEFPARAM CumulateOrders = true, dove più ordini di ingresso possono sommarsi in una sola posizione. Confrontare COUNTOFLONGSHARES rispetto a un limite massimo prima di ogni ulteriore BUY mantiene l'esposizione totale entro un limite pianificato. L'equivalente sul lato short è COUNTOFSHORTSHARES, e COUNTOFPOSITION riporta la dimensione con segno di qualsiasi posizione aperta.
Esempi
Esempio 1, Piramidazione limitata a tre unità (ProBacktest)
DEFPARAM CumulateOrders = true
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
// First entry when flat
IF NOT LongOnMarket AND long THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Allow additions only while holding three units or fewer
MAXSHARES = COUNTOFLONGSHARES <= 3
// Add a unit if the last entry is seasoned and in profit
IF TRADEINDEX(1) > 5 AND Close - TRADEPRICE(1) > 10 AND LongOnMarket AND MAXSHARES THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
SET STOP TRAILING 50La strategia apre su un incrocio del MACD, poi aggiunge un contratto alla volta mentre il conteggio corrente resta a tre o meno, l'ultimo ingresso ha almeno cinque bar, e il prezzo si è mosso di 10 punti oltre di esso.
Esempio 2, Tetto rigido di esposizione prima di ogni aggiunta (ProOrder)
DEFPARAM CumulateOrders = true
trendUp = close > Average[100](close)
pullback = RSI[7](close) < 35
// Never hold more than 5 units long
IF trendUp AND pullback AND COUNTOFLONGSHARES < 5 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
SET STOP %TRAILING 2Ogni pullback in un trend rialzista aggiunge un'unità, ma la condizione su COUNTOFLONGSHARES garantisce che la posizione accumulata non superi mai cinque unità.
Esempio 3, Uscita graduale quando la posizione è grande (ProOrder)
DEFPARAM CumulateOrders = true
IF close crosses over Average[50](close) AND COUNTOFLONGSHARES < 4 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// When fully loaded and momentum fades, shed one unit
IF COUNTOFLONGSHARES >= 4 AND RSI[14](close) crosses under 70 THEN
SELL 1 CONTRACT AT MARKET
ENDIF
SET STOP %LOSS 3Il conteggio guida entrambe le direzioni: limita i nuovi ingressi sotto le quattro unità e attiva un'uscita parziale una volta che la posizione è completamente costruita e il momentum gira.
Errori e insidie comuni
- Unità, non operazioni. Il valore restituito conta azioni, contratti o lotti, non il numero di ordini di ingresso. Una strategia che compra 2 contratti per segnale raggiunge un limite di 6 dopo tre segnali, non dopo sei.
- Inutile senza ordini cumulati. Con il predefinito
CumulateOrders = false, una strategia mantiene al massimo un ingresso per volta, quindi la funzione restituisce sempre solo la quantità di quell'unico ordine o 0. La logica di piramidaggio richiedeDEFPARAM CumulateOrders = truea contare. - Zero quando short o flat. La funzione ignora completamente l'esposizione short e restituisce 0. Testare
COUNTOFLONGSHARES = 0non significa che la strategia sia flat; combinalo conONMARKEToCOUNTOFSHORTSHARESper il quadro completo. - Valutato al momento della bar. Il conteggio riflette gli ordini eseguiti alla bar corrente. Un ordine inviato in questa bar ma non ancora eseguito non è incluso, quindi aggiunte consecutive in una stessa bar possono superare un limite verificato prima nel codice.
Istruzioni correlate
COUNTOFSHORTSHARES, numero di unità detenute short.COUNTOFPOSITION, dimensione con segno della posizione aperta.CumulateOrders, DEFPARAM che permette di accumulare più ordini di ingresso.LONGONMARKET, vero mentre una posizione long è aperta.ONMARKET, vero mentre una qualsiasi posizione è aperta.TRADEINDEX, indice di bar di un dato ordine di ingresso.TRADEPRICE, prezzo di ingresso di un dato ordine.BUY, apre o incrementa una posizione long.