Friday, February 24, 2017

Optimisation Du Système De Négociation

Optimisation de l'algorithme de trading: Optimisation de marche en avant Hé là, Protraders Dans l'article précédent, nous avons examiné en détail l'installation de l'optimiseur dans la plate-forme Protrader. Dans le présent article, nous allons introduire la méthode de vérification des paramètres d'optimisation du système de négociation sur la durabilité. Pourquoi est-il si important pratique montre, l'utilisation de différents algorithmes d'optimisation ne garantit pas la durabilité de la réception optimale des paramètres du système commercial. La durabilité fait référence à la capacité du système de ne pas pratiquement modifier ses données statistiques tout en testant des données historiques qui ne faisaient pas partie de la sélection d'optimisation. La sélection des données sur lesquelles l'optimisation du système a été effectuée est appelée la section In Sample. Et les données qui n'ont pas été inclus dans la sélection d'optimisation est appelée la section Out of Sample. Souvent Out of Sample données va après dans la section d'échantillon par la chronologie. Ainsi, la section Hors échantillon est située dans l'avenir par rapport à la section Dans l'exemple. Par conséquent, ce type de test des systèmes de négociation a été nommé test Forward. Le but de ce type de test est de déterminer la durabilité des paramètres du système commercial obtenus lors de l'optimisation. À l'aide du test Forward, vous pouvez exclure les réglages système qui correspondent simplement à la trame d'historique sur laquelle l'optimisation a été effectuée. Dans la section «Hors échantillon», ces paramètres d'ajustement perdent rapidement de leur efficacité ou même cessent de fonctionner. Les systèmes avec un grand nombre de paramètres optimisés ou de degrés de liberté sont les plus susceptibles de s'adapter. Cela indique que le système ne négocie pas la situation de certains échanges, qui a été posée dans sa logique, mais ajuste simplement sous les données historiques. Et puisque le comportement des instruments financiers a un degré élevé de volatilité au profit de l'utilisation de systèmes équipés est pratiquement impossible. Outil prête à l'emploi pour résoudre les problèmes de durabilité des paramètres optimisés du système commercial qui ont été décrits ci-dessus est mis en œuvre dans le terminal Protrader. Cet outil est appelé «Optimisation marche avant». Grâce à cet outil, un opérateur peut, avec une seule opération, conserver l'optimisation des paramètres du système commercial et son test Forward. Pour démarrer l'optimisation Walk forward, allez à AlgoStudio - gt Optimization et sélectionnez Walk forward dans la liste déroulante. Après avoir sélectionné l'optimisation Walk forward ainsi que l'algorithme d'optimisation et ses paramètres, vous pouvez passer à la configuration de la marche avant. Deux paramètres sont disponibles pour le trader dans la fenêtre de configuration de marche avant. La période IS est une section des données historiques sur lesquelles l'optimisation sera effectuée (dans l'exemple). La période OS est une section des données historiques sur lesquelles le test Forward sera tenu (Out of Sample). Ainsi, la période d'optimisation totale qui est définie dans les paramètres de configuration de Backtesting est logiquement divisée en périodes d'intervalle IS et période d'OS. L'optimisation des paramètres du système de négociation est conservée sur la période de la période IS et la vérification de la durabilité du jeu de paramètres optimisé du système de négociation est conservée sur la section période OS. Dans l'exemple actuel, l'optimisation Walk forward est détenue sur l'instrument de négociation EURUSD, du 01.01.2013 au 01.01.2014, la période d'optimisation totale étant ainsi divisée en sections IS période 30 jours et OS période 30 jours. Après avoir obtenu l'optimisation, nous obtenons la table des résultats qui est similaire au tableau des résultats de l'optimisation ordinaire. Mais il comprendra plusieurs nouveaux indicateurs. Permet de déchiffrer la signification des nouveaux indicateurs dans le tableau des résultats d'optimisation: Type est le type d'opération qui se tient. La valeur d'optimisation signifie que l'optimisation a été maintenue à cet intervalle de temps. La valeur Backtesting signifie que le test a été effectué à cet intervalle de temps. L'heure de début et de fin sont respectivement le début et la fin de la période sélectionnée. Robust est l'indicateur de durabilité des paramètres du système de négociation sélectionnés qui est mesuré en pourcentage. Cette valeur est calculée comme le rapport de la valeur de la fonction cible d'optimisation sur la section Backtesting à la valeur de la fonction cible d'optimisation de la section Optimisation, exprimée en pourcentage. Exemple: pendant la période d'optimisation, le meilleur ensemble des paramètres du système de négociation affiche la valeur de la fonction cible 10 les mêmes paramètres système indiquent la valeur de la fonction cible 5 sur la section de test. Robuste (510) 100 50. Ainsi, à l'aide de l'indicateur Robust, nous pouvons déterminer la stabilité des résultats d'optimisation et éviter l'utilisation des réglages du système de négociation ajusté. Comme nous pouvons le voir dans l'exemple actuel, toutes les sections de test ont montré des valeurs négatives de l'indicateur Robust, indiquant l'instabilité extrême des ensembles optimisés obtenus des paramètres du système commercial. Le module d'optimisation de marche peut être utilisé non seulement pour la vérification facile de durabilité des paramètres du système de négociation optimisé, mais aussi pour la sélection des paramètres du système de négociation optimale à l'aide de fenêtre coulissante. Après tout, il existe une classe de systèmes de trading qui exige un suivi constant des paramètres optimaux qui sont très sensibles au changement dynamique des instruments financiers négociés. La sélection de la longueur des périodes de la période IS et de la période OS dépend des spécificités du système de négociation optimisé ainsi que de la dynamique de l'instrument financier utilisé. A titre d'exemple, pendant les périodes de faible volatilité et de consolidation, le système de tendances affichera des résultats pires que pendant les périodes de forte volatilité et le marché tendanciel. Dans cet article, nous avons passé en revue le module d'optimisation Walk forward qui est implémenté dans le terminal Protrader. Ce module aidera non seulement le trader à vérifier rapidement et facilement la durabilité des paramètres optimaux du système de négociation mais aussi à donner la possibilité de maintenir l'optimisation facilement à l'aide de la fenêtre coulissante. Qui est nécessaire lors de l'utilisation de certains types de systèmes de trading. Trading Systems Coding: tests, dépannage et d'optimisation Maintenant que vous avez un système commercial conçu et codé, il est temps de le tester pour vous assurer que votre codage est exempt d'erreurs logiques et techniques . Nous allons également regarder quelque chose connu comme l'optimisation - une fonctionnalité dans certains programmes commerciaux qui vous permet d'affiner vos règles de négociation pour s'adapter aux stocks que vous prévoyez sur le commerce. Test de votre système de négociation La grande majorité des applications commerciales qui prennent en charge les langages de programmation prennent également en charge les outils de test. Ces outils sont divisés en deux catégories: 1. Technique Les outils d'essai technique recherchent des erreurs techniques dans votre code. Par exemple, si vous oubliez d'ajouter un point-virgule après une instruction, l'outil de test technique vous informera que votre déclaration n'est pas valide. L'emplacement de l'outil de test technique dépend de l'application de trading utilisée. MetaTrader affiche une erreur ou des résultats erronés lorsque vous essayez de compiler votre code, tandis que les applications commerciales comme Tradecision ont un utilitaire de vérification de code intégré à l'interface qui vous permet de vérifier votre code pour les erreurs avant de l'appliquer. 2. Logical Les outils de test logique recherchent des erreurs logiques dans votre code. Par exemple, si vous avez utilisé un signe supérieur à au lieu d'un signe inférieur (ce qui n'est pas une erreur technique), un outil de test logique vous montrera que vos résultats n'ont pas de sens. L'outil de test logique le plus populaire est l'outil de backtesting. Cet outil vous permet de prendre des données passées et d'appliquer votre système de négociation à ces données. Cela vous donne une idée de ce qui suit: Si votre système de trading est rentable 13 Quelles sont les conditions qui s'avèrent les plus rentables 13 Où des erreurs dans vos règles peuvent exister (Pour plus d'informations, voir Backtesting: Interpréter le passé.) Système Comme avec n'importe quel autre type de programmation, le dépannage peut être une tâche fastidieuse et difficile. Pour trouver des erreurs dans votre code, il faut systématiquement trier votre code pour identifier les erreurs syntaxiques qui, bien que mineures, peuvent arrêter votre programme. Voici quelques erreurs courantes à rechercher: les points-virgules manquants après les instructions - ceux-ci doivent être après chaque instruction. 13 Variables non définies - N'oubliez pas que vous devez les déclarer avant de les utiliser. 13 Erreurs d'orthographe - Si des noms ou des fonctions ne sont pas orthographiés correctement, l'application de trading renverra une erreur (voir l'exemple ci-dessous). 13 Utilisation incorrecte de () - Rappelez-vous que vous attribuez une valeur à une autre valeur, alors que signifie égal à. 13 Utilisation incorrecte des fonctions intégrées - Consultez votre documentation d'applications commerciales ou l'interface de programmation d'applications (API) pour vous assurer que vous utilisez la syntaxe correcte. Certaines applications commerciales contiennent une fonctionnalité qui vous permettra de tester votre code avant de l'utiliser ou de le compiler. Cette fonction vous permet de voir quelle est l'erreur et sur quelle ligne elle peut être trouvée. Prenons Tradecision par exemple: ici nous pouvons voir que Tradecision nous donne l'emplacement (ligne et colonne) de l'erreur, une description de l'erreur et le type d'erreur (dans ce cas, il est syntaxique). Si nous regardons l'expression, nous pouvons voir que dans la colonne 8 xrossBelow n'est pas une fonction valide. Si nous remplaçons le x (qui est dans la colonne 8) par un c, alors nous aurons un code valide. Si nous regardons MetaTrader, nous pouvons voir que les erreurs apparaissent lorsque nous essayons de compiler le programme: Ici, nous pouvons voir que dans la description, il dit la variable BuyNow wasnt défini. Double-cliquer sur ce message d'erreur nous amènera à l'emplacement spécifique de l'erreur dans le code. Comme vous pouvez le voir, la plupart des applications commerciales vous donnent un moyen simple de localiser les erreurs techniques et de les corriger. La correction des erreurs consiste simplement à parcourir systématiquement chaque message d'erreur, puis à recompiler le code et / ou à appliquer le système de négociation à vos diagrammes. Optimisation de votre système de trading Certaines applications commerciales vous permettent de sélectionner des variables à optimiser. Tradecision, par exemple, vous permet de sélectionner facilement une variable et de la remplacer par du code qui tentera d'optimiser. L'optimisation elle-même est tout simplement un processus qui trouve la valeur optimale pour un élément particulier du système commercial basée sur les résultats et les performances passés. Notez que la sur-optimisation se traduit par des systèmes de trading qui ne sont pas en mesure de s'adapter aux conditions du marché donc, il est important d'optimiser seulement quelques variables importantes, pas toutes les variables Voici ce que ressemble la fonctionnalité d'optimisation dans Tradecision: Deux nouvelles variables et les mettre égale à. Cela signifie simplement que le programme de négociation remplacera celui-ci par le nombre optimal. Ensuite, vous pouvez voir que nous avons utilisé les nouvelles variables dans notre stratégie de négociation. Enfin, nous définissons une plage pour les nombres (de sorte que le programme ne recherche pas à l'infini). Certains autres programmes de négociation ont des fonctionnalités qui fonctionnent de manière similaire, vous permettant de remplacer la valeur numérique par a et dire à l'application de négociation pour l'optimiser. Conclusion À ce jour, vous devriez avoir développé un système de négociation de travail dans lequel vous pouvez avoir confiance. Dans la prochaine partie de cette série, vous apprendrez à appliquer votre système de trading à des graphiques et comment l'utiliser pour prendre des décisions commerciales. Comment optimiser le système de négociation REMARQUE: Ce sujet est assez avancé. Veuillez lire d'abord les tutoriels précédents de l'AFL. L'idée derrière une optimisation est simple. D'abord vous devez avoir un système commercial, ceci peut être un croisement simple de la moyenne mobile par exemple. Dans presque tous les systèmes, il existe certains paramètres (comme période de moyenne) qui déterminent la façon dont le système donné se comporte (c'est-à-dire est bien adapté à long terme ou à court terme, comment réagit-on sur les stocks très volatils, etc.). L'optimisation est le processus de recherche de valeurs optimales de ces paramètres (donnant le meilleur profit du système) pour un symbole donné (ou un portefeuille de symboles). AmiBroker est l'un des rares programmes qui vous permettent d'optimiser votre système sur plusieurs symboles à la fois. Pour optimiser votre système, vous devez définir de un à dix paramètres à optimiser. Vous décidez de la valeur minimale et maximale admissible du paramètre et des incréments de cette valeur à mettre à jour. AmiBroker effectue alors plusieurs tests en arrière du système en utilisant TOUTES les combinaisons possibles de valeurs de paramètres. Lorsque ce processus est terminé, AmiBroker affiche la liste des résultats triés par résultat net. Vous pouvez voir les valeurs des paramètres d'optimisation qui donnent le meilleur résultat. Écriture de la formule AFL L'optimisation dans le testeur est prise en charge par une nouvelle fonction appelée optimiser. La syntaxe de cette fonction est la suivante: variable optimize (quot Description quot, default. Min. Max. Step) variable - est une variable AFL normale qui obtient la valeur renvoyée par la fonction optimize. Avec les modes normales de backtesting, de scanning, d'exploration et de commentaire, la fonction d'optimisation renvoie la valeur par défaut, de sorte que l'appel de fonction ci-dessus est équivalent à: variable default En optimisation, la fonction optimise retourne des valeurs successives de min à max (inclusivement) avec step step. Quot Descriptionquot est une chaîne utilisée pour identifier la variable d'optimisation et est affichée sous la forme d'un nom de colonne dans la liste des résultats d'optimisation. La valeur par défaut est une valeur par défaut qui optimise les retours de fonction dans les modes d'exploration, d'indicateur, de commentaire, de balayage et de test normal min est une valeur minimale de la variable à optimiser max est une valeur maximale de la variable à optimiser est un intervalle utilisé pour augmenter le Valeur de min à max AmiBroker prend en charge jusqu'à 64 appels pour optimiser la fonction (donc jusqu'à 64 variables d'optimisation), notez que si vous utilisez l'optimisation exhaustive, il est vraiment bon idée de limiter le nombre de variables d'optimisation à quelques-uns. Chaque appel pour optimiser des boucles d'optimisation de pas (max-min) et des appels multiples pour optimiser multiplie le nombre de runs nécessaires. Par exemple, l'optimisation de deux paramètres à l'aide de 10 étapes nécessitera 1010 100 boucles d'optimisation. Optimisation de la fonction uniquement ONCE par variable au début de votre formule car chaque appel génère une nouvelle boucle d'optimisation L'optimisation de plusieurs symboles est entièrement prise en charge par AmiBroker L'espace de recherche maximum est de 2 64 (10 19 10,000,000,000,000,000,000) combinaisons 1. Optimisation de variable unique: sigavg Optimize (Signal 12,26.) 1) Acheter Croix (MACD (12,26), Signal (12,26 sigavg)) Sell Cross (Signal (12,26 sigavg), MACD (12,26)) 2. Optimisation à deux variables (adapté à la cartographie 3D) par Optimisation (par 2. 5. 50. 1) Niveau Optimisation (niveau 2. 2. 150. 4) Achat Croix (CCI (per), - Level) 3. Optimisation de la variable multiple (3): mfast Optimize (MACD Fast. 12. 8. 16. 1) mslow Optimisation (MACD Lente 26. 17. 30. 1) sigavg Optimize (Signal (Mfast, mslow, sigavg), MACD (mfast, mslow).) Après la saisie du signal (mfast, mslow, sigavg) La formule suffit de cliquer sur le bouton Optimiser dans la fenêtre QuotAutomatic Analysisquot. AmiBroker commencera à tester toutes les combinaisons possibles de variables d'optimisation et rapportera les résultats dans la liste. Une fois l'optimisation effectuée, la liste des résultats est présentée triée par le bénéfice net. Comme vous pouvez trier les résultats par n'importe quelle colonne dans la liste des résultats, il est facile d'obtenir les valeurs optimales des paramètres pour le tirage le plus bas, le plus petit nombre de métiers, le plus grand facteur de profit, Les dernières colonnes de la liste des résultats présentent les valeurs des variables d'optimisation pour un test donné. Lorsque vous décidez de la combinaison de paramètres qui convient le mieux à vos besoins, il suffit de remplacer les valeurs par défaut pour optimiser les appels de fonction avec les valeurs optimales. A l'étape actuelle, vous devez les saisir manuellement dans la fenêtre d'édition de la formule (le deuxième paramètre d'optimisation de l'appel de fonction). Affichage des diagrammes d'optimisation animés 3D Pour afficher le diagramme d'optimisation 3D, vous devez d'abord exécuter l'optimisation à deux variables. Deux optimisation variable a besoin d'une formule qui a 2 appels de fonction Optimize (). Un exemple de formule d'optimisation à deux variables ressemble à ceci: par Optimiser (par 2. 5. 50. 1) Niveau Optimiser (niveau 2. 2. 150. 4) Acheter Croix (CCI (par), niveau) Sell Cross (Niveau, CCI (per)) Après avoir saisi la formule, vous devez cliquer sur le bouton quotOptimizequot. Une fois l'optimisation terminée, cliquez sur la flèche du bouton Optimiser et choisissez Afficher le graphique d'optimisation 3D. En quelques secondes, un tracé de surface tridimensionnel coloré apparaîtra dans une fenêtre de visualisation de graphiques en 3D. Un exemple de graphique 3D généré à l'aide de la formule ci-dessus est illustré ci-dessous. Par défaut, les graphiques 3D affichent les valeurs du bénéfice net par rapport aux variables d'optimisation. Vous pouvez cependant tracer le graphique de surface 3D pour n'importe quelle colonne dans la table de résultats d'optimisation. Il suffit de cliquer sur l'en-tête de colonne pour le trier (une flèche bleue apparaîtra indiquant que les résultats d'optimisation sont triés par colonne sélectionnée), puis de nouveau afficher le graphique d'optimisation 3D. En visualisant comment vos paramètres système affectent les performances de trading, vous pouvez décider plus facilement quelles valeurs de paramètres produisent quotfragilequot et qui produisent quotrobustquot performance du système. Les paramètres robustes sont des régions dans le graphique 3D qui montrent des changements progressifs plutôt que brusques dans le graphique de surface. Les diagrammes d'optimisation 3D sont un excellent outil pour empêcher l'ajustement des courbes. L'ajustement de la courbe (ou la sur-optimisation) survient lorsque le système est plus complexe qu'il ne l'a été, et toute cette complexité a été concentrée sur des conditions de marché qui peuvent ne jamais se reproduire. Les changements radicaux (ou pics) dans les diagrammes d'optimisation 3D montrent clairement des zones de sur-optimisation. Vous devriez choisir la région de paramètre qui produit un plateau large et large sur le diagramme 3D pour votre commerce de la vie réelle. Les jeux de paramètres générant des pointes de profit ne fonctionneront pas de manière fiable dans les transactions réelles. Commandes de visualisation de diagramme 3D AmiBrokers Afficheur de diagramme 3D offre des capacités de visualisation totale avec rotation de graphique complète et animation. Maintenant, vous pouvez afficher les résultats de votre système de toutes les perspectives imaginables. Vous pouvez contrôler la position et les autres paramètres du graphique à l'aide de la souris, de la barre d'outils et des raccourcis clavier, que vous trouviez plus facile pour vous. Vous trouverez ci-dessous la liste. - pour faire pivoter - maintenir enfoncé le bouton de souris GAUCHE et se déplacer dans les directions XY - pour zoomer, zoom arrière - maintenir enfoncé le bouton de la souris DROITE et déplacer dans les directions XY - déplacer (traduire) - maintenir enfoncé le bouton de la souris GAUCHE et la touche CTRL et Déplacer dans les directions XY - pour Animer - maintenez enfoncé le bouton de la souris GAUCHE, faites glisser rapidement et relâchez le bouton tout en faisant glisser ESPACE - animer (auto-rotation) TOUCHE GAUCHE - tourner vert. Gauche FLECHE DROITE - tourner vert. Right FLECHE ARRIÈRE - rotation horizontale. Up FLECHE BAS - rotation de l'horiz. NUMPAD 4 - déplacement vers la gauche NUMPAD 6 - déplacement vers la droite NUMPAD 8 - déplacement vers le haut NUMPAD 2 - déplacement vers le bas PAGE UP - niveau de l'eau vers le haut PAGE DOWN - réduction du niveau d'eau Amélioration intelligente (non exhaustive) AmiBroker offre désormais une optimisation intelligente (non exhaustive) en plus d'une recherche régulière et exhaustive. La recherche non exhaustive est utile si le nombre de toutes les combinaisons de paramètres du système commercial donné est simplement trop important pour être réalisable pour une recherche exhaustive. La recherche exhaustive est parfaitement fine tant qu'il est raisonnable de l'utiliser. Disons que vous avez 2 paramètres allant de 1 à 100 (étape 1). Thats 10000 combinaisons - parfaitement OK pour une recherche exhaustive. Maintenant, avec 3 paramètres vous avez obtenu 1 million de combinaisons - il est encore OK pour la recherche exhaustive (mais peut être long). Avec 4 paramètres vous avez 100 millions de combinaisons et avec 5 paramètres (1..100) vous avez 10 milliards de combinaisons. Dans ce cas, il serait trop long pour vérifier tous, et c'est le domaine où les méthodes non-exhaustive de recherche intelligente peut résoudre le problème qui n'est pas résoluble dans un délai raisonnable en utilisant la recherche exhaustive. Voici l'instruction la plus simple pour utiliser un nouvel optimiseur non exhaustif (dans ce cas CMA-ES). 1. Ouvrez votre formule dans l'Editeur de Formule 2. Ajoutez cette ligne unique en haut de votre formule: OptimizerSetEngine (quotcmaequot) vous pouvez également utiliser quotspsoquot ou quottribquot ici 3. (Facultatif) Sélectionnez votre cible d'optimisation dans Automatic Analysis, Settings, quotWalk - Page avant, zone cible Optimisation. Si vous omettez cette étape, elle s'améliorera pour le CARMDD (rendement annuel composé divisé par le retrait maximal). Maintenant, si vous exécutez l'optimisation à l'aide de cette formule, il utilisera de nouveaux évolutive (non exhaustive) CMA-ES optimiseur. Comment fonctionne-t-il L'optimisation est le processus de recherche de la fonction minimum (ou maximum) d'une fonction donnée. Tout système commercial peut être considéré comme une fonction de certain nombre d'arguments. Les entrées sont des paramètres et des données de cotation. La sortie est votre objectif d'optimisation (disons CARMDD). Et vous cherchez le maximum de la fonction donnée. Certains des algorithmes intelligents d'optimisation sont basés sur la nature (comportement animal) - Algorithme PSO, ou processus biologique - Algorithmes génétiques, et certains sont basés sur des concepts mathématiques dérivés par les humains - CMA-ES. Ces algorithmes sont utilisés dans de nombreux domaines différents, y compris la finance. Entrez quotPSO financequot ou quotCMA-ES financequot dans Google et vous trouverez beaucoup d'info. Des méthodes non exhaustives (ou quotsmartquot) trouveront global ou local optimal. L'objectif est bien sûr de trouver globale, mais si il ya un seul pic pointu dans des combinaisons de paramètres zillions, des méthodes non exhaustives mai échouer à trouver ce pic unique, mais en prenant forme commerçants perspecive, trouver un seul pic pointu est inutile pour Parce que ce résultat serait instable (trop fragile) et non réplicable dans le commerce réel. Dans le processus d'optimisation nous recherchons plutôt des régions de plateau avec des paramètres stables et c'est le secteur où les méthodes intelligentes brillent. En ce qui concerne l'algorithme utilisé par la recherche non exhaustive, il apparaît comme suit: a) l'optimiseur génère une population de départ (généralement aléatoire) des ensembles de paramètres b) le test de retour est effectué par AmiBroker pour chaque ensemble de paramètres de la population c) Évaluée selon la logique de l'algorithme et la nouvelle population est générée sur la base de l'évolution des résultats, d) si de nouvelles améliorations sont trouvées, sauvegardez-les et passez à l'étape b) jusqu'à ce que les critères d'arrêt soient satisfaits. Itérations maximales b) s'arrêter si la plage des meilleures valeurs objectives des dernières X générations est nulle c) s'arrêter si l'ajout d'un vecteur d'écart-type 0,1 dans n'importe quelle direction d'axe principal ne change pas la valeur de la valeur objective d) Exhaustif) dans AmiBroker, vous devez spécifier le moteur d'optimisation que vous souhaitez utiliser dans la formule AFL à l'aide de la fonction OptimizerSetEngine. La fonction sélectionne le moteur d'optimisation externe défini par son nom. AmiBroker est actuellement livré avec 3 moteurs: Standard Particle Swarm Optimizer (quotspsoquot), Tribus (quottribquot) et CMA-ES (quotcmaequot) - les noms dans les accolades doivent être utilisés dans les appels OptimizerSetEngine. En plus de sélectionner le moteur d'optimisation, vous pouvez définir certains de ses paramètres internes. Pour ce faire, utilisez la fonction OptimizerSetOption. Fonction OptimizerSetOption (quotnamequot, value) La fonction a défini des paramètres supplémentaires pour le moteur d'optimisation externe. Les paramètres dépendent du moteur. Les trois optimiseurs livrés avec AmiBroker (SPSO, Trib, CMAE) supportent deux paramètres: quotRunsquot (nombre d'exécutions) et quotMaxEvalquot (évaluations maximales (tests) par exécution unique). Le comportement de chaque paramètre dépend du moteur, de sorte que les mêmes valeurs peuvent et, habituellement, donneront des résultats différents avec différents moteurs utilisés. La différence entre Runs et MaxEval est la suivante. L'évaluation (ou le test) est un seul contre-test (ou une évaluation de la valeur de la fonction objective). RUN est une exécution complète de l'algorithme (recherche de la valeur optimale) - impliquant généralement de nombreux tests (évaluations). Chaque exécution simplement RESTARTS l'ensemble du processus d'optimisation à partir du nouveau début (nouvelle population aléatoire initiale). Par conséquent chaque exécution peut conduire à trouver différent local maxmin (si elle ne trouve pas globale). Ainsi, le paramètre Runs définit le nombre d'exécutions d'algorithmes ultérieures. MaxEval est le nombre maximum d'évaluations (bactests) dans une seule exécution. Si le problème est relativement simple et que 1000 tests sont suffisants pour trouver le max global, 5x1000 est plus susceptible de trouver le maximum global car il ya moins de chances d'être coincé dans le max local, Être délicat. Cela dépend du problème à tester, de sa complexité, etc. Toute méthode stochastique non exhaustive ne vous donne pas la garantie de trouver maxmin global, quel que soit le nombre de tests, s'il est plus petit que exhaustif. La réponse la plus facile est de. Spécifiez le nombre de tests qu'il est raisonnable de faire en termes de temps à remplir. Un autre conseil simple est de multiplier par 10 le nombre de tests en ajoutant une nouvelle dimension. Cela peut conduire à surestimer le nombre de tests requis, mais il est tout à fait sûr. Les moteurs expédiés sont conçus pour être simples à utiliser, donc quotreasonablequot defaultautomatique valeurs sont utilisées afin que l'optimisation peut être généralement exécuté sans rien spécifier (acceptant par défaut). Il est important de comprendre que toutes les méthodes d'optimisation intelligentes fonctionnent le mieux dans des espaces de paramètres continus et des fonctions objectives relativement lisses. Si l'espace des paramètres est discret, les algorithmes évolutifs peuvent avoir du mal à trouver la valeur optimale. Il est particulièrement vrai pour les paramètres binaires (onoff) - ils ne sont pas adaptés à toute méthode de recherche qui utilise le gradient de changement de fonction objectif (comme le font la plupart des méthodes intelligentes). Si votre système d'échange contient de nombreux paramètres binaires, vous ne devriez pas utiliser l'optimiseur intelligent directement sur eux. Au lieu de cela, essayez d'optimiser uniquement les paramètres continus à l'aide de l'optimiseur intelligent et changez les paramètres binaires manuellement ou via un script externe. SPSO - Standard Particle Swarm Optimizer est basé sur SPSO2007 code qui est censé produire de bons résultats à condition que les paramètres corrects (c'est-à-Runs, MaxEval) sont fournis pour un problème particulier. Choisir les bonnes options pour l'optimiseur PSO peut être délicat, donc les résultats peuvent varier considérablement d'un cas à l'autre. SPSO. dll est fourni avec des codes sources complets dans le sous-dossier quotADKquot. OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) Optimiser (quotsquot, 26, 1, 100, 1) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotRunsquot, 1) (0, MACD (fa, sl)) TRIBES - Adaptive Parameter-less Optimiseur d'essaim de particules de particules Tribus est adaptatif (quotfquot, 12, 1, 100, 1) , Version sans paramètre de l'optimiseur non exhaustif de PSO (optimisation des essaims de particules). Pour des raisons scientifiques, voir: particleswarm. infoTribes2006Cooren. pdf En théorie, il devrait fonctionner mieux que le PSO régulier, car il peut ajuster automatiquement les tailles des essaims et la stratégie de l'algorithme au problème en cours de résolution. La pratique montre que sa performance est assez similaire à PSO. Le plugin Tribes. DLL implémente la variante quotTribes-Dquot (c'est-à-dire sans dimension). Basé sur clerc. maurice. free. frpsoTribesTRIBES-D. zip par Maurice Clerc. Les codes sources originaux utilisés avec l'autorisation de l'auteur Tribes. DLL sont fournis avec le code source complet (dans le dossier quotADKquot) Paramètres supportés: quotMaxEvalquot - nombre maximum d'évaluations (backtests) par run (par défaut 1000). Vous devez augmenter le nombre d'évaluations avec un nombre croissant de dimensions (nombre de paramètres d'optimisation). Le 1000 par défaut est bon pour 2 ou 3 dimensions maximum. QuotRunsquot - nombre de cycles (redémarrages). (Par défaut 5) Vous pouvez laisser le nombre d'exécutions à la valeur par défaut de 5. Par défaut, le nombre d'exécutions (ou redémarrages) est défini sur 5. Pour utiliser l'optimiseur Tribes, il suffit d'ajouter une ligne à votre code: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 évaluations max CMA-ES - Covariance Matrix Adaptation Optimiseur de stratégie évolutionnaire CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) est avancé non exhaustive optimiseur. Pour des raisons scientifiques voir: bionik. tu-berlin. deusernikocmaesintro. html Selon des repères scientifiques surperforme neuf autres, les stratégies évolutives les plus populaires (comme PSO, évolution génétique et différentielle). Bionik. tu-berlin. deusernikocec2005.html Le plugin CMAE. DLL implémente quotGlobalquot variante de recherche avec plusieurs redémarrages avec la taille de la population croissante CMAE. DLL est livré avec le code source complet (dans le dossier quotADKquot) Par défaut le nombre d'exécutions (ou redémarre) est défini À 5. Il est conseillé de laisser le nombre de redémarrages par défaut. Vous pouvez le varier en utilisant l'appel OptimizerSetOption (quotRunsquot, N), où N doit être dans la plage 1..10. La spécification de plus de 10 exécutions n'est pas recommandée, bien que possible. Notez que chaque exécution utilise TWICE la taille de la population de l'exécution précédente de sorte qu'il croît de façon exponentielle. Par conséquent, avec 10 courses, vous vous retrouvez avec la population 210 plus grande (1024 fois) que la première série. Il existe un autre paramètre quotMaxEvalquot. La valeur par défaut est ZERO, ce qui signifie que le plugin calcule automatiquement MaxEval requis. Il est conseillé de ne pas définir MaxEval par vous-même comme défaut fonctionne bien. L'algorithme est assez intelligent pour minimiser le nombre d'évaluations requises et il converge très rapidement au point de solution, si souvent il trouve des solutions plus rapidement que d'autres stratégies. Il est normal que le plugin saute quelques étapes d'évaluation, si elle détecte que la solution a été trouvée, donc vous ne devriez pas être surpris que la barre de progression d'optimisation peut se déplacer très rapidement à certains points. Le plugin a également la capacité d'augmenter le nombre d'étapes sur la valeur initialement estimée si elle est nécessaire pour trouver la solution. En raison de son caractère adaptatif, le temps quotestimated leftquot andor quotnumber de stepsquot affiché par le dialogue de progression est seulement quotbest devinez à l'timequot et peut varier pendant cours d'optimisation. Pour utiliser l'optimiseur CMA-ES, il vous suffit d'ajouter une ligne à votre code: Ceci exécutera l'optimisation avec des paramètres par défaut qui sont très bien pour la plupart des cas. Il convient de noter, comme c'est le cas avec de nombreux algorithmes de recherche d'espace continu, que la diminution du paramètre quotstepquot dans les appels de fonction Optimize () n'affecte pas de manière significative les temps d'optimisation. La seule chose qui importe est le problème quotdimension, c'est-à-dire le nombre de paramètres différents (nombre d'optimiser les appels de fonction). Le nombre de quotstepsquot par paramètre peut être défini sans affecter le temps d'optimisation, donc utilisez la meilleure résolution que vous voulez. En théorie, l'algorithme devrait être en mesure de trouver une solution dans au plus 900 (N3) (N3) backtests où quotNquot est la dimension. En pratique, il converge beaucoup plus rapidement. Par exemple, on peut trouver la solution en espace de paramètre dimensionnel 3 (N3) (par exemple 100100100 1 million d'étapes exhaustives) dans seulement 500-900 étapes CMA-ES. Optimisation individuelle multi-thread A partir de AmiBroker 5.70 en plus du multithreading multi-symbole. Vous pouvez effectuer l'optimisation à symbole unique multi-thread. Pour accéder à cette fonctionnalité, cliquez sur la flèche déroulante à côté du bouton quotOptimizequot dans la fenêtre Nouvelle analyse et sélectionnez quot. QuotIndividual Optimizequot utilisera tous les cœurs de processeur disponibles pour effectuer l'optimisation d'un seul symbole, ce qui le rend beaucoup plus rapide que l'optimisation régulière. Dans le mode quotCurrent symbolquot, il effectue l'optimisation sur un symbole. Dans tous les modes de symboles et quotFilterquot, il traitera tous les symboles de façon séquentielle, c'est-à-dire la première optimisation complète pour le premier symbole, puis l'optimisation sur le second symbole, etc. Limitations: 1. Le backtestter personnalisé n'est PAS supporté (encore) Seule l'optimisation EXHAUSTIVE fonctionne. Finalement, nous pouvons nous débarrasser de la limitation (1) - lorsque AmiBroker est modifié pour backtester personnalisé n'utilise plus OLE. Mais (2) est probablement ici pour rester longtemps.


No comments:

Post a Comment