
EdgeMeter répond à une question concernant n'importe quel signal d'entrée :
une fois les frais de transaction pris en compte, ce signal est-il rentable ?
Il ne passe aucun ordre. Il analyse l'historique, évalue votre signal sur chaque
barre, puis affiche un verdict.
POURQUOI JE L’AI CRÉÉ
J’ai passé un mois à développer un EA de grid sur la paire XAUUSD en M1. J’ai fixé le stop loss, ajouté
un plafond de perte flottant, une sortie en cas de retournement et une durée maximale de maintien des positions dans le panier. Il ne cessait de perdre.
Lorsque j’ai enfin évalué le signal d’ENTRÉE isolément, la réponse m’a pris trente
secondes :
mouvement moyen après le signal, sur 15 min : +0,04
spread payé par aller-retour : 0,26
Aucune logique de sortie ne peut y remédier. L’argent a été perdu dès l’entrée, et chaque heure que j’
passais à gérer les sorties était du temps perdu. C’est précisément ce que ce script est censé empêcher.
CE QU'IL INDIQUE
Pour chaque période de détention que vous spécifiez :
- avantage brut : le mouvement favorable moyen après le signal
- résultat net après frais, simulé position par position
- la statistique t calculée sur des transactions NON CHEVAUCHANTES
- la proportion de mois rentables
- drawdown maximal
Ensuite, le programme effectue la même analyse sur un CONTRÔLE ALÉATOIRE : même fréquence de déclenchement,
direction déterminée par un tirage au sort. Une entrée aléatoire doit perdre exactement le coût de transaction,
ni plus ni moins. Cela a deux conséquences. D’une part, cela prouve que le simulateur fonctionne correctement,
et cela vous donne le niveau de bruit de fond. Si votre signal ne dépasse pas clairement ces
lignes, il ne porte aucune information.
LE PIÈGE DU CHEVAUCHEMENT
C’est la partie qui m’a piégé, et qui piège la plupart des gens.
Les signaux consécutifs partagent la majeure partie de leur fenêtre avant. Un horizon de 60 mesures
échantillonné à chaque barre donne des fenêtres qui se chevauchent de 59 façons différentes. Les traiter comme
indépendants gonfle la statistique t d'environ la racine carrée de l'horizon.
Mon propre signal affichait ainsi une valeur de t = 3,32, ce qui semble convaincant. Sur des
, il affichait t = 1,20 — un résultat impossible à distinguer du bruit. EdgeMeter
simule une position à la fois ; ainsi, les transactions qu'il signale ne se chevauchent pas et
la statistique t est fiable.
CRITÈRES DE RÉUSSITE
Le script vérifie trois critères, qui doivent tous être remplis :
[1] bénéfice net par transaction > 0 après déduction des coûts
[2] |t| > 2
[3] au moins 3 mois rentables sur 4
Définissez vos critères avant d’examiner les chiffres. Décider après coup revient à
la raison pour laquelle un système perdant finit par être mis en production sur un compte réel.
COMMENT TESTER VOTRE PROPRE SIGNAL
Ouvrez le fichier et modifiez deux fonctions dans la SECTION UTILISATEUR. Aucune autre modification n’est
.
bool UserInit() - créez les descripteurs de vos indicateurs et chargez leurs
tampons à l’aide de LoadBuffer() / LoadBufferB()
int UserSignal(int i) - évaluez la barre fermée i
renvoie +1 pour acheter, -1 pour vendre, 0 pour rester à l'écart
Tous les tableaux sont indexés à partir de 0 = barre la plus ancienne. C'est l'inverse de l'
, et c’est délibéré : un retour vers l’avant correspond alors simplement à
l’index + l’horizon, ce qui élimine toute une catégorie d’erreurs de signe.
L’entrée est simulée à Open(i+1), la barre suivante. Ne lisez jamais la barre i+1 ou les suivantes
dans UserSignal — cela constitue un biais d’anticipation et rendra le
signal sans valeur paraître brillant.
Le UserSignal par défaut est un croisement de moyennes mobiles sur deux périodes, présenté comme un
exemple pratique. Remplacez-le.
DÉFINITION DES COÛTS
InpSpread, InpCommission et InpSlippage sont exprimés en unités de PRIX, et non en points, et
ce sont les paramètres les plus importants du script. Récupérez-les à partir de votre propre
compte, et non à partir des chiffres annoncés par un courtier.
Si vous disposez d’un journal d’exécution issu d’opérations réelles ou de démo, utilisez la
. Si vous n’en disposez pas, prenez le spread typique que vous observez sur le graphique et ajoutez-y
une marge de manœuvre pour le slippage plutôt que de supposer qu’il est nul. Un serveur de démo affichera
un glissement proche de zéro ; il s'agit d'une caractéristique du serveur de démo, et non du marché.
CONDITIONS REQUISES
Chargez suffisamment d’historique avant de lancer le script : ouvrez un graphique pour votre symbole et
période souhaitée, puis faites défiler vers l’extrême gauche. Le script vous indiquera s’il n’y en a pas
suffisante. Moins de 30 signaux signifie que tout résultat relève de l’anecdote et non d’une preuve.
Utilisation et modification libres.