COUNTOFPOSITION
COUNTOFPOSITION restituisce la dimensione con segno della posizione aperta in ProBacktest e ProOrder, positiva per long e negativa per short. Sintassi ed esempi.
Sintassi
COUNTOFPOSITIONLa parola chiave non accetta parametri e si usa come una variabile di sola lettura all'interno delle espressioni.
Come funziona
Su ogni bar, COUNTOFPOSITION riflette la quantità attualmente detenuta dalla strategia. Il segno codifica la direzione: una strategia long di 3 contratti riporta 3, una strategia short di 3 contratti legge -3, e una strategia flat legge 0. Il valore si aggiorna man mano che gli ordini vengono eseguiti, quindi dopo un'uscita parziale mostra la quantità residua, non la dimensione originale dell'ingresso.
La convenzione con segno rende la parola chiave utile in due situazioni. Primo, i controlli di direzione: COUNTOFPOSITION > 0 è equivalente a LONGONMARKET, e COUNTOFPOSITION < 0 a SHORTONMARKET. Secondo, limiti di esposizione: ABS(COUNTOFPOSITION) restituisce la dimensione totale indipendentemente dalla direzione, il modo consueto per limitare il piramidaggio quando DEFPARAM CumulateOrders = true consente ingressi ripetuti nella stessa direzione.
Viene conteggiata solo la quantità eseguita. Gli ordini limit o stop in attesa non ancora eseguiti non modificano il valore. Per conteggi senza segno per singola direzione, COUNTOFLONGSHARES e COUNTOFSHORTSHARES riportano separatamente le quantità long e short.
Esempi
Esempio 1, Limitare una posizione short piramidata (ProBacktest)
myMACD = MACD[12,26,9](close)
short = myMACD crosses under 0
// First short entry when flat on the short side
IF NOT ShortOnMarket AND short THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
// Allow re-entries only while total size stays at or below 10 contracts
MAXSHARES = abs(COUNTOFPOSITION) <= 10
IF TRADEINDEX(1) > 5 AND TRADEPRICE(1) - Close > 10 * pointsize AND ShortOnMarket AND MAXSHARES THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
SET STOP TRAILING 50La strategia incrementa una posizione short mentre il prezzo scende. Poiché COUNTOFPOSITION è negativo quando si è short, ABS() la converte in una dimensione totale prima di confrontarla con il limite di 10.
Esempio 2, Controllo della direzione senza le parole chiave ONMARKET (ProOrder)
DEFPARAM CumulateOrders = false
fastMA = Average[20](close)
slowMA = Average[50](close)
// Enter long on a bullish crossover when flat
IF COUNTOFPOSITION = 0 AND fastMA crosses over slowMA THEN
BUY 2 CONTRACTS AT MARKET
ENDIF
// Close the long on a bearish crossover
IF COUNTOFPOSITION > 0 AND fastMA crosses under slowMA THEN
SELL AT MARKET
ENDIFCOUNTOFPOSITION = 0 rileva una strategia flat e COUNTOFPOSITION > 0 rileva una posizione long aperta, rispecchiando ONMARKET e LONGONMARKET con una sola parola chiave.
Esempio 3, Dimensionare un'uscita parziale dalla posizione in corso (ProOrder)
DEFPARAM CumulateOrders = true
// Scale into a long, then bank half once the trade is 20 points onside
IF LongOnMarket AND close - TRADEPRICE >= 20 * pointsize AND COUNTOFPOSITION >= 4 THEN
// Exit half of whatever is currently held
SELL COUNTOFPOSITION / 2 CONTRACTS AT MARKET
ENDIFLeggere la dimensione in corso permette all'uscita di adattarsi a quanti ingressi sono stati effettivamente eseguiti, invece di fissare una quantità nel codice.
Errori e insidie comuni
- Dimenticare il segno sulle posizioni short. Mentre short,
COUNTOFPOSITIONè negativo, quindi una protezione comeCOUNTOFPOSITION <= 10è sempre vero e non limita nulla. ConfrontaABS(COUNTOFPOSITION)quando l'intento è la dimensione totale. - Aspettarsi che gli ordini pendenti vengano conteggiati. Il valore riflette solo la quantità eseguita. Un ordine limite in attesa che non è stato eseguito lascia
COUNTOFPOSITIONinvariato, quindi i limiti di esposizione basati su di esso non tengono conto degli ordini in attesa presso il broker. - Nessuna accumulazione senza CumulateOrders. Con il predefinito
DEFPARAM CumulateOrders = false, gli ordini aggiuntivi nella stessa direzione non si sommano, quindiCOUNTOFPOSITIONnon cresce mai oltre il primo ingresso e la logica di pyramiding non fa nulla in silenzio. - Usarlo fuori dalle strategie. La parola chiave non esiste negli indicatori ProBuilder né in ProScreener. La logica che tiene conto della posizione deve risiedere nel codice ProBacktest o ProOrder stesso.
Istruzioni correlate
COUNTOFLONGSHARES, conteggio senza segno delle azioni detenute long.COUNTOFSHORTSHARES, conteggio senza segno delle azioni detenute short.CumulateOrders, parametro DEFPARAM che abilita l'accumulo di ingressi nella stessa direzione.ONMARKET, vero mentre una qualsiasi posizione è aperta.LONGONMARKET, vero mentre una posizione long è aperta.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.