STRATEGYPROFIT
STRATEGYPROFIT renvoie le gain ou la perte cumulé, en argent, de chaque trade clôturé dans une stratégie ProBacktest ou ProOrder. Les positions ouvertes sont exclues.
Syntaxe
myCurrentProfit = STRATEGYPROFITComment ça marche
Chaque fois que la stratégie clôture un trade, le résultat réalisé de ce trade est ajouté à un total cumulé. STRATEGYPROFIT expose ce total sur chaque bar, exprimé en argent plutôt qu'en points ou en pourcentage. Une valeur de 0 sur les premiers bars signifie simplement qu'aucun trade n'a encore été clôturé.
Seuls les trades clôturés comptent. Une position encore ouverte, aussi profitable soit-elle, ne modifie pas la valeur avant sa sortie. Pour lire la performance non réalisée de la position en cours, utilisez POSITIONPERF à la place. Les deux sont complémentaires : STRATEGYPROFIT décrit le passé, POSITIONPERF décrit le présent.
La variable sert couramment à une logique dépendante de l'equity, par exemple arrêter le système après un seuil de drawdown, réduire la taille après une série de pertes, ou verrouiller une séance une fois un objectif de gain atteint. Quand les positions sont accumulées sur plusieurs bars, définissez DEFPARAM CumulateOrders = true de sorte que le moteur garde la position combinée ouverte et réalise le profit comme la logique l'attend.
Exemples
Exemple 1, Sortie progressive une fois un seuil de gain atteint (ProBacktest)
DEFPARAM CumulateOrders = true // allow accumulated positions
myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
SELL 100 SHARES AT MARKET
ENDIFDès que le gain réalisé de tous les trades clôturés dépasse 1000 unités de devise, la stratégie vend 100 actions au marché. C'est le schéma d'utilisation canonique issu de la référence officielle.
Exemple 2, Equity stop qui arrête la stratégie (ProOrder)
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
SELL AT MARKET
EXITSHORT AT MARKET
QUIT
ENDIFUn garde-fou de préservation du capital. Quand la perte réalisée dépasse la limite, toute position ouverte est fermée et QUIT empêche la stratégie de passer d'autres ordres.
Exemple 3, Tracer la courbe d'equity réalisée (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 trace le gain réalisé cumulé sous le graphique de backtest, ce qui permet de voir facilement quand la stratégie a gagné ou rendu de l'argent.
Erreurs et pièges courants
- Les positions ouvertes sont invisibles.
STRATEGYPROFITne bouge que lorsqu'un trade est clôturé. Une stratégie qui le consulte alors qu'une grosse position est ouverte lit une information périmée. Combinez avecPOSITIONPERFquand le trade actuel importe. - Argent, pas points. La valeur est exprimée dans la devise du compte, donc des seuils comme
> 1000signifie 1000 unités de devise, pas 1000 points. Le même seuil se comporte très différemment selon les instruments dont la valeur du point diffère. - Les valeurs en backtest et en réel diffèrent. Lors d'une exécution en réel sous ProOrder, le total repart de zéro au lancement de la stratégie, il n'hérite pas de l'historique du backtest. Les règles fondées sur l'equity se comportent donc différemment juste après le déploiement.
- GRAPH is backtest only.
GRAPH STRATEGYPROFITfonctionne dans ProBacktest mais est ignoré en exécution réelle ProOrder, de sorte que les tracés de diagnostic disparaissent dès que le système passe en réel.
Instructions liées
POSITIONPERF, performance latente de la position actuellement ouverte.PROFIT, configuration du take profit en pourcentage pour une position.LOSS, configuration du stop loss en pourcentage pour une position.CumulateOrders, DEFPARAM contrôlant si les ordres s'accumulent en une seule position.GRAPH, trace une valeur sous le graphique du backtest pour inspection.ONMARKET, vrai tant qu'une position est ouverte.TRADEPRICE, prix d'entrée de la position courante.COUNTOFPOSITION, taille de la position actuellement ouverte.