Iscriviti ora
ProBacktest/probacktest · proorder

STRATEGYPROFIT

STRATEGYPROFIT restituisce il profitto o la perdita cumulati, in denaro, di ogni operazione chiusa in una strategia ProBacktest o ProOrder. Le posizioni aperte sono escluse.

Sintassi

probuilder
myCurrentProfit = STRATEGYPROFIT

Come funziona

Ogni volta che la strategia chiude un'operazione, il risultato realizzato di quell'operazione viene sommato a un totale progressivo. STRATEGYPROFIT espone quel totale su ogni barra, espresso in denaro anziché in punti o in percentuale. Un valore di 0 sulle prime barre significa semplicemente che nessuna operazione è ancora stata chiusa.

Contribuiscono solo le operazioni chiuse. Una posizione ancora aperta, per quanto in profitto, non modifica il valore fino alla sua chiusura. Per leggere la performance non realizzata della posizione corrente, usa POSITIONPERF invece. I due sono complementari: STRATEGYPROFIT descrive il passato, POSITIONPERF descrive il presente.

La variabile è comunemente usata per logiche dipendenti dall'equity, per esempio fermare il sistema dopo una soglia di drawdown, ridurre la position size dopo una serie di perdite, o bloccare una sessione una volta raggiunto un obiettivo di profitto. Quando le posizioni sono accumulate su più bar, imposta DEFPARAM CumulateOrders = true così il motore mantiene aperta la posizione combinata e realizza il profitto come la logica prevede.

Esempi

Esempio 1, Uscita parziale al raggiungimento di una soglia di profitto (ProBacktest)

probuilder
DEFPARAM CumulateOrders = true  // allow accumulated positions

myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
  SELL 100 SHARES AT MARKET
ENDIF

Quando il profitto realizzato di tutte le operazioni chiuse supera 1000 unità di valuta, la strategia vende 100 azioni a mercato. Questo è il pattern d'uso canonico tratto dal riferimento ufficiale.

Esempio 2, Equity stop che arresta la strategia (ProOrder)

probuilder
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
  SELL AT MARKET
  EXITSHORT AT MARKET
  QUIT
ENDIF

Una protezione per la conservazione del capitale. Quando la perdita realizzata supera il limite, qualsiasi posizione aperta viene chiusa e QUIT impedisce alla strategia di inserire ulteriori ordini.

Esempio 3, Tracciare la curva equity realizzata (ProBacktest)

probuilder
// Inspect the realized equity curve while backtesting
GRAPH STRATEGYPROFIT AS "Realized PnL"

IF NOT onmarket AND close > average[50](close) THEN
  BUY 1 CONTRACT AT MARKET
  SET STOP LOSS 30
  SET TARGET PROFIT 60
ENDIF

GRAPH disegna il profitto realizzato progressivo sotto il grafico del backtest, il che rende immediato vedere quando la strategia ha guadagnato o restituito denaro.

Errori e insidie comuni

  • Le posizioni aperte sono invisibili. STRATEGYPROFIT si muove solo quando un'operazione viene chiusa. Una strategia che lo controlla mentre è aperta una posizione grande vede informazioni obsolete. Combina con POSITIONPERF quando conta l'operazione in corso.
  • Denaro, non punti. Il valore è denominato nella valuta del conto, quindi soglie come > 1000 indicano 1000 unità di valuta, non 1000 punti. La stessa soglia si comporta in modo molto diverso su strumenti con valori del punto differenti.
  • I valori del backtest e quelli reali sono diversi. In un'esecuzione reale di ProOrder il totale riparte da zero quando la strategia viene avviata, non eredita la storia del backtest. Le regole basate sull'equity si comportano quindi in modo diverso subito dopo l'avvio.
  • GRAPH is backtest only. GRAPH STRATEGYPROFIT funziona in ProBacktest ma viene ignorato nell'esecuzione live di ProOrder, quindi i grafici diagnostici scompaiono quando il sistema opera in reale.
  • POSITIONPERF, performance non realizzata della posizione attualmente aperta.
  • PROFIT, configurazione del take profit percentuale per una posizione.
  • LOSS, configurazione dello stop loss percentuale per una posizione.
  • CumulateOrders, DEFPARAM che controlla se gli ordini si accumulano in una sola posizione.
  • GRAPH, traccia un valore sotto il grafico del backtest per l'ispezione.
  • ONMARKET, vero mentre una qualsiasi posizione è aperta.
  • TRADEPRICE, prezzo di ingresso della posizione corrente.
  • COUNTOFPOSITION, dimensione della posizione attualmente aperta.