Testeur de stratégie
Ce manuel explique comment effectuer un back-test d'une stratégie à l'aide du Testeur de stratégie de JForex4, en couvrant la configuration, les méthodes de test, la logique d'exécution des ordres, ainsi que la lecture des résultats.
1. Ouvrir le Testeur de stratégie
- Allez dans View dans la barre de menu supérieure et sélectionnez Strategy Tester.
- Le testeur s'ouvre dans un nouvel onglet, à côté de Orders, Positions et Messages.
- Sélectionnez votre stratégie dans le menu déroulant. Si elle n'a pas encore été ajoutée à l'espace de travail, cliquez sur Open pour l'ajouter d'abord.
- (Facultatif) Cliquez sur Edit pour ouvrir le code source de la stratégie dans l'éditeur de code — disponible uniquement si le fichier source
.javaest présent.
2. Configurer le test
Paramètres du compte
Cliquez sur Account pour définir le compte de trading simulé :
- Dépôt initial et devise du compte
- Effet de levier (Leverage)
- Niveau de coupure de marge (Margin Cut) (en % du levier utilisé)
- Stop loss sur les capitaux propres (MC Equity) — arrête automatiquement le test si les capitaux propres tombent sous ce niveau
Instruments
Cliquez sur Instruments pour choisir les instruments dont les données historiques doivent être téléchargées. Sélectionnez tous les instruments utilisés par la stratégie pour le trading ou les calculs.
Remarque : ce n'est pas ici que vous choisissez l'instrument que la stratégie négocie réellement — cela est défini séparément, soit codé en dur dans la stratégie, soit choisi ultérieurement dans la fenêtre Define Parameters.
Période d'échantillon et intervalle de temps
Choisissez la plage de dates historique (Sample Period) et l'intervalle de temps (Time Frame) :
- Ticks — utilise de véritables données de ticks historiques (le plus précis, le plus lent).
- Candles (Bougies) (1 minute / 1 heure / 1 jour) — plus rapide, utilise une interpolation pour générer des ticks à partir des données de bougies OHLC. Permet également de choisir Bid ou Ask comme base.
Mode visuel
Activez Visual Mode pour observer la simulation se dérouler sur un graphique en direct pendant son exécution. Lorsqu'il est activé, le bouton Start déverrouille également des commandes de lecture permettant de mettre le test en pause ou de ralentir sa vitesse.
Optimisation
Si votre stratégie possède des paramètres configurables, activez Optimization pour tester plusieurs combinaisons de paramètres en une seule exécution. Pour chaque paramètre (autre que l'instrument et la période), vous pouvez définir une valeur minimale, un pas d'incrémentation, et une valeur maximale — la stratégie est alors testée une fois pour chaque combinaison de pas.
Les résultats de chaque combinaison apparaissent dans la partie inférieure de la fenêtre du testeur. Cliquez avec le bouton droit sur n'importe quelle ligne pour l'annuler, copier ses paramètres, consulter son rapport, ou réutiliser ses paramètres d'entrée.
Profit Factor (Facteur de profit) = Profit brut ÷ Perte brute (les deux étant pris comme des nombres positifs). Par exemple, un profit brut de 1000 et une perte brute de 250 → Profit Factor = 4,0. Il s'agit toujours d'une valeur positive, et une valeur plus élevée indique généralement un rapport plus favorable entre les trades gagnants et les trades perdants.
3. Filtres de ticks (Tick Filters) (uniquement pour l'intervalle de temps Ticks)
Lorsque Ticks est sélectionné comme intervalle de temps, choisissez comment les ticks sont filtrés :
| Filtre | Comportement |
|---|---|
| Process all ticks (Traiter tous les ticks) | Le plus précis, mais le plus lent — rejoue chaque tick jamais enregistré. |
| Process all ticks with a different non-recurrent price (Traiter tous les ticks avec un prix différent, non récurrent) | Ignore les ticks qui répètent le même prix. |
| Process ticks on a market direction (Traiter les ticks selon une direction de marché) | Ignore les ticks à moins qu'ils ne représentent un véritable point de retournement/inflexion dans la direction du prix. |
| Process ticks on a predefined price range change (Traiter les ticks selon une variation de fourchette de prix prédéfinie) | Ignore les ticks jusqu'à ce que le prix se déplace d'une fourchette définie. |
| Process ticks with the specified time interval (Traiter les ticks selon un intervalle de temps spécifié) | Ignore les ticks en fonction d'un intervalle de temps défini. |
4. Méthodes d'interpolation (uniquement pour les intervalles de temps en bougies)
Disponibles lorsque l'intervalle de temps est une période de bougie (1 min, 1 heure, 1 jour). Plutôt que de télécharger des données de ticks réelles, le testeur génère des ticks synthétiques à partir des données de bougies OHLC — ce qui accélère considérablement les tests.
| Méthode | Description |
|---|---|
| Cubic Spline (Spline cubique) | La méthode la plus précise basée sur les bougies. Construit les ticks en utilisant les prix OHLC comme points de base via une interpolation par spline cubique. Peut occasionnellement générer plus de ticks qu'un flux réel n'en produirait pour des périodes très courtes (par exemple 10 secondes). |
| 4 ticks at OHLC (4 ticks au niveau OHLC) | La méthode d'interpolation la plus fiable parmi celles disponibles. Interpole chaque bougie en exactement 4 ticks de prix — Open, High, Low et Close. L'ordre des ticks High et Low dépend de celui qui est le plus proche du prix Open : celui qui est le plus proche de Open est traité comme le deuxième tick, avant l'autre. |
| Tick on Open (Tick sur Open) | Génère un seul tick utilisant le prix Open de la bougie. |
| Tick on Close (Tick sur Close) | Génère un seul tick utilisant le prix Close de la bougie. |
Exemple : si votre stratégie négocie sur des bougies de 1 minute et n'a pas besoin d'une granularité plus fine, sélectionnez 1 Min comme intervalle de temps et 4 ticks at OHLC comme méthode d'interpolation — la stratégie recevra alors exactement 4 ticks par minute (open, puis high/low dans l'ordre de proximité, puis close).
5. Paramètres personnalisés
- Save interpolated price data (Enregistrer les données de prix interpolées) — conserver ou supprimer les données de ticks générées par interpolation.
- Visual Mode (Mode visuel) : afficher/masquer Equity (capitaux propres), Balance (solde) et P/L (profit/perte) ; choisir un modèle (Template) de graphique enregistré ; définir la période (Period) par défaut affichée pendant le mode visuel.
- Messages : activer Save Messages to pour enregistrer les messages dans un fichier ; activer Save Reports to pour enregistrer les rapports dans un fichier ; activer Show Reports pour ouvrir automatiquement le rapport une fois le test terminé.
6. Logique de traitement des ordres
Comprendre précisément comment le testeur exécute les ordres est essentiel pour pouvoir faire confiance aux résultats de votre backtest.
Règle générale : les ordres sont exécutés au prix de l'ordre lui-même — sauf en cas de gap de marché (par exemple, lorsque le marché rouvre avec un écart après une interruption). Dans les situations de gap :
- Les ordres LIMIT sont exécutés à un prix meilleur que le prix de l'ordre.
- Les ordres STOP sans réglage MAX.SLIPPAGE sont exécutés au premier prix disponible après le gap.
- Les ordres STOP avec un réglage MAX.SLIPPAGE, si le prix d'exécution devait se situer hors de cette limite de glissement (slippage), sont automatiquement resoumis en tant qu'ordres LIMIT.
Logique d'exécution détaillée :
- Les ordres déclenchés du côté BID sont comparés aux prix de bougies BID interpolés ; les ordres déclenchés du côté ASK sont comparés aux prix de bougies ASK interpolés.
- Si un ordre (quel que soit son type) est déclenché par un tick de prix CLOSE, HIGH ou LOW, il est exécuté au prix de l'ordre lui-même, ajusté selon le dernier spread connu si nécessaire (cet ajustement s'applique lorsque le déclenchement provient du côté opposé).
- Si un ordre est déclenché par un tick de prix OPEN, il est exécuté à ce tick de prix OPEN du côté correspondant — sauf pour un ordre STOP avec MAX.SLIPPAGE défini : si le tick OPEN se situe hors de la limite de glissement du STOP, l'ordre est alors converti en ordre LIMIT.
Astuce : comme "4 ticks at OHLC" inclut toujours un tick Open par bougie, cette logique déclenchée par OPEN (et son exception STOP/MAX.SLIPPAGE) s'applique directement lorsque vous testez avec cette méthode d'interpolation.
7. Lancer le test
- Cliquez sur le bouton Start.
- La fenêtre Define Parameters s'ouvre — définissez ici les valeurs configurables de la stratégie (instrument, montant, glissement, stop loss/take profit, etc.). Les champs exacts affichés dépendent du code de votre stratégie.
- Cliquez sur Run pour lancer la simulation.
- Si le mode visuel est activé, utilisez les commandes de lecture pour mettre le test en pause ou le ralentir pendant son exécution.
- Une fois terminé (les tests basés sur des ticks volumineux peuvent prendre du temps), le rapport de test s'ouvre automatiquement dans votre navigateur (si Show Reports est activé).
8. Examiner les résultats
Le rapport comprend les résultats trade par trade, les courbes d'équité/de solde, ainsi que des statistiques récapitulatives telles que le Profit Factor décrit précédemment. Si vous avez effectué un balayage d'Optimization, comparez les rapports de chaque combinaison de paramètres à partir de la liste de résultats en bas de la fenêtre du testeur avant de choisir une configuration à retenir.
Bonnes pratiques
- Commencez par Ticks / "Process all ticks" pour votre passage de validation final — c'est la simulation la plus proche des conditions réelles du marché, même si c'est la plus lente.
- Utilisez l'interpolation de bougies pour les itérations rapides. Pendant le développement ou l'ajustement d'une stratégie, "4 ticks at OHLC" offre un retour rapide et fiable sans nécessiter le téléchargement de l'historique complet des ticks.
- Faites correspondre le choix de l'interpolation/du filtre de ticks à la logique de votre stratégie. Une stratégie qui réagit aux prix OPEN se comporte différemment avec "4 ticks at OHLC" qu'avec "Tick on Close" — assurez-vous que votre méthode de test correspond à ce qui déclenche réellement la logique de votre stratégie.
- Surveillez les interactions liées à MAX.SLIPPAGE. Si votre stratégie repose sur des ordres STOP, testez à la fois avec et sans MAX.SLIPPAGE pour comprendre comment les scénarios de gap et de tick OPEN pourraient convertir vos ordres en exécutions LIMIT.
- Rappelez-vous : les performances passées affichées dans le testeur ne constituent pas un indicateur fiable des performances futures — validez toujours davantage dans un environnement de démonstration avant de passer en réel.