Rejoignez-nous
ProBacktest/probacktest · proorder

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

probuilder
myCurrentProfit = STRATEGYPROFIT

Comment ç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)

probuilder
DEFPARAM CumulateOrders = true  // allow accumulated positions

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

Dè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)

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

Un 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)

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 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. STRATEGYPROFIT ne 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 avec POSITIONPERF quand le trade actuel importe.
  • Argent, pas points. La valeur est exprimée dans la devise du compte, donc des seuils comme > 1000 signifie 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 STRATEGYPROFIT fonctionne 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.
  • 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.