Propriétés des stratégies

Chaque stratégie Pine possède un certain nombre de propriétés qui déterminent son comportement : 

 Ils sont disponibles dans les paramètres de la stratégie, dans l'onglet Propriétés :


Chacun des paramètres spécifiés dans les propriétés de la stratégie peut être modifié en éditant les arguments de l'appel de fonction strategy() dans le script Pine correspondant :

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick, process_orders_on_close, use_bar_magnifier)

Examinons chaque paramètre d'entrée dans le menu Propriétés et son paramètre correspondant dans le langage Pine :

1 - Capital initial (paramètre : initial_capital) représente le montant des fonds initialement disponibles pour que la stratégie puisse trader, dans la devise définie dans la devise de base. Par défaut, cette valeur est égale à 100 000. Il se peut que vous deviez augmenter cette valeur pour que les trades puissent avoir lieu sur certains symboles.

2 - Devise de base ( paramètre: currency ) spécifie la devise utilisée pour les calculs. Les résultats apparaissant dans l'onglet Strategy Tester (profit, perte, drawdown, etc.) sont exprimés dans cette devise. Les choix disponibles sont :

Default, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Si le choix Default est sélectionné, la stratégie utilisera la devise par défaut pour ce symbole et il n'y a pas de conversion de devise.

3 - Taille de l'ordre (paramètres : default_qty_value, default_qty_type). Ceci requiert une valeur et un mode de calcul. Notez que les valeurs calculées peuvent être soumises à des contraintes dues aux quantités minimales négociables pour le symbole :

  • Contrats (argument : strategy.fixed) - la stratégie entrera avec le nombre spécifié de contrats/actions/lots.
  • Montant en devise (argument : strategy.cash) - la stratégie entrera le montant spécifié en devise de base.
  • Pourcentage des fonds propres (argument : strategy.percent_of_equity) - la taille des positions sera calculée en pourcentage des fonds propres disponibles à l'ouverture du trade.

4 - Pyramidage (paramètre : pyramiding) spécifie le nombre maximum d'entrées successives autorisées dans la même direction. Lorsque le pyramidage est désactivé, la stratégie ne peut ouvrir qu'une seule position longue ou courte, même si les conditions d'entrée sont remplies. Le pyramidage n'affecte que les entrées effectuées à l'aide de la fonction strategy.entry(). Il n'a aucun effet sur les ordres créés à l'aide de strategy.order().

5 - Commission (paramètres : commission_type, commission_value). Il s'agit du montant payé en frais de trading pour chaque trad. Une valeur et un mode de calcul doivent être fournis. Notez que la commission est appliquée à la fois sur les entrées et les sorties, et que lorsqu'un pourcentage est utilisé, la commission calculée varie en fonction de la valeur de la transaction :

  • Pourcentage de la valeur de la transaction (argument : strategy.commission.percent) - impose une commission sur chaque ordre égale au pourcentage spécifié.
  • Devise par contrat (argument : strategy.commission.cash_per_contract) - impose une commission sur chaque contrat.
  • Devise par ordre (argument : strategy.commission.cash_per_order) - impose une commission sur chaque ordre.

6 - Vérification du prix pour les ordres limite

(paramètre : backtest_fill_limits_assumption) rend plus strictes les conditions d'entrée en position à l'aide d'ordres à cours limité. Par défaut, cette valeur est de 0, c'est-à-dire que les ordres limités sont exécutés sur les données historiques dès que le prix indiqué dans l'ordre est atteint. Si le paramètre n'est pas égal à zéro, alors les ordres limites ne peuvent entrer en position dans la barre que si le prix du marché a dépassé le niveau de l'ordre limite du nombre de ticks spécifié.

7 - Slippage (paramètre : slippage) spécifie la valeur en ticks à ajouter au prix d'exécution des ordres au marché ou stop. Il peut être utilisé pour tenir compte du spread.

8 - Marge pour les positions longues/courtes (paramètres : margin_long, margin_short) spécifie la marge pour chaque transaction, c'est-à-dire le pourcentage de la position que le trader doit financer. Par exemple, si la marge pour les positions longues est fixée à 25 %, le trader doit disposer de suffisamment de fonds pour couvrir 25 % de la transaction ouverte et peut potentiellement dépenser jusqu'à 400 % de ses fonds propres sur chaque transaction. Si une transaction a été ouverte et qu'elle commence à perdre de l'argent au point que les fonds du trader ne suffisent pas à couvrir sa part de la transaction, un appel de marge se produit et liquide de force une partie de la position initiale. Pour en savoir plus sur cette fonction et son mode de calcul, consultez cet article du Centre d'aide.

9 - Les options Recalculer indiquent à quelle fréquence la stratégie doit être recalculée. Par défaut, la stratégie est recalculée à la clôture de chaque barre, mais les options ci-dessous permettent également de la recalculer :

  • Après que l'ordre est rempli (paramètre : calc_on_order_fills) - permet à la stratégie d'effectuer un calcul supplémentaire de l'ordre intra-barre immédiatement après qu'un ordre a été rempli. Ce calcul supplémentaire est effectué à la fois sur les barres historiques et les barres en temps réel.
  • A chaque tick (paramètre : calc_on_every_tick). Par défaut, les stratégies ne calculent que sur la clôture des barres en temps réel. Ce paramètre permet à la stratégie de calculer à chaque mise à jour des barres en temps réel, comme le ferait un indicateur. Notez que les données de tick sont perdues lorsque le graphique est rafraîchi, donc les stratégies utilisant cette option seront repeintes. Ce paramètre n'affecte pas le comportement des stratégies sur les barres historiques. Notez également que les stratégies utilisant cette fonctionnalité n'afficheront pas de résultats réalistes sur les barres historiques, car elles ne contiennent pas de données de ticks.

10 - Exécution des ordres:

  • Utiliser le grossissement des barres (paramètre : use_bar_magnifier) - demande au Broker Emulator d'utiliser des prix plus précis et plus bas dans le temps pendant le backtesting de l'historique afin d'obtenir des résultats plus réalistes. Pour en savoir plus sur cette fonctionnalité, consultez le Centre d'aide.
  • A la fermeture de la barre (paramètre : process_orders_on_close). Si cette option est activée, la stratégie génère une tentative supplémentaire d'exécution des ordres après la fermeture d'une barre et la fin des calculs de la stratégie. Si les ordres sont des ordres de marché, l'émulateur de courtier les exécute avant l'ouverture de la barre suivante. Si les ordres sont dépendants du prix, ils ne seront exécutés que si les conditions de prix sont remplies. Cette option est utile si vous souhaitez exécuter les ordres en même temps qu'ils sont créés : par défaut, les ordres sont créés à la clôture de la barre actuelle et exécutés à l'ouverture de la barre suivante ; si cette option est activée, ils seront exécutés à la même clôture que celle à laquelle l'ordre a été créé. Il est à noter que le fait d'entrer en position au même moment que l'ordre est créé peut être trompeur, car cela ne serait pas possible dans le cadre d'une négociation réelle.
  • L'utilisation de l'OHLC standard (paramètre: fill_orders_on_standard_ohlc) oblige les stratégies exécutées sur les graphiques Heikin Ashi à remplir les ordres en utilisant les prix OHLC réels, pour des résultats plus réalistes. Par défaut, les scripts de stratégie remplissent les ordres en utilisant les prix du graphique, quel que soit le type de graphique. Pour les graphiques Heikin Ashi, ce paramètre empêche l'utilisation de prix synthétiques qui peuvent ne pas correspondre à la réalité. Par exemple, cette stratégie que nous avons appliquée au graphique quotidien NASDAQ:AAPL Heikin Ashi a exécuté un ordre le 2023-09-25 à un prix synthétique de 175,61 USD. Cependant, après avoir activé l'option "Utiliser l'OHLC standard", le même ordre a été exécuté au prix standard du graphique, soit 174,20 USD.