J'ai bien ajouté la stratégie à mon graphique, mais cela ne génère aucun ordre
Si les onglets "Liste des transactions" et "Vue d'ensemble" du testeur de stratégie affichent "Aucune donnée" après que vous ayez ajouté une stratégie au graphique, il est probable qu'elle ne simule aucun ordre, ce qui entraîne l'absence de données pour remplir les onglets. Si votre script ne génère pas d'ordres, cela peut être dû à l'une des raisons suivantes:
Le script n'est pas classé comme une stratégie ou n'utilise pas de commandes qui créent des ordres
Le backtesting avec le Strategy Tester ne fonctionne qu'avec les stratégies Pine Script™, qui utilisent la fonction `strategy()`pour leur déclaration. Les scripts déclarés avec indicator()` ou `library()` ne peuvent pas interagir avec le module Strategy Tester.Les scripts déclarés comme stratégies doivent utiliser les commandes de placement d'ordre `strategy.*` (par exemple, `strategy.order()` ou `strategy.entry()`) pour simuler les ordres et afficher les données dans le testeur de stratégie, indépendamment de tout autre signal d'achat ou de vente que l'auteur du script peut avoir inclus dans le code.La stratégie ne dispose pas d'un capital suffisant pour ouvrir une positionPour qu'une stratégie entre en position, elle doit disposer de suffisamment d'argent pour acheter le nombre spécifié de contrats/lots/actions/unités. Elle n'entrera pas en position si elle ne dispose pas d'un capital suffisant pour couvrir le coût. Par exemple, si le capital initial d'une stratégie est de 1 000 USD et que la taille de l'ordre est d'un contrat, elle ne peut pas prendre position à moins que le prix de l'actif ne tombe en dessous de 1 000 USD, car elle n'a pas les moyens d'effectuer l'ensemble de la transaction. Les stratégies essaieront toujours d'acheter le nombre spécifié de contrats/actions/lots/unités et rien de moins.Remarque importante sur le backtesting des futures : Les symboles des Futures ont généralement ce qu'on appelle une Unité de Contrat (représentée comme la Valeur du Point sur TradingView et accessible dans Pine via la variable `syminfo.pointvalue`). Comme pour les autres symboles, le prix brut sur le graphique représente le prix d'une unité de la marchandise négociée. Cependant, les contrats à terme ont une quantité déterminée que chacun représente, de sorte qu'un achat à l'unité n'est généralement pas possible. Pour calculer le capital requis pour un contrat, il faut multiplier le prix du graphique par la valeur du point.Pour démontrer les effets de la valeur du point sur les stratégies qui opèrent sur les symboles de contrats à terme, examinons le symbole CME_MINI:ES1 ! qui représente le contrat à terme ES avec la meilleure liquidité et qui a une valeur du point de 50 :Dans l'exemple ci-dessous, la stratégie que nous avons ajoutée au graphique est entrée en position à 4000 USD précisément et est sortie à 4500 USD. Le montant réel dépensé pour le contrat au prix d'entrée était de 4000 USD multiplié par la valeur du point de 50, soit 200 000 USD. Lorsque la stratégie a clôturé sa position au prix de sortie, le montant reçu était de 4500 USD * 50 = 225 000 USD, soit un profit de 25 000 USD, que nous pouvons confirmer en consultant la colonne "Profit" de l'onglet "Liste des transactions" dans le testeur de stratégie :Si la stratégie avait une valeur de capital Initial inférieure à 200 000 USD dans ce cas, elle n'aurait pas pu placer l'ordre puisqu'elle ne pouvait pas se permettre le prix d'entrée, qui était 50 fois le prix indiqué sur le graphique. Pour simuler la position, nous devons augmenter le capital initial ou diminuer les valeurs Margin Long/Short pour permettre à la stratégie d'y faire face.La stratégie renvoie une erreur d'exécutionSi une stratégie rencontre un problème lors de ses calculs, elle génère une erreur d'exécution et affiche un point d'exclamation rouge dans le coin supérieur gauche du volet graphique contenant la stratégie. Les erreurs d'exécution empêchent le script de poursuivre ses calculs et donc de simuler des ordres. Les différentes erreurs d'exécution de Pine ont des causes diverses et des solutions potentielles. En cliquant sur le point d'exclamation, le message d'erreur du script s'affiche.Les conditions requises pour placer les ordres de la stratégie n'ont pas été rempliesL'une des causes possibles du fait qu'une stratégie n'affiche aucune donnée est qu'aucune condition n'a déclenché d'ordre pendant toute la durée du test. Dans ce cas, il n'y aurait aucune entrée sur le graphique parce qu'il n'y avait pas d'ordre à exécuter. Les utilisateurs peuvent remédier à ce problème en modifiant les conditions dans le code source de la stratégie. Il est souvent utile d'inspecter visuellement l'historique des conditions d'ordre d'une stratégie en les traçant sur le graphique.Le script ci-dessous utilise la fonction `plotshape()` de Pine pour tracer des croix bleues et rouges au-dessus des barres lors de l'apparition des conditions long et short, ce qui nous permet d'inspecter leur historique sur le graphique ://@version=5strategy('My Strategy', overlay = true)longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))if longCondition strategy.entry('Long', strategy.long)plotshape(longCondition, color=color.new(color.blue, 0))shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))if shortCondition strategy.entry('Short', strategy.short)plotshape(shortCondition, color=color.new(color.red, 0))
JavaPour plus d'informations sur ce sujet, consultez la page du manuel de l'utilisateur consacrée au débogage. Les propriétés de la stratégie sont incorrectesChaque stratégie possède plusieurs paramètres qui régissent ses règles d'ouverture des ordres. Les auteurs peuvent définir ces paramètres à partir du code source d'une stratégie, et les utilisateurs peuvent les remplacer par les entrées de l'onglet "Propriétés" des paramètres de la stratégie.REMARQUE : Il existe plusieurs endroits dans le code source d'une stratégie où les utilisateurs peuvent définir le nombre de contrats/actions/lots/unités pour ses ordres :- Les paramètres de la fonction `strategy()`permettent aux utilisateurs de définir la quantité et le type de transaction par défaut, ce qui définit les valeurs par défaut dans l'onglet "Propriétés". Les utilisateurs peuvent modifier ces valeurs en ajustant les entrées "Taille de l'ordre".
- Les commandes de placement d'ordres qui produisent des ordres d'entrée, telles que `strategy.entry()`, peuvent définir la quantité de transaction sur une base d'ordre par ordre. Dans ce cas, les changements apportés à l'entrée dans l'onglet "Propriétés" n'affecteront pas la taille de l'ordre de la stratégie.
- Si le "Type d'ordre" d'une stratégie est défini sur "Contrats" (équivalent à `strategy.fixed` comme type_de_quantité_par_défaut dans le code source), la taille de l'ordre doit être supérieure à 1 pour la plupart des symboles. Certaines crypto-monnaies autorisent les tailles fractionnaires. Par exemple, une taille d'ordre de 0,1 est valable pour BTCUSD mais pas pour AAPL ou EURUSD.
- La taille de l'ordre doit être positive ; les nombres négatifs provoqueront des erreurs d'exécution, et une valeur de 0 n'aura aucun effet.
- La taille totale de la position (nombre de contrats) ne peut pas dépasser 1e12. Les stratégies ne simuleront pas de nouveaux ordres si la taille de la position dépasse ce nombre.