Rejoignez-nous
ProBacktest/probacktest · proorder

TRADEPRICE

TRADEPRICE dans ProBacktest et ProOrder renvoie le prix d'exécution d'un trade passé. TRADEPRICE(1) est le plus récent. Syntaxe, exemples et pièges abordés.

Syntaxe

probuilder
TRADEPRICE
probuilder
TRADEPRICE(N)

Paramètres

NomTypePar défautDescription
Nentier1Indice de l'ordre, compté à rebours depuis l'exécution la plus récente. TRADEPRICE(1) est le dernier ordre, TRADEPRICE(2) celui qui le précède.

Comment ça marche

Chaque ordre exécuté dans une stratégie, entrées comme sorties, est enregistré avec son prix d'exécution. TRADEPRICE lit cet historique : sans argument ou avec N = 1 il renvoie le dernier prix d'exécution, et des valeurs plus élevées de N pas plus loin en arrière.

L'usage le plus courant est de mesurer de combien le prix a évolué depuis l'entrée, par exemple close - tradeprice >= 15 * pointsize comme déclencheur pour resserrer un stop. Dans les stratégies de pyramidage sous CumulateOrders, TRADEPRICE(1) marque le dernier renforcement, ce qui permet d'espacer les nouvelles entrées d'une distance minimale par rapport à lui. TRADEINDEX est la fonction complémentaire qui renvoie l'indice de bar du même ordre.

TRADEPRICE indexe les ordres individuels, pas la position agrégée. Lorsque plusieurs entrées ont été cumulées en une seule position, chacune conserve son propre prix de trade, tandis que POSITIONPRICE renvoie le prix moyen pondéré de la position ouverte.

Exemples

Exemple 1, Pyramidage avec distance et espacement en barres (ProBacktest)

probuilder
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
exit = myMACD crosses under 0

// Initial entry on the MACD signal
IF NOT LongOnMarket AND long THEN
    BUY 1 CONTRACTS AT MARKET
ENDIF

If LongOnMarket AND exit THEN
    SELL AT MARKET
ENDIF

// Add a contract once price is 10 points above the last fill
// and at least 5 bars have passed since it
IF BARINDEX - TRADEINDEX(1) > 5 AND Close - TRADEPRICE(1) > 10 AND LongOnMarket THEN
    BUY 1 CONTRACTS AT MARKET
ENDIF

// Trail the whole position
SET STOP %TRAILING 1.5

TRADEPRICE(1) et TRADEINDEX(1) espacent les entrées complémentaires par le prix et par le temps. C'est l'exemple de la référence officielle.

Exemple 2, Passage au seuil de rentabilité mesuré depuis l'entrée (ProOrder)

probuilder
// Move the stop to entry after 20 points of open profit
IF longonmarket THEN
  IF close - tradeprice >= 20 * pointsize THEN
    SET STOP BREAKEVEN
  ENDIF
ENDIF

La forme sans argument fait référence à la dernière exécution, ici l'entrée long, la comparaison mesure donc le profit latent en points depuis le prix d'exécution.

Exemple 3, Sortie d'urgence en pourcentage depuis la dernière exécution (ProOrder)

probuilder
// Close the long if price drops 2 percent below the last entry
IF longonmarket AND close < TRADEPRICE(1) * 0.98 THEN
  SELL AT MARKET
ENDIF

Exprimer la sortie en pourcentage du prix d'entrée enregistré rend la règle transposable entre instruments ayant des valeurs de point différentes.

Erreurs et pièges courants

  • Des ordres, pas des positions. N compte les exécutions individuelles, sorties incluses. Après la clôture d'une position, TRADEPRICE(1) renvoie à l'exécution de sortie, et non à l'ancienne entrée. Pour le prix moyen de la position actuellement ouverte, utilisez POSITIONPRICE.
  • Appels non protégés avant tout trade. Au début d'un backtest, avant la première exécution, il n'y a pas d'historique de trades à lire. Encadrez la logique TRADEPRICE par un garde ONMARKET ou LONGONMARKET pour qu'elle ne s'exécute qu'avec une position réelle derrière elle.
  • Les entrées cumulées divergent de la moyenne. Sous CumulateOrders, close - tradeprice mesure la distance depuis le dernier renforcement, alors que le gain dépend du prix moyen de la position. Mélanger les deux produit des stops qui paraissent plus serrés ou plus larges que prévu.
  • Exécutions en backtest contre exécutions en réel. ProBacktest enregistre des prix d'exécution idéalisés. Les exécutions ProOrder en réel incluent le slippage, les seuils de distance calibrés au tick peuvent donc se comporter différemment en production.
  • TRADEINDEX, l'index de barre d'un trade passé, même indexation que TRADEPRICE.
  • POSITIONPRICE, le prix moyen pondéré de la position ouverte.
  • POSITIONPERF, la performance de la position ouverte.
  • LONGONMARKET, vrai tant qu'une position long est ouverte.
  • ONMARKET, vrai tant qu'une position est ouverte.
  • BREAKEVEN, déplace le stop ou l'objectif au prix d'entrée.
  • %TRAILING, trailing stop en pourcentage.
  • CumulateOrders, permet à plusieurs entrées de s'accumuler en une seule position.