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
myCurrentProfit = STRATEGYPROFITCome 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)
DEFPARAM CumulateOrders = true // allow accumulated positions
myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
SELL 100 SHARES AT MARKET
ENDIFQuando 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)
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
SELL AT MARKET
EXITSHORT AT MARKET
QUIT
ENDIFUna 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)
// 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
ENDIFGRAPH 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.
STRATEGYPROFITsi muove solo quando un'operazione viene chiusa. Una strategia che lo controlla mentre è aperta una posizione grande vede informazioni obsolete. Combina conPOSITIONPERFquando conta l'operazione in corso. - Denaro, non punti. Il valore è denominato nella valuta del conto, quindi soglie come
> 1000indicano 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 STRATEGYPROFITfunziona in ProBacktest ma viene ignorato nell'esecuzione live di ProOrder, quindi i grafici diagnostici scompaiono quando il sistema opera in reale.
Istruzioni correlate
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.