Apparence
02 — Concevoir une stratégie
De quoi une stratégie est faite
Une stratégie, dans Evotrade, c'est :
- des règles d'entrée et de sortie, exprimées sous forme de graphe d'états — quand ouvrir une position, quand la fermer ;
- une méthode de dimensionnement — combien acheter ou vendre à chaque signal ;
- l'univers visé : une ou plusieurs classes d'actifs, et éventuellement une liste de symboles ;
- éventuellement un modèle de coûts propre à la stratégie (frais, slippage, spread), sinon ceux de la classe d'actifs s'appliquent.
Une stratégie ne contient pas de symbole ni de période de test : ces deux-là sont choisis au moment du backtest. La même stratégie peut donc être testée sur plusieurs instruments et plusieurs périodes.
Deux façons de la créer
Depuis Stratégies → Créer une nouvelle stratégie, la page Concevoir une stratégie de trading propose deux onglets :
- Assistant guidé (par défaut) — un formulaire en cinq étapes pour les stratégies simples : une condition d'entrée (long ou short), une condition de sortie, un stop-loss et un take-profit. C'est le chemin le plus rapide, et il suffit pour une bonne part des idées classiques.
- Éditeur avancé — la toile où l'on dessine le graphe complet : plusieurs états, conditions ET/OU imbriquées, timeframe par condition, trailing stop, transitions de pur enchaînement.
Passer de l'assistant à l'éditeur avancé conserve tout ce que vous avez déjà saisi. Le retour en arrière n'est proposé que tant que le graphe reste exprimable dans l'assistant.
Le graphe d'une stratégie encore en brouillon se modifie ensuite depuis sa page, avec le bouton Éditer les règles.
L'assistant guidé, étape par étape
| Étape | Ce que vous renseignez |
|---|---|
| 1. Informations générales | Nom, description libre, classes d'actifs, symboles visés (vide = tous) |
| 2. Règle d'entrée | Indicateur, comparaison, cible de comparaison, sens (long ou short) |
| 3. Règle de sortie | Indicateur, comparaison, cible de comparaison |
| 4. Capital & risque | Méthode de dimensionnement et sa valeur, stop-loss, take-profit |
| 5. Résumé | Relecture avant création |
Une comparaison se lit comme une phrase : indicateur descend sous / monte au-dessus / croise au-dessus / croise en-dessous d'une cible. La cible est soit une valeur fixe, soit le prix (la dernière clôture), soit un autre indicateur.
La différence entre « monte au-dessus » et « croise au-dessus » compte : le premier est vrai tant que la condition tient, le second uniquement sur la barre du franchissement. Une condition « monte au-dessus » se déclenchera donc à répétition tant qu'elle reste vraie — ce qui, combiné au pyramidage, empile les lots.
Génération par IA
À la première étape, décrivez la stratégie en français (« acheter quand le prix croise au-dessus de sa moyenne mobile 20 jours, vendre au croisement inverse, avec 5 % de stop-loss ») puis cliquez sur Générer avec l'IA. La proposition remplit les étapes suivantes ; rien n'est enregistré à ce stade. Relisez-la, corrigez ce qui ne correspond pas à votre idée, puis créez la stratégie.
L'IA ne produit que des stratégies simples (un seul état). Si sa proposition est trop pauvre, prenez-la comme point de départ et enrichissez-la dans l'éditeur avancé.
L'éditeur avancé : le graphe d'états
Les règles sont un graphe : des états (les nœuds) reliés par des transitions (les flèches).
- Un état est un point de la logique de la stratégie :
hors position,signal armé,en position,refroidissement… L'un d'eux est l'état initial. - Chaque état porte une liste ordonnée de transitions sortantes. À chaque barre, les transitions de l'état courant sont évaluées dans l'ordre ; la première dont la condition est vraie l'emporte. L'ordre encode donc la priorité — les flèches se réordonnent dans le panneau latéral de l'état.
- Une transition mène à un état d'arrivée et porte une action :
| Action | Effet |
|---|---|
| Entrée long | Ouvre (ou renforce) une position à la hausse |
| Entrée short | Ouvre (ou renforce) une position à la baisse |
| Sortie | Ferme la position |
| Aucune — enchaînement pur | Change d'état sans passer d'ordre (par exemple « armer » un signal) |
Les sorties sont toujours évaluées avant les entrées sur une même barre : un stop-loss qui protège des lots ouverts ne peut jamais être court-circuité par une entrée gourmande.
Une stratégie « simple » n'est rien d'autre qu'un graphe à un seul état, avec deux transitions qui bouclent sur lui-même. Ce n'est pas un cas particulier, juste le sous-ensemble trivial du modèle.
Le déclencheur d'une transition
Une transition se déclenche soit sur des conditions indicateurs, soit — pour une transition Sortie uniquement — sur des seuils en %.
Les conditions forment un arbre ET/OU : chaque groupe combine ses enfants avec ET ou OU, et les groupes s'imbriquent librement. Une feuille de cet arbre porte exactement un test, de l'un des trois types suivants.
1. Condition sur indicateur — indicateur + comparaison + cible, avec éventuellement un timeframe propre à cette condition.
2. Filtre calendaire — un test sur l'horodatage de la barre courante, à combiner typiquement en ET avec une condition d'entrée : « le même signal, mais jamais le vendredi ».
| Champ | Valeurs |
|---|---|
| Filtre temporel sur | Jour de la semaine, Mois, Heure |
| Opérateur | restreindre à ou exclure |
| Valeurs | La liste des jours / mois / heures concernés |
| Fuseau horaire | Optionnel, intraday uniquement (voir ci-dessous) |
Les horodatages sont lus en UTC par défaut. Un fuseau explicite (par exemple America/New_York) n'est accepté que si la stratégie tourne sur des barres intraday : sur des barres journalières ou hebdomadaires, l'horodatage est une étiquette de date et non un instant — le convertir ferait basculer une barre du lundi au dimanche soir. Pour la même raison, un filtre plus fin que les barres du run est refusé : l'heure exige des barres horaires ou plus fines, le jour de la semaine des barres journalières ou plus fines. Ces refus sont volontaires : évalué en silence, un tel filtre serait toujours faux et la stratégie ne traderait jamais — ce qui, sur un rapport, ressemble à de la prudence.
Attention : un filtre calendaire est un vecteur classique de surapprentissage (retirer le mois d'août parce que la courbe y était moche). En ajouter un et relancer compte comme un essai de sélection au même titre que n'importe quel autre run — voir le compteur d'essais dans 06 — Hypothèses et limites.
3. Temps passé dans l'état — le nombre de barres écoulées depuis l'entrée dans l'état courant (au moins / au plus N barres), la barre d'entrée comptant pour 0. Toute transition qui se déclenche remet le compteur à zéro, y compris une transition qui boucle sur le même état.
C'est la brique du délai de refroidissement : faites sortir la position vers un état dédié, et conditionnez la sortie de cet état à « au moins 5 barres ». Sans cela, une stratégie stoppée le lundi se remet en position dès l'ouverture du mardi — ce qu'aucun opérateur ne ferait, et qui gonfle artificiellement le nombre de trades.
Les seuils en %, eux, sont réservés aux transitions Sortie :
| Seuil | Effet |
|---|---|
| Stop-loss (%) | Ferme un lot dès que le prix s'éloigne de X % dans le mauvais sens |
| Take-profit (%) | Ferme un lot dès que le prix gagne X % |
| Trailing stop (%) | Ferme un lot quand le prix recule de X % depuis le meilleur prix atteint depuis l'entrée de ce lot |
Ils sont évalués par lot, chacun contre son propre prix d'entrée, et à l'intérieur de la barre (sur le plus haut et le plus bas), pas seulement à la clôture. Laissez vides les seuils que vous n'utilisez pas.
Plusieurs timeframes dans une même stratégie
Chaque condition — et chaque cible de comparaison — peut viser son propre timeframe. Le backtest s'exécute sur le plus fin des timeframes référencés (journalier si aucun n'est précisé), les séries plus grossières étant reconstruites à partir de celui-ci.
Aucun regard sur le futur n'est possible : une barre plus grossière n'est visible qu'une fois clôturée. Une règle horaire ne voit jamais la barre journalière encore en formation.
Usage typique : un filtre de tendance en journalier (« le prix est au-dessus de sa moyenne mobile 50 jours ») combiné en ET avec un déclencheur horaire (« RSI 14 sous 30 »).
Ce que l'éditeur refuse
La validation a lieu à la création, pas au moment du backtest, et les erreurs sont signalées directement sur l'état ou la flèche fautive :
- deux états portant le même nom, ou un état sans nom ;
- un état initial qui ne correspond à aucun état déclaré ;
- une transition qui pointe vers un état non déclaré ;
- un état puits : aucune transition sortante, donc impossible d'en sortir ;
- une transition sans condition ni seuil ;
- des seuils en % sur une transition qui n'est pas une Sortie ;
- un groupe ET/OU vide, une condition incomplète, un seuil négatif ou supérieur à 100 %.
Le bouton Réorganiser recalcule la disposition automatique du graphe ; la position des nœuds n'est pas enregistrée, seule la logique l'est.
Un exemple concret
Une stratégie qui achète les creux horaires du RSI dans une tendance journalière haussière, et sort soit sur reprise du RSI, soit sur un trailing stop de 5 % :
- État
hors position(initial), une transition sortante :- vers
en position, action Entrée long, condition ET de deux feuilles :- moyenne mobile simple 50 descend sous le prix, timeframe journalier (autrement dit : le prix est au-dessus de sa moyenne mobile 50 jours) ;
- RSI 14 descend sous la valeur fixe 30, timeframe horaire.
- vers
- État
en position, deux transitions sortantes, dans cet ordre :- vers
hors position, action Sortie, seuil Trailing stop = 5 % ; - vers
hors position, action Sortie, condition : RSI 14 monte au-dessus de 55, timeframe horaire.
- vers
Le timeframe de base de cette stratégie est l'horaire — le plus fin des deux référencés. Le trailing stop est placé en premier parce que les transitions sont évaluées dans l'ordre : la protection passe avant la sortie discrétionnaire.
Les indicateurs
Le sélecteur d'indicateurs propose ~98 indicateurs, chacun avec ses paramètres, leurs valeurs par défaut et leurs bornes, et une indication de tracé (superposé au prix ou dans un panneau séparé).
- Seuls les indicateurs calculables à partir des seuls cours de clôture sont proposés. Ceux qui ont besoin de l'ouverture, du plus haut, du plus bas ou du volume — ATR, ADX, Stochastique, CCI, VWAP, figures chartistes — ne sont pas disponibles comme conditions. L'ATR reste calculé en interne pour le dimensionnement basé sur le risque, et les plus hauts / plus bas servent bien aux stops intrabar : c'est le catalogue des conditions qui est limité aux clôtures, pas le moteur entier.
- Les quatre indicateurs historiques gardent leur nom en majuscules et leurs paramètres d'origine : RSI, SMA, EMA (paramètre période) et MACD (périodes rapide, lente et de signal). Tous les autres portent le nom et les paramètres affichés dans le sélecteur.
- Un paramètre hors bornes est refusé à la création. Attention cependant : les bornes sont génériques par type (1 à 1000 pour un entier), pas ajustées indicateur par indicateur. Une valeur acceptée n'est pas forcément une valeur sensée.
Dimensionnement des positions
| Méthode | Comportement |
|---|---|
| Montant fixe (Quantité fixe dans l'éditeur avancé) | Chaque trade porte sur la même quantité d'unités |
| % du capital | Chaque trade engage X % du capital courant, recalculé à chaque fois |
| Basé sur le risque (ATR) | La taille est inversement proportionnelle à la volatilité : chaque trade risque le même pourcentage de capital quel que soit le symbole |
Les formulaires ne proposent que les deux premières méthodes. Le dimensionnement basé sur l'ATR est conservé tel quel s'il provient d'une stratégie importée (voir Exporter et importer plus bas) — l'éditeur l'affiche alors comme dimensionnement importé, sans le réécrire.
Aucun levier : la contrainte de capital
Le moteur tient un compte de trésorerie explicite. Une entrée qui dépasserait le cash disponible est réduite à ce qui est finançable, et rejetée s'il ne reste rien. Les deux cas sont comptés dans les résultats (entrées réduites, entrées rejetées) — si ces compteurs sont élevés, la stratégie qui a réellement tourné n'est pas celle que vous avez configurée : elle a été bridée par le capital.
Une vente à découvert immobilise un montant équivalent ; il n'y a ni levier, ni marge, ni intérêts sur le cash non investi.
Pyramidage : plusieurs lots
Si un signal d'entrée survient alors qu'une position dans le même sens est déjà ouverte, le moteur ajoute un lot au lieu d'ignorer le signal. Chaque lot conserve son propre prix d'entrée, ses frais et son extrême de trailing — rien n'est moyenné. Les seuils en % sont évalués lot par lot, si bien qu'un lot peut être stoppé pendant que les autres restent ouverts ; une sortie sur condition d'indicateur, elle, ferme tous les lots.
Un signal d'entrée dans le sens opposé à une position ouverte est ignoré : le moteur ne retourne jamais une position en un seul ordre.
Coûts de transaction
Chaque backtest applique des frais, du slippage et un spread — jamais nuls. Les valeurs par défaut dépendent de la classe d'actifs ; elles sont listées, avec leur mode d'application et ce qu'elles ne modélisent pas, dans 06 — Hypothèses et limites.
Une stratégie peut porter son propre modèle de coûts, plus proche de celui de votre courtier. Les formulaires ne l'éditent pas : il se transmet en important une stratégie qui en contient un, et l'éditeur affiche alors modèle de coûts importé. Le modèle réellement appliqué est rappelé sur chaque résultat de backtest.
Voir le Lexique pour la définition d'un point de base (bps).
Exporter et importer une stratégie
La page d'une stratégie a un bouton Exporter JSON : il affiche le document portable — nom, description, graphe de règles, dimensionnement, univers visé et modèle de coûts — avec un bouton Copier.
Importer du JSON, dans l'onglet Éditeur avancé de la page de création, relit un tel document : il remplit les champs et monte le graphe dans l'éditeur. Rien n'est créé tant que vous n'avez pas cliqué sur Créer la stratégie — un graphe importé peut donc être relu et modifié avant d'exister.
Les problèmes sont signalés là où ils se trouvent : un champ de type invalide est listé dans la fenêtre d'import et bloque le chargement, tandis qu'un problème de graphe (état puits, état d'arrivée inconnu, condition incomplète) se charge quand même et s'affiche sur l'état ou la flèche concernée, la création restant bloquée jusqu'à correction.
Servez-vous-en pour conserver une stratégie hors de l'application, la partager, ou partir d'une variante d'une stratégie existante.
Modifier, dupliquer, supprimer
- Modifier : seules les stratégies en brouillon sont modifiables. Dès qu'une stratégie a été backtestée, ses règles sont verrouillées — c'est ce qui garantit qu'un résultat passé correspond bien à la stratégie affichée.
- Dupliquer : crée une copie en brouillon, avec la même configuration, et propose d'archiver la source. C'est le geste normal pour essayer une variante.
- Supprimer : une stratégie encore en brouillon est réellement supprimée. Toute autre est archivée — ses backtests et son historique de trades sont préservés.
La liste des stratégies affiche pour chacune un badge de statut, ainsi que Générée par IA et Modifiée quand c'est pertinent. La page d'une stratégie montre sa configuration complète et, le cas échéant, la description d'origine soumise à l'IA.
