Iscriviti ora
ProBacktest/probacktest · proorder

POSITIONPERF

POSITIONPERF restituisce la performance percentuale di una posizione aperta o chiusa in ProBacktest e ProOrder. PositionPerf(0) legge l'operazione attualmente aperta.

Sintassi

probuilder
PositionPerf(N)

Parametri

NomeTipoPredefinitoDescrizione
Nintero0Indice di posizione. 0 legge la posizione attualmente aperta. Un valore maggiore di 0 legge l'N-esima posizione chiusa più recente, quindi 1 è l'ultima operazione chiusa.

Come funziona

POSITIONPERF misura l'andamento di una singola posizione, espresso come rapporto tra il suo guadagno o perdita e il suo costo. Un valore di 0.05 corrisponde a un guadagno del 5 percento e -0.02 a una perdita del 2 percento, quindi moltiplica per 100 quando serve una cifra percentuale da visualizzare.

L'argomento indice seleziona quale posizione valutare. Con N = 0, o con l'argomento omesso, la funzione riporta la performance corrente della posizione attualmente aperta. Con N > 0 scorre a ritroso le operazioni chiuse, PositionPerf(1) essendo l'uscita più recente, PositionPerf(2) quella precedente, e così via. Questo lo rende il mattone naturale per logiche operazione per operazione come le serie di perdite o i filtri di performance.

Il calcolo è lordo. Le commissioni di brokeraggio, gli spread modellati come costi e il finanziamento non vengono dedotti, quindi i risultati netti reali sono inferiori ai valori grezzi. Per il risultato cumulativo in denaro dell'intera strategia, usa invece STRATEGYPROFIT; POSITIONPERF descrive sempre una posizione alla volta.

Esempi

Esempio 1, leggere l'ultima operazione chiusa (ProBacktest)

probuilder
// Gain-to-cost ratio of the most recently closed position
positionPerformance = PositionPerf(1)
GRAPH positionPerformance * 100 AS "Last trade performance in percent"

Recupera la performance dell'ultima operazione completata e la traccia come percentuale. Questo è l'esempio di riferimento della documentazione originale con l'aggiunta di una riga di visualizzazione.

Esempio 2, uscita di emergenza sul drawdown dell'operazione aperta (ProOrder)

probuilder
// Close a long when the open position loses more than 2 percent
IF longonmarket AND positionperf(0) < -0.02 THEN
  SELL AT MARKET
ENDIF

La posizione aperta viene monitorata bar per bar e abbandonata quando la sua performance corrente scende sotto -0.02, un'uscita di sicurezza basata sulla percentuale che funziona indipendentemente da qualsiasi stop basato sui punti.

Esempio 3, ridurre la size dopo due operazioni perdenti consecutive (ProOrder)

probuilder
// Halve exposure after two losing trades in a row
baseSize = 4
IF positionperf(1) < 0 AND positionperf(2) < 0 THEN
  tradeSize = max(1, baseSize / 2)
ELSE
  tradeSize = baseSize
ENDIF

IF NOT onmarket AND close CROSSES OVER average[50](close) THEN
  BUY tradeSize CONTRACTS AT MARKET
ENDIF

Le due operazioni chiuse più recenti vengono esaminate prima di ogni ingresso. Dopo due perdite consecutive la strategia opera a metà size finché un'operazione non chiude in positivo.

Errori e insidie comuni

  • Rapporto, non percentuale. La funzione restituisce un rapporto, quindi un guadagno del 3 percento si legge come 0.03. Confrontarlo con numeri interi come positionperf(0) > 3 non si attiva quasi mai. Moltiplica per 100 solo per la visualizzazione.
  • Al lordo dei costi. Le spese e le commissioni sono escluse, quindi un'operazione che risulta leggermente positiva può essere una perdita netta in reale. Le soglie vicine allo zero sono le più interessate.
  • Nessuna posizione aperta. Senza nulla a mercato, la lettura dell'indice 0 non ha senso per la logica decisionale. Proteggi le letture di positionperf(0) con ONMARKET, LONGONMARKET, o SHORTONMARKET.
  • Ambito per singola posizione. POSITIONPERF non aggrega mai. Sommare i risultati a livello di conto iterando sugli indici è fragile; STRATEGYPROFIT fornisce già la cifra cumulativa in denaro.
  • STRATEGYPROFIT, profitto realizzato cumulativo della strategia in denaro.
  • POSITIONPRICE, il prezzo medio di ingresso della posizione aperta.
  • TRADEPRICE, il prezzo di ingresso dei singoli ordini.
  • TRADEINDEX, l'indice di bar in cui un ordine è stato eseguito.
  • COUNTOFPOSITION, la dimensione con segno della posizione aperta.
  • ONMARKET, vero mentre una qualsiasi posizione è aperta.
  • LONGONMARKET, vero mentre una posizione long è aperta.
  • SELL, chiude una posizione long.