Backtesting: Interpréter le passé Le backtesting est un élément clé du développement efficace du système commercial. On y parvient en reconstituant, avec des données historiques, des métiers qui auraient eu lieu dans le passé en utilisant des règles définies par une stratégie donnée. Le résultat offre des statistiques qui peuvent être utilisées pour évaluer l'efficacité de la stratégie. En utilisant ces données, les traders peuvent optimiser et améliorer leurs stratégies, trouver des défauts techniques ou théoriques, et gagner la confiance dans leur stratégie avant de l'appliquer sur les marchés réels. La théorie sous-jacente est que toute stratégie qui a fonctionné bien dans le passé est susceptible de bien fonctionner dans l'avenir, et inversement, toute stratégie qui a mal performé dans le passé est susceptible de fonctionner mal à l'avenir. Cet article donne un aperçu des applications utilisées pour le backtest, du type de données obtenues et de la façon de les utiliser. Les données et les outils Backtesting peuvent fournir de précieux commentaires statistiques sur un système donné. Quelques statistiques universelles de backtesting incluent: Bénéfice ou perte net - gain ou perte nette de pourcentage. Délai - Dates passées où l'essai a eu lieu. Univers - Stocks qui ont été inclus dans le backtest. Mesures de volatilité - Pourcentage maximum de la hausse et de la baisse. Moyennes - Pourcentage du gain moyen et de la perte moyenne, moyenne des barres détenues. Exposition - Pourcentage du capital investi (ou exposé au marché). Ratios - Ratios gains / pertes. Rendement annualisé - Rendement en pourcentage sur une année. Rendement ajusté en fonction du risque - Rendement en pourcentage en fonction du risque. Typiquement, le logiciel de backtesting aura deux écrans qui sont importants. Le premier permet au commerçant de personnaliser les paramètres de backtesting. Ces personnalisations incluent tout, de la période à la commission des coûts. Voici un exemple d'un tel écran dans AmiBroker: Le deuxième écran est le rapport des résultats réels backtesting. C'est là que vous pouvez trouver toutes les statistiques mentionnées ci-dessus. Encore une fois, voici un exemple de cet écran dans AmiBroker: En général, la plupart des logiciels commerciaux contient des éléments similaires. Certains logiciels haut de gamme incluent également des fonctionnalités supplémentaires pour effectuer le dimensionnement automatique de position, l'optimisation et d'autres fonctionnalités plus avancées. Les 10 commandements Il ya de nombreux facteurs commerçants attention quand ils sont backtesting stratégies de négociation. Voici une liste des 10 choses les plus importantes à retenir lors du backtesting: Tenir compte des tendances générales du marché dans le cadre du temps dans lequel une stratégie donnée a été testée. Par exemple, si une stratégie a seulement été testée à partir de 1999-2000, elle peut ne pas aller bien dans un marché baissier. Il est souvent une bonne idée de backtest sur une longue période qui englobe plusieurs types différents de conditions de marché. Prendre en compte l'univers dans lequel le backtesting s'est produit. Par exemple, si un vaste système de marché est testé avec un univers composé d'actions technologiques, il peut ne pas réussir à bien dans différents secteurs. En règle générale, si une stratégie est ciblée vers un genre spécifique de stock, limiter l'univers à ce genre, mais dans tous les autres cas, maintenir un grand univers à des fins de test. Les mesures de volatilité sont extrêmement importantes à considérer dans le développement d'un système commercial. Cela est particulièrement vrai pour les comptes à effet de levier, qui sont soumis à des appels de marge si leurs fonds propres tombe en dessous d'un certain point. Les commerçants devraient chercher à maintenir la volatilité à un niveau bas afin de réduire les risques et de faciliter la transition dans et hors d'un stock donné. Le nombre moyen de barres détenues est également très important à surveiller lors de l'élaboration d'un système commercial. Bien que la plupart des logiciels de backtesting comprennent les coûts de commission dans les calculs finaux, cela ne signifie pas que vous devriez ignorer cette statistique. Si possible, augmenter votre nombre moyen de barres retenues peut réduire les coûts de commission et améliorer votre rendement global. L'exposition est une épée à double tranchant. Une exposition accrue peut conduire à des profits plus élevés ou des pertes plus élevées, tandis que l'exposition réduite signifie des profits inférieurs ou des pertes plus faibles. Cependant, en général, il est judicieux de maintenir l'exposition au-dessous de 70 afin de réduire les risques et de faciliter la transition dans et hors d'un stock donné. La statistique de perte de gain moyenne, combinée au ratio gains / pertes, peut être utile pour déterminer le dimensionnement optimal de la position et la gestion de l'argent en utilisant des techniques comme le critère Kelly. (Voir Gestion de l'argent en utilisant le critère Kelly.) Les commerçants peuvent prendre des positions plus importantes et réduire les coûts de commission en augmentant leurs gains moyens et en augmentant leur ratio gains / pertes. Le rendement annualisé est important parce qu'il est utilisé comme un outil pour comparer les rendements des systèmes à ceux d'autres sites d'investissement. Il est important non seulement d'examiner le rendement global annualisé, mais aussi de tenir compte de l'augmentation ou de la diminution du risque. Cela peut être fait en examinant le rendement ajusté en fonction du risque, qui tient compte de divers facteurs de risque. Avant l'adoption d'un système de négociation, il doit surperformer tous les autres sites d'investissement à un risque égal ou inférieur. Backtesting personnalisation est extrêmement important. De nombreuses applications de backtesting ont des entrées pour les montants de commissions, les tailles de lots rondes (ou fractionnelles), les tailles de tiques, les exigences de marge, les taux d'intérêt, les hypothèses de glissement, les règles de dimensionnement de position, les règles de sortie de barres identiques. Pour obtenir les résultats les plus précis, il est important d'accorder ces paramètres pour imiter le courtier qui sera utilisé lorsque le système sera mis en service. Backtesting peut parfois conduire à quelque chose connu sous le nom de sur-optimisation. C'est une condition où les résultats de performance sont si fortement accordés au passé qu'ils ne sont plus aussi précis à l'avenir. C'est généralement une bonne idée de mettre en œuvre des règles qui s'appliquent à tous les stocks, ou un ensemble sélectionné de stocks ciblés, et ne sont pas optimisés dans la mesure où les règles ne sont plus compréhensibles par le créateur. Backtesting n'est pas toujours la façon la plus précise de mesurer l'efficacité d'un système commercial donné. Parfois, les stratégies qui ont bien performé dans le passé ne parviennent pas à bien dans le présent. Les performances passées ne représentent pas les résultats futurs. Assurez-vous de faire du commerce papier un système qui a été testé avec succès avant d'être en direct pour être sûr que la stratégie reste applicable dans la pratique. Conclusion Backtesting est l'un des aspects les plus importants du développement d'un système commercial. Si elle est créée et interprétée correctement, elle peut aider les opérateurs à optimiser et à améliorer leurs stratégies, à trouver des défauts techniques ou théoriques, ainsi qu'à acquérir confiance dans leur stratégie avant de l'appliquer aux marchés du monde réel. AmiBroker (amibroker) - Budget Trading System Development. Im essayant de backtest un système commercial manuel sur 2013 année. Comme j'ai la datehourminute de chaque commerce ouvert et proche, après beaucoup d'heures de travail, Ive réussi à backtesting sur Excel en termes de profit seulement. Comme vous le savez, je système ne peut pas être évalué juste acheter son profit. J'ai besoin de savoir des choses comme la taille était le retrait, combien de marge le système exige, ce qui est le facteur de profit, etc La seule façon que je sais faire un bon backtest est acheter Mt4 Strategy Tester. Ok, donc j'ai juste besoin de faire une simple EA qui ouvrir et fermer les métiers à un certain type de dateshoursminutes. Et voici le problème: si d'un côté je suis sûr que c'est l'un des EA les plus simples jamais, Im sur les premières étapes de la programmation mql4 et Im ne réussissent pas à faire ce travail EA. Pouvez-vous m'aider Il peut être en m'aidant à trouver ce qui ne va pas avec l'EA Ive conçu ou même me parler d'une autre façon d'obtenir un bon backtest sur mon système manuel. Merci d'avance. Reis: voici le problème: Im ne réussissant pas à faire ce travail EA. Pouvez-vous m'aider Votre problème n'est pas de signaler un problème. Vous ne pouvez même pas indiquer ce qu'il fait et ce qu'il devrait être. Ajoutez des instructions Print avant et à l'intérieur de vos conditionnelles, décompressez vos valeurs de variable et découvrez ce qu'il fait et pourquoi. Quelles sont les valeurs de retour de fonction. Comment puis-je les utiliser. - Forum MQL4 Merci WHRoeder pour la réponse rapide. En ce moment Im étudier comment mettre les déclarations d'impression pour trouver ce qui se passe. Merci encore une fois. J'ai fait ce que WHReder m'a dit et je n'ai pas eu à chercher beaucoup pour trouver des problèmes. Ive a fait quelques changements sur l'EA et c'est la nouvelle: Ive fait le backtest pour Décembre 2013 et comme vous pouvez le voir dans cette partie de mon journal, il semble que j'ai un problème avec la commande TimeCurrent (). Bien que j'ai testé tout le mois, TimeCurrent () me donne toujours les dernières minutes du 24ème jour de décembre. 2013.12.28 19:32:35 2013.12.24 23:58 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:58 2013.12.28 19:32:35 2013.12.24 23:57 Teste de operaes 1.12 EURUSD , M1: L'heure actuelle est 2013.12.24 23:57 2013.12.28 19:32:35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:56 2013.12.28 19:32: 35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:56 2013.12.28 19:32:35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12 .24 23:56 2013.12.28 19:32:35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:56 Est-ce la bonne commande pour cette situation ou Est-ce que je l'utilise int La mauvaise façon Pouvez-vous continuer à m'aider Merci encore. Vous semblez avoir exécuté le test pendant tout le mois. Les dernières déclarations imprimées seront donc pour la fin de votre historique. Qu'est-ce que vous attendez Essayez le mode visuel, quand il arrive au point qu'il fait quelque chose que vous pensez est faux, pause le test, regardez vos valeurs, le comprendre. WHRoeder: Votre problème ne pose pas de problème. Vous ne pouvez même pas indiquer ce qu'il fait et ce qu'il devrait être. Ajoutez des instructions Print avant et à l'intérieur de vos conditionnelles, décompressez vos valeurs de variable et découvrez ce qu'il fait et pourquoi. Quelles sont les valeurs de retour de fonction. Comment puis-je les utiliser. - Forum MQL4 Reis: J'ai fait ce que WHReder m'a dit à Vous n'avez rien fait (pas de problème, pas de variable, pas d'instructions trace trace, pas de vérifications de fonction.) Tout ce que vous faites, c'est d'imprimer le temps pour le tick actuel (si vous Vraiment soigné peut-être vous devriez imprimer les secondes aussi). Vous n'avez rien fait (aucun problème, aucune variable, aucune instruction trace trace, aucune vérification de fonction.) Tout ce que vous faites est l'impression de l'heure pour le tick actuel (si vous avez vraiment soigné peut-être vous devriez imprimer les secondes aussi). J'ai fait ce que j'ai compris. Im étudier et d'essayer d'apprendre. C'est pourquoi je ne sais pas et je ne comprends pas beaucoup de choses sur mql4 et mql4 termes. C'est pourquoi je n'ai pas fait toutes les choses que vous attendiez de moi. Mais croyez-moi ou non, Im essayant dur, ok Mais de la manière impoli que vous écrivez il semble que vous n'êtes pas très heureux en m'aidant. Comme vous n'êtes pas obligé de m'aider ou quelqu'un ici, je ne comprends pas pourquoi vous agissez de cette façon. Il semble que vous êtes le genre de personne qui croit que sont mieux que les autres juste parce que savoir quelque chose de plus. Mais ce n'est pas mon problème. En ce qui concerne moi je veux juste vous dire que je ne suis pas intéressé par ce genre de personne en contact avec moi. Donc, je n'ai pas demandé spécifiquement que vous veniez ici pour m'aider, mais maintenant Im demandant spécifiquement que vous partiez et cessez de me déranger, ok Ne vous inquiétez pas, je vais résoudre mon problème d'une autre façon. Passez une bonne soirée. J'ai fait ce que WHReder m'a dit et je n'ai pas eu à chercher beaucoup pour trouver des problèmes. Ive a fait quelques changements sur l'EA et c'est la nouvelle: Ive fait le backtest pour Décembre 2013 et comme vous pouvez le voir dans cette partie de mon journal, il semble que j'ai un problème avec la commande TimeCurrent (). Bien que j'ai testé tout le mois, TimeCurrent () me donne toujours les dernières minutes du 24ème jour de décembre. 2013.12.28 19:32:35 2013.12.24 23:58 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:58 2013.12.28 19:32:35 2013.12.24 23:57 Teste de operaes 1.12 EURUSD , M1: L'heure actuelle est 2013.12.24 23:57 2013.12.28 19:32:35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:56 2013.12.28 19:32: 35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:56 2013.12.28 19:32:35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12 .24 23:56 2013.12.28 19:32:35 2013.12.24 23:56 Teste de operaes 1.12 EURUSD, M1: L'heure actuelle est 2013.12.24 23:56 Est-ce la bonne commande pour cette situation ou Est-ce que je l'utilise int La mauvaise façon Pouvez-vous continuer à m'aider Merci encore. J'ai remarqué un bug qui, si résolu, devrait vous aider à vous rapprocher de votre solution. Vous utilisez la fonction quot StrToTime quo incorrectement. Le format que vous devez utiliser est quot yyyy. mm. dd hh: mi quot, mais dans votre code, vous semblez changer le mois et le jour et en utilisant un seul chiffre au lieu de double chiffre pour le jour. En d'autres termes, vous utilisez par exemple quot 2013.9.12 13:00 quot au lieu du format correct de quot 2013.12.09 13:00 quot. Il pourrait y avoir d'autres bugs, mais celui-ci s'est distingué pour moi le plus. PS Si vous avez des difficultés avec la langue anglaise, envoyez-moi un PM en portugais et je vais essayer de vous aider. Cependant, le mieux serait de continuer en anglais ici sur le sujet afin que les autres puissent aussi aider. Merci beaucoup pour votre attention, FMIC. J'ai changé ce que tu m'as dit. C'était vraiment faux. Malheureusement, l'EA ne fonctionne pas encore. Mais Im reconnaissant pour votre aide. Grateful aussi pour m'offrir de l'aide avec la langue anglaise. Comme vous l'avez remarqué, l'anglais n'est pas ma langue maternelle et si j'ai besoin d'aide, je ne serai pas honte de vous demander. Bonne journée. Merci beaucoup pour votre attention, FMIC. J'ai changé ce que tu m'as dit. C'était vraiment faux. Malheureusement, l'EA ne fonctionne pas encore. Mais Im reconnaissant pour votre aide. Grateful aussi pour m'offrir de l'aide avec la langue anglaise. Comme vous l'avez remarqué, l'anglais n'est pas ma langue maternelle et si j'ai besoin d'aide, je ne serai pas honte de vous demander. Bonne journée. Voici quelques conseils supplémentaires: EDIT - DISREGARD cela - il est incorrect: Slippage n'est pas dans les unités PIP, mais comme une différence de prix. Utilisez donc 0,0003 pour représenter 3 pips, dans le cas de EURUSD (voir exemple ci-dessous). Pour rendre les choses plus faciles à lire et pour s'assurer que la variable coïncide avec le résultat de la fonction OrderSend (), utilisez EMPTY pour initialiser les variables Ticket ainsi que pour vérifier la validité. N'utilisez pas la constante de chaîne quotEURUSDquot pour le nom du symbole car elle peut être légèrement différente sur le courtier. Utilisez NULL et assurez-vous simplement de sélectionner le symbole quotEURUSDquot dans le testeur Stratégie ou le graphique auquel vous attachez l'EA. Lors de la fermeture d'une commande, il pourrait être plus sûr de sélectionner d'abord l'ordre, puis interroger le nombre de lots et le prix de clôture actuel et de l'utiliser pour le fermer. De cette façon, vous pouvez vous assurer de fermer l'ordre entier et ne pas avoir une erreur ou seulement une fermeture partielle. Vous devriez également vérifier si l'ordre a effectivement fermé ou non, avant d'effacer le billet avec EMPTY. Après avoir effectué les modifications, si elle ne fonctionne toujours pas, postez votre code complet ici en tant que pièce jointe, et je vais jeter un coup d'oeil à vous et je vais répertorier tous les bugs que je trouve. Voici quelques conseils supplémentaires: Slippage n'est pas dans les unités PIP, mais comme une différence de prix. Utilisez 0.0003 pour représenter 3 pips, dans le cas de EURUSD (voir exemple ci-dessous) Non, Slippage est un int et est un nombre de points. Le code original est correct si le glissement est censé être de 3 points. Pour rendre les choses plus faciles à lire et pour s'assurer que la variable coïncide avec le résultat de la fonction OrderSend (), utilisez EMPTY pour initialiser les variables Ticket ainsi que pour vérifier la validité. Il n'y a aucun besoin et il peut confondre. OrderSend () renvoie -1 en cas d'erreur ou retourne le numéro du ticket en cas de succès. Donc, si le ticket EMPTY il y avait aussi un OrderSend échoué () Qu'en est-il des rapports d'erreur. Quelles sont les valeurs de retour de fonction. Comment puis-je les utiliser Vous semblez avoir exécuté le test pendant tout le mois. Les dernières déclarations imprimées seront donc pour la fin de votre historique. Qu'est-ce que vous attendez Essayez le mode visuel, quand il arrive au point qu'il fait quelque chose que vous pensez est faux, pause le test, regardez vos valeurs, le comprendre. Vous n'avez rien fait (aucun problème, aucune variable, aucune instruction trace trace, aucune vérification de fonction.) Tout ce que vous faites est l'impression de l'heure pour le tick actuel (si vous avez vraiment soigné peut-être vous devriez imprimer les secondes aussi). Il n'est pas toujours nécessaire d'élaborer un contexte excessivement pour le comprendre. En portugais nous avons un dicton: quot Pour bom entendedor, meia palavra basta quot, signifiant littéralement, quot Pour un bon entendant, un demi-mot est assez quot. Le texte affiché, même s'il n'était pas parfait en anglais, avait suffisamment d'informations pour comprendre ce qui était demandé. Dire à lui d'aller lire un post, qui est évidemment au-dessus de sa compréhension de MQL4, n'est pas exactement aider. Ce serait comme lui dire d'aller lire le quotmanualquot. Si tout le monde était capable de tout comprendre tout en lisant le manuel, il n'y aurait pas besoin d'avoir des forums comme celui-ci. Parfois, on a besoin d'une main guidée et le rencontrer à mi-chemin aurait été une meilleure approche. Gronder de lui de ne pas vous comprendre n'est pas exactement amical, d'autant plus que l'anglais (et mql4) n'est pas sa langue maternelle. Venez, nous sommes tous ici pour apprendre (et enseigner). Pas besoin de l'attitude snide Laisse tout être amical Tis la saison pour être happy. Strategy Backtesting Stratégie backtesting est un outil essentiel pour voir si votre stratégie fonctionne ou non. Backtesting logiciel simule votre stratégie sur les données historiques et fournit un rapport de backtesting, qui vous permet de conduire une bonne analyse du système commercial. La version 64 bits vous permet de charger autant de données que nécessaire, même pour le backtesting le plus précis. Pour des informations techniques sur cette fonctionnalité, consultez la page Wiki connexe. La précision est la clé MultiCharts est une solution créée spécifiquement pour le développement de stratégies et le backtesting. Notre philosophie est que le backtesting de stratégie devrait être aussi réaliste que la technologie moderne le permet. Multicharts 64 bits permet de gérer une quantité énorme de données Tick-by-Tick pour un backtesting précis. Rétrospective réaliste Même si aucune approximation ne peut être parfaite, nous avons tout fait pour recréer avec précision les conditions du marché passées et l'exécution des commandes pour le trading stratégique. Les moteurs de backtesting typiques ont beaucoup d'hypothèses et de raccourcis, ce qui entraîne des tests irréalistes et des résultats peu fiables. MultiCharts est une plate-forme de négociation au niveau institutionnel qui minimise les hypothèses et tient compte de nombreux facteurs. Advanced tech Stratégie backtesting a souvent besoin de beaucoup de données, et un logiciel qui est capable de le traiter. Multi-threading est utilisé lorsque vous procédez à l'optimisation de stratégie dans MultiCharts. Il répartit les tâches multiples en différents noyaux, de sorte qu'ils se complètent beaucoup plus rapidement. La version 64 bits de MultiCharts vous permet de charger des années et des années de données de ticks pour des mouvements de prix détaillés. Facile à lire Vous pouvez changer la façon dont vos signaux apparaissent sur votre chartin juste quelques clics. Les ordres de sortie peuvent être connectés par une ligne visible à tous les ordres d'entrée connexes la ligne sera verte si le commerce était rentable, rouge si non. Si vous n'aimez pas ces couleurs, ou tout autre aspect visuel, vous pouvez facilement le changer. Choisissez votre devise pour le backtesting La devise de base permet de calculer les profits et les pertes pendant le backtesting de stratégie avec une devise spécifiée pour les paires Forex ou les symboles non américains. Si vous réutilisez votre stratégie sur un symbole basé sur une devise différente de celle de votre compte de courtier, vous pouvez appliquer une conversion de devise. Pour rendre les résultats aussi proches que possible de la perfection, nous utilisons les taux de change réels pour chaque jour. Toutes les conversions de devises a lieu dans les coulisses pour rendre votre négociation aussi facile que possible. Nous utilisons nos serveurs pour demander des données en arrière-plan et effectuer les calculs nécessaires. Tous les facteurs essentiels contenus dans notre logiciel de backtesting considèrent les facteurs essentiels suivants: la liquidité, les changements de prix tick-by-tick, les différences de prix ask-bid-trade, la commission, le glissement, le capital initial, le taux d'intérêt et la taille du commerce. Prise en compte de la liquidité Lorsque le moteur MultiCharts soutient une stratégie, il reconnaît que tous les ordres limités ne seront pas comblés en raison du manque de liquidité. Pour cette raison, vous avez le choix de remplir les commandes lorsqu'une cible de prix est atteinte ou lorsqu'elle est dépassée par un certain nombre de points (pips). Plus d'infos sur notre page Wiki. Demandez, soumettez, et les prix du commerce Backtesting prend en compte que les achats réels se produit à prix demandé, la vente réelle aux prix de l'offre. Cela rend notre simulation de backtesting aussi réaliste que possible. Stratégie précise Le backtesting peut donner à l'utilisateur une émulation plus réaliste. Pour rétrograder les stratégies à haute fréquence comme l'arbitrage statistique, l'utilisateur peut avoir besoin de prendre en compte les données historiques bidask en plus des données commerciales historiques. Tick-by-tick simulation Bar Magnifier est essentiel pour augmenter la précision lors du backtesting. MultiCharts peut construire des barres plus grandes à partir de petites barres de deuxième et de minute des barres de minuscules, barres d'heures et de jours en minutes. Vous pouvez recréer les mouvements exacts des prix au sein de chaque barre en utilisant la loupe de barre. Par exemple, Bar Magnifier peut invisiblement charger des minutes qui composent l'heure, et la stratégie sera backtested sur une base minute par minute. Plus de détails techniques ici. Stratégies pour la pratique immédiate Le moteur de backtesting de MultiCharts émule même les ordres de marché, d'arrêt, de limite, d'arrêt d'arrêt et d'un-annule-autre (OCO). Objectif de bénéfice, stop-loss et traîne arrêts sont également standard backtesting caractéristiques. En plus de cela, MultiCharts est livré avec plus de 80 stratégies EasyLanguage, de sorte que vous pouvez pratiquer backtesting.
No comments:
Post a Comment