MetaTrader 4 - Exemples utilisant des réseaux neuronaux dans MetaTrader Introduction Beaucoup d'entre vous ont probablement envisagé la possibilité d'utiliser des réseaux neuronaux dans votre EA. Ce sujet a été très chaud surtout après 2007 Automated Trading Championship et le gain spectaculaire par Better avec son système basé sur des réseaux de neurones. Beaucoup de forums Internet ont été inondés de sujets liés aux réseaux de neurones et de trading Forex. Malheureusement, l'écriture natif MQL4 mise en œuvre de NN n'est pas facile. Il nécessite certaines compétences de programmation et le résultat ne serait pas très efficace en particulier si youd comme pour tester votre résultat final dans le testeur sur un grand nombre de données. Dans cet article Ill vous montrer comment vous pouvez utiliser le librement disponible (sous LGPL), renommée Fast Artificielle Neural Network Library (FANN) dans votre code MQL4 tout en évitant certains obstacles et limitations. En outre, je suppose que le lecteur est familier avec les réseaux neuronaux artificiels (ann) et la terminologie liée à ce sujet si mal se concentrer sur les aspects pratiques de l'utilisation de la mise en œuvre particulière de ann dans le langage MQL4. Fonctionnalités de FANN Pour bien comprendre les possibilités de mise en œuvre de FANN, il est nécessaire de se familiariser avec sa documentation et les fonctions les plus couramment utilisées. L'utilisation typique de FANN est de créer un réseau feedforward simple, le former avec quelques données et exécuter. Le réseau créé et formé peut ensuite être enregistré dans un fichier et restauré ultérieurement pour une utilisation ultérieure. Pour créer une ann on doit utiliser la fonction fanncreatestandard (). Permet de voir sa syntaxe: Où numlayers représente le nombre total de couches, y compris l'entrée et la couche de sortie. Le lnnum et les arguments suivants représentent le nombre de neurones dans chaque couche commençant par la couche d'entrée et se terminant par la couche de sortie. Pour créer un réseau avec une couche cachée avec 5 neurones, 10 entrées et 1 sortie il faudrait l'appeler comme suit: Une fois l'ann créée, l'opération suivante serait de la former avec quelques données d'entrée et de sortie. La méthode d'entraînement la plus simple est la formation incrémentielle qui peut être obtenue par la fonction suivante: Cette fonction prend le pointeur à struct fann retourné précédemment par fanncreatestandard () et à la fois le vecteur de données d'entrée et le vecteur de données de sortie. Les vecteurs d'entrée et de sortie sont de type array de type fanntype. Ce type est en fait un type double ou flottant, selon la façon dont le FANN est compilé. Dans cette implémentation, les vecteurs d'entrée et de sortie vont être des matrices de double. Une fois que l'ann est entraîné, la prochaine caractéristique souhaitée serait d'exécuter ce réseau. La fonction de mise en œuvre qui est définie comme suit: Cette fonction prend le pointeur à struct fann représentant le réseau créé précédemment et un vecteur d'entrée du type défini (double tableau). La valeur retournée est un tableau vectoriel de sortie. Ce fait est important comme pour un réseau utput nous allways obtenir un tableau élément avec la valeur de sortie plutôt que la valeur de sortie elle-même. Malheureusement, la plupart des fonctions FANN utilisent un pointeur vers une structure fann représentant l'ann qui ne peut pas être directement gérée par MQL4 qui ne prend pas en charge les structures sous forme de types de données. Pour éviter cette limitation, nous devons envelopper cela d'une certaine manière et nous cacher de MQL4. La méthode la plus simple consiste à créer un tableau de pointeurs struct fann contenant les valeurs appropriées et se référer à eux avec un index représenté par une variable int. De cette façon, nous pouvons remplacer le type de variable non pris en charge par un support et créer une bibliothèque d'encapsuleurs qui peut être facilement intégrée au code MQL4. Enveloppant le FANN autour Comme à ma meilleure connaissance MQL4 ne supporte pas les fonctions avec la liste variable d'arguments ainsi nous devons traiter cela aussi. D'autre part, si la fonction C (de la longueur des arguments variables) est appelée avec trop d'arguments, rien de mal ne se produit, donc nous pouvons supposer un nombre maximum fixe d'arguments dans la fonction MQL4 passée à la bibliothèque C. La fonction wrapper résultante ressemblerait à la suivante: Nous avons modifié le fann principal avec f2M (qui signifie FANN TO MQL), utilisé le nombre d'arguments statiques (4 couches) et la valeur de retour est maintenant un index de tableau interne de anns tenant la structure Fann requises par FANN pour fonctionner. De cette façon, nous pouvons facilement appeler une telle fonction à partir du code MQL. Il en va de même pour: Enfin, le fait que vous devriez détruire votre annonce une fois créée par l'appel à: Pour libérer des poignées ann vous devez détruire les réseaux dans l'ordre inverse qu'ils ont été créés créés. Sinon, vous pouvez utiliser: Cependant, je suis sûr que certains d'entre vous préfèrent peut-être sauver leur réseau formé pour une utilisation ultérieure avec: Bien sûr, le réseau sauvegardé peut plus tard être chargé (ou plutôt recréé) avec: Une fois que nous connaissons les fonctions de base que nous pourrions essayer Utilisez-le dans notre EA, mais nous devons d'abord installer le package Fann2MQL. Installation de Fann2MQL Pour faciliter l'utilisation de ce paquet, j'ai créé le programme d'installation msi qui contient tout le code source plus les bibliothèques précompilées et le fichier d'en-tête Fann2MQL. mqh qui déclare toutes les fonctions Fann2MQL. La procédure d'installation est assez simple. Tout d'abord vous êtes informé que Fann2MQL est sous licence GPL: Installation de Fann2MQL, étape 1 Ensuite, choisissez le dossier pour installer le paquet. Vous pouvez utiliser le programme par défaut FilesFann2MQL ou installer directement dans votre répertoire Meta Traderexperts. Le plus tard placera tous les fichiers directement dans leurs endroits sinon vous devrez les copier manuellement. Installation de Fann2MQL, étape 2 Le programme d'installation place les fichiers dans les dossiers suivants: Si vous choisissez d'installer dans le dossier Fann2MQL dédié, copiez le contenu de ses sous-dossiers d'inclusion et de bibliothèque dans votre répertoire approprié Meta Trader. Le programme d'installation installe également la bibliothèque FANN dans votre dossier de bibliothèques système (Windowssystem32 dans la plupart des cas). Le dossier src contient tout le code source de Fann2MQL. Vous pouvez lire le code source qui est une documentation ultime si vous avez besoin de plus d'informations sur les internes. Vous pouvez également améliorer le code et ajouter des fonctionnalités supplémentaires si vous le souhaitez. Je vous encourage à m'envoyer vos patchs si vous mettez en œuvre quelque chose d'intéressant. Utilisation des réseaux de neurones dans votre EA Une fois que le Fann2MQL est installé, vous pouvez commencer à écrire votre propre EA ou indicateur. Theres beaucoup d'utilisation possible de NN. Vous pouvez les utiliser pour prévoir les mouvements futurs des prix, mais la qualité de ces prédictions et la possibilité de tirer un avantage réel de celle-ci est douteuse. Vous pouvez essayer d'écrire votre propre stratégie en utilisant des techniques d'apprentissage de renforcement, dire un Q-Learning ou quelque chose de similaire. Vous pouvez essayer d'utiliser NN comme filtre de signal pour votre EA heuristique ou de combiner toutes ces techniques plus tout ce que vous voulez vraiment. Vous êtes limité par votre imagination seulement. Ici, je vais vous montrer un exemple d'utilisation NN comme un simple filtre pour les signaux générés par MACD. S'il vous plaît ne pas considérer comme EA précieuse, mais comme un exemple d'application de Fann2MQL. Au cours de l'explication de la façon dont l'exemple EA: NeuroMACD. mq4 fonctionne Ill vous montrer comment le Fann2MQL peut être utilisé efficacement dans MQL. La première chose pour chaque EA est la déclaration des variables globales, définit et inclut la section. Voici le début de NeuroMACD contenant ces choses: La commande include dit de charger le fichier d'en-tête Fann2MQL. mqh contenant la déclaration de toutes les fonctions Fann2MQL. Ensuite, toutes les fonctions du package Fann2MQL sont disponibles pour être utilisées dans le script. La constante ANNPATH définit le chemin pour stocker et charger des fichiers avec des réseaux FANN formés. Vous devez créer ce dossier, c'est-à-dire C: ANN. La constante NOM contient le nom de cette EA, qui est utilisée plus tard pour charger et enregistrer des fichiers réseau. Les paramètres d'entrée sont plutôt évidents et ceux qui ne sont pas expliqués plus tard, ainsi que les variables globales. Le point d'entrée de chaque EA est sa fonction init (): Tout d'abord, il vérifie si l'EA est appliquée à la période de temps correcte. La variable AnnInputs contient le nombre d'entrées de réseau neuronal. En plus d'utiliser 3 ensembles d'arguments différents, nous voulons qu'il soit divisible par 3. AnnPath est calculé pour refléter le NOM EA et MagicNumber. Qui est calculée à partir du SlowMA. FastMA et SignalMA qui sont ensuite utilisés pour la signalisation de l'indicateur MACD. Une fois qu'il connaît l'AnnPath, l'EA essaie de charger des réseaux neuronaux à l'aide de la fonction annload () que Ill décrit ci-dessous. La moitié des réseaux chargés est destinée au filtrage de la position longue et l'autre moitié est destinée aux courts-circuits. La variable AnnsLoaded est utilisée pour indiquer le fait que tous les réseaux ont été correctement initialisés. Comme vous l'avez probablement remarqué, cet exemple essaye de charger plusieurs réseaux. Je doute de son vraiment nécessaire dans cette application, mais je voulais vous montrer le plein potentiel de Fann2MQL, qui gère plusieurs réseaux en même temps et peut les traiter en parallèle en profitant de plusieurs cœurs ou des CPU. Pour le rendre possible, Fann2MQL profite de la technologie Intel Threading Building Blocks. La fonction f2Mparallelinit () est utilisée pour initialiser cette interface. Voici comment j'ai utilisé pour initialiser les réseaux: Comme vous pouvez voir si le f2Mcreatefromfile () échoue, ce qui est indiqué par la valeur de retour négative, le réseau est créé avec la fonction f2Mcreatestandard () avec des arguments indiquant que le réseau créé devrait avoir 4 couches (Entrées et sorties comprises), les entrées AnnInput, les neurones AnnInput dans la première couche cachée, les neurones AnnInput21 dans la deuxième couche cachée et 1 neurone dans la couche de sortie. F2Msetactfunctionhidden () est utilisé pour définir la fonction d'activation des couches cachées sur SIGMOIDSYMMETRICSTEPWISE (voir la documentation FANN de fannactivationfuncenum) et la même chose pour la couche de sortie. Puis il ya l'appel à f2mrandomizeweights () qui est utilisé pour initialiser les poids des connexions des neurones à l'intérieur du réseau. Ici, j'ai utilisé la gamme de lt-0.4 0.4gt, mais vous pouvez utiliser n'importe quel autre en fonction de votre application. À ce stade, vous avez probablement remarqué la fonction debug () que j'ai utilisé un couple de fois. C'est l'une des méthodes les plus simples pour modifier le niveau verbeux de votre EA. Avec lui et le paramètre d'entrée DebugLevel, vous pouvez régler la façon dont votre code produit la sortie de débogage. Si le premier argument de la fonction debug (), le niveau de débogage est supérieur à DebugLevel, la fonction ne produit aucune sortie. Si sa valeur inférieure à égale à la chaîne de texte est imprimée. Si le niveau de débogage est 0, la chaîne ERROR: est ajoutée au début. De cette façon, vous pouvez diviser le débogage produit par votre code à plusieurs niveaux. Les plus importants sont probablement des erreurs, donc ils sont affectés au niveau 0. Ils seront imprimés à moins que vous abaissiez votre DebugLevel en dessous de 0 (ce qui n'est pas conseillé). Au niveau 1, certaines informations importantes seront imprimées, comme la confirmation du chargement ou de la création réussie du réseau. Au niveau 2 ou plus, l'importance de l'information imprimée diminue progressivement. Avant l'explication détaillée de la fonction start (), qui est assez longue, je dois vous montrer quelques fonctions supplémentaires destinées à préparer l'entrée réseau et l'exécution des réseaux réels: La fonction annprepareinput () est utilisée pour préparer le nom d'entrée pour les réseaux (Ainsi le nom). Le but de celui-ci est assez simple, mais c'est le point que je dois vous rappeler que les données d'entrée doit être correctement normalisé. Il n'y a pas de normalisation sophistiquée dans ce cas, j'ai simplement utilisé les valeurs principales et de signal MACD qui ne dépassent jamais la plage désirée sur les données comptabilisées. Dans le vrai exemple, vous devriez probablement accorder plus d'attention à ce problème. Comme vous pouvez probablement soupçonner le choix des arguments d'entrée appropriés pour l'entrée réseau, le codage, la décomposition et la normalisation est l'un des facteurs les plus importants dans le traitement du réseau neuronal. Comme je l'ai mentionné avant le Fann2MQL a la capacité d'étendre la fonctionnalité normale de MetaTrader, qui est le traitement multithread parallèle des réseaux neuronaux. L'argument global Parallèle contrôle ce comportement. La fonction runanns () exécute tous les réseaux initialisés et obtient les sorties de ceux-ci et les magasins dans le tableau AnnOutput. La fonction annsrunparallel est chargée de gérer le travail de la manière multithread. Il appelle le f2mrunparallel () qui prend comme premier argument le nombre de réseaux à traiter, le second argument est un tableau contenant des poignées à tous les réseaux que vous souhaitez exécuter en fournissant le vecteur d'entrée comme troisième argument. Tous les réseaux doivent être exécutés sur les mêmes données d'entrée. L'obtention de la sortie du réseau se fait par plusieurs appels à f2mgetoutput (). Voyons maintenant la fonction start (): Ill décrire brièvement car il est assez bien commenté. Le tradeallowed () vérifie s'il est autorisé à échanger. Fondamentalement, il vérifie la variable AnnsLoaded indiquant que tous anns ont été initialiser correctement, puis vérifie pour le temps de la période de trame minutieuse et juste à la fin permet de négocier uniquement sur la première coche d'une nouvelle barre. Deux fonctions suivantes qui sont utilisés pour préparer l'entrée réseau et exécuter le traitement du réseau ont été décrites juste quelques lignes ci-dessus. Ensuite, nous calculons et mettons en variables pour le traitement ultérieur les valeurs MACD du signal et de la ligne principale pour la dernière barre d'accumulation et la précédente. La barre actuelle est omise car elle n'est pas encore construite et sera probablement redessinée. Le SellSignal et BuySignal sont calculés en fonction du signal MACD et du crossover de la ligne principale. Les deux signaux sont utilisés pour le traitement de position longue et courte qui sont symétriques de sorte que je ne décrira que le cas pour les longs. La variable LongTicket contient le numéro du ticket de la position ouverte. Si son égal à -1 aucune position n'est ouverte donc si le BuySignal est placé qui pourrait indiquer la bonne occasion d'ouvrir la position longue. Si la variable NeuroFilter n'est pas définie, la position longue est ouverte et c'est le cas sans le filtrage des signaux neuronaux - l'ordre est envoyé à l'achat. À ce stade, la variable LongInput est destinée à mémoriser le InputVector préparé par annprepareinput () pour une utilisation ultérieure. Si la variable LongTicekt contient le numéro de ticket valide, l'EA vérifie si elle est encore ouverte ou si elle a été fermée par StopLoss ou TakeProfit. Si l'ordre n'est pas fermé, il ne se passe rien. Cependant, si l'ordre est fermé, le vecteur de sortie de train, qui n'a qu'un seul débit, est calculé pour garder la valeur -1 si l'ordre a été fermé avec perte ou 1 si l'ordre a été fermé avec profit . Cette valeur est ensuite transmise à la fonction anntrain () et tous les réseaux responsables de la manipulation de la position longue sont entraînés avec elle. En tant que vecteur d'entrée, on utilise la variable LongInput, qui maintient le InputVector au moment de l'ouverture de la position. De cette façon, on enseigne au réseau quel est le signal qui apporte des profits et lequel n'est pas. Une fois que vous avez un réseau formé de commutation de la NeuroFilter à true tourne le filtrage du réseau. L'annwiselong () utilise le réseau neuronal sage calculé comme une moyenne des valeurs renvoyées par tous les réseaux destinés à gérer la position longue. Le paramètre Delta est utilisé comme valeur seuil indiquant que le signal filtré est valide ou non. Comme beaucoup d'autres valeurs, il a été obtenu à travers le processus d'optimisation. Maintenant, une fois que nous savons comment il fonctionne Ill vous montrer comment il peut être utilisé. La paire test est bien sûr EURUSD. J'ai utilisé les données d'Alpari. Converti en temps M5. J'ai utilisé la période de 2007.12.31 à 2009.01.01 pour l'optimisation de la formation et 2009.01.01-2009.03.22 à des fins de test. Dans le tout premier essai, j'ai essayé d'obtenir les valeurs les plus rentables pour les arguments StopLoss, TakeProfit, SlowMA, FastMA et SignalMA, que j'ai ensuite codé dans le fichier NeuroMACD. mq4. Le NeuroFIlter a été désactivé ainsi que SaveAnn. Le AnnsNumber a été mis à 0 pour éviter le traitement neuronal. J'ai utilisé l'algorithme génétique pour le processus d'optimisation. Une fois les valeurs obtenues, le rapport résultant se présente comme suit: Rapport sur les données de formation après optimisation de base des paramètres. Comme vous pouvez le voir, j'ai exécuté cette EA sur le compte mini avec la taille de lot de 0,01 et le solde initial de 200. Toutefois, vous pouvez régler ces paramètres en fonction des paramètres de votre compte ou préférences. À ce stade, nous avons assez de métiers rentables et perdants afin que nous puissions activer le SaveAnn et définir le AnnsNumber à 30. Une fois terminé, je cours le testeur une fois de plus. Le résultat était exactement le même avec le seul fait que le processus était beaucoup plus lent (à la suite d'un traitement neuronal) et le dossier C: ANN était rempli avec les réseaux formés comme montré sur l'image ci-dessous. Assurez-vous que le dossier C: ANN existait avant cette exécution Le dossier C: ANN. Une fois que nous avons formé des réseaux de son temps pour tester comment il se comporte. Tout d'abord essayez-le sur les données d'entraînement. Changez le NeuroFilter sur true et SaveAnn sur false et démarrez le testeur. Le résultat que j'ai obtenu est montré ci-dessous. Notez que cela peut varier légèrement pour vous car il ya un certain aléa - lité à l'intérieur des réseaux dans les poids de connexion des neurones fournis au processus d'initialisation du réseau (dans cet exemple, j'ai utilisé un appel explicite à f2Mrandomizeweights () dans annload ()). Résultat obtenu sur les données de formation avec filtrage neural du signal activé. Le bénéfice net est légèrement supérieur (20,03 contre 16,92), mais le facteur bénéfice est beaucoup plus élevé (1,25 contre 1,1). Le nombre de transactions est beaucoup moins élevé (83 vs 1188) et le nombre moyen de pertes consécutives est réduit de 7 à 2. Cependant, il montre seulement que le filtrage des signaux neuronaux fonctionne, mais il ne dit rien sur la façon dont il fonctionne sur les données qui n'ont pas été utilisés pour Pendant la formation. Le résultat que j'ai obtenu à partir de la période d'essai (2009.01.01 - 2009.30.28) est indiqué ci-dessous: Résultat obtenu à partir des données d'essai avec filtre neural activé. Le nombre de transactions effectuées est assez faible et il est difficile de dire la qualité de cette stratégie, mais je n'allais pas vous montrer comment écrire la meilleure EA rentable, mais d'expliquer comment vous pourriez utiliser les réseaux neuronaux dans votre code MQL4. L'effet réel de l'utilisation de réseaux neuronaux dans ce cas ne peut être vu que lors de la comparaison des résultats de l'EE sur les données d'essai avec NeuroFilter activé et désactivé. Ci-dessous le résultat obtenu à partir de la période de test des données sans filtrage des signaux neuronaux: Résultats des tests de données sans filtrage neural. La différence est tout à fait évidente. Comme vous pouvez le voir le filtrage du signal neuronal a transformé l'EA perdant en une rentable Conclusion J'espère que vous avez appris de cet article comment utiliser les réseaux neuronaux dans MetaTrader. Avec l'aide de Fann2MQL simple, libre et opensource package, vous pouvez facilement ajouter la couche de réseau neuronale dans pratiquement n'importe quel Expert Advisor ou commencer à écrire votre propre qui est entièrement ou partiellement basé sur des réseaux neuronaux. La capacité multithreading unique peut accélérer votre traitement de nombreuses fois, en fonction du nombre de vos noyaux CPU, en particulier lors de l'optimisation de certains paramètres. Dans un cas, il a raccourci l'optimisation de mon apprentissage basé sur le renforcement EA de traitement d'environ 4 jours à seulement 28 heures sur un processeur Intel 4 cœur. Au cours de la rédaction de cet article, j'ai décidé de mettre Fann2MQL sur son propre site web: fann2mql. wordpress. Vous y trouverez la dernière version de Fann2MQL et éventuellement toutes les versions futures ainsi que la documentation de toutes les fonctions. Je promets de garder ce logiciel sous licence GPL pour toutes les versions, donc si vous m'envoyez des commentaires, des demandes de fonctionnalités ou des correctifs que je trouverai intéressants, assurez-vous de les trouver les prochaines versions. Notez que cet article montre uniquement l'utilisation très simple de Fann2MQL. Comme ce paquet n'est pas beaucoup plus que FANN vous pouvez utiliser tous les outils conçus pour la gestion des réseaux FANN, comme: Et theres beaucoup plus sur FANN sur la page d'accueil Fast Artificial Neural Network Library: leenissen. dkfann Post Scriptum Après avoir écrit cet article, j'ai trouvé Une erreur insignifiante dans NeuroMACD. mq4. La fonction OrderClose () pour la position courte a été alimentée avec le numéro de ticket de position longue. Il a abouti à une stratégie biaisée qui était plus susceptible de tenir des courts métrages et close longs: Dans la version correcte du script, j'ai corrigé cette erreur et supprimé la stratégie OrderClose () à tous. Cela n'a pas changé l'image globale de l'influence du filtrage neural sur l'EA mais la forme de la courbe d'équilibre était tout à fait différente. Vous pouvez trouver les deux versions de cette EA jointe à cet article. Réseau neuronal Le réseau neuronal est l'un des buzzwords les plus récents dans le commerce. Il semble cool et sophistiqué. Pas trop de gens semblent comprendre ce que les réseaux de neurones sont tout au sujet. Les neurones dans le monde réel Nos cerveaux sont phénoménalement compliqués. Ce qui surprend la plupart des gens, c'est que le cerveau est plus ou moins une énorme boîte de circuits. Les neurones sont des cellules qui agissent comme des circuits avec des fils électriques, appelés axones, qui s'échappent et se connectent à travers le corps humain. Chaque mouvement, perception ou action que vous faites est la somme de tous les axones tirant des impulsions électriques. Le changement se produit chaque fois que la fréquence des impulsions électriques envoyées par le neurone varie. Plus d'impulsions provoquent une réaction, une réduction provoque une autre. Les réseaux neuronaux tentent d'imiter les processus du cerveau humain en organisant l'information dans les neurones. Contrairement aux cellules neuronales réelles, un neurone réseau n'existe que dans la machine. C'est un poids machine qui contient des informations sur ce qui est à l'étude. Un réseau de neurones pour un système commercial pourrait décider d'étudier des indicateurs communs comme une moyenne mobile, l'oscillateur RSI et stochastique. La valeur moyenne mobile de la barre courante compte comme son propre neurone. Le RSI est différent, il devient donc un neurone distinct. Si j'ai dix indicateurs dans ma boîte à outils, alors j'ai 10 neurones dans mon réseau. Les ordinateurs résolvent traditionnellement des problèmes simples et linéaires. Si vous voulez connaître le résultat des opérations mathématiques comme la racine du cube de 355, les ordinateurs sont parfaits pour la tâche. Ils calculent rapidement une réponse précise. Comme dans le cerveau humain, les réseaux de neurones forment des synapses avec d'autres neurones. Une fois formés, des groupes de neurones peuvent apprendre à reconnaître des modèles. C'est cette propriété qui rend les réseaux de neurones si utiles. Cela nous permet de créer des programmes qui seraient impossibles avec l'informatique traditionnelle. Créer un programme logiciel pour reconnaître un visage, par exemple, serait extrêmement difficile. Il est beaucoup plus facile de former un réseau pour reconnaître un visage en montrant à plusieurs reprises les visages du réseau. Le cerveau est un sujet fascinant à part entière. En marge, mon épouse et moi-même faisons un sondage en neurosciences à l'aide d'une série vidéo intitulée The Great Courses. Si vous avez un intérêt quelconque dans le sujet, je recommande fortement la compréhension du cerveau par Jeanette Norden. Il couvre en détail comment les neurones se connecter à l'anatomie à travers le cerveau et le corps tout entier. Réseaux de neurones et Forex Trading Les réseaux de neurones entrent en jeu lorsque la réponse n'est pas si précise. S'en tenir à ce thème blogs de trading forex, il n'ya pas de bonne réponse à ce qui rend le système commercial parfait. Un investisseur de détail typique pourrait dire le meilleur système commercial est celui qui fait le plus d'argent. Un autre pourrait dire que le meilleur système commercial est celui avec le plus haut ratio de Sharpe. Beaucoup veulent quelque chose au milieu. Le meilleur problème du système commercial est ambigu, ce qui en fait un candidat idéal pour attaquer avec des réseaux neuronaux. Le concepteur décrit des ensembles de règles qui, selon les opérateurs économiques, constituent une méthode numérique de mesure du meilleur système. Les cerveaux humains accueillent environ 100 milliards de neurones. Malgré les efforts de bon nombre de nos clients, je n'ai pas encore rencontré quelqu'un avec 100 milliards d'indicateurs de marché à leur disposition. Une façon d'amplifier l'effet des neurones dans notre boîte à outils est de créer des couches cachées. Un réseau est composé de plusieurs couches, chacune composée de neurones multiples. Chaque neurone est connecté à chaque neurone dans la couche suivante. Chaque connexion porte alors sa propre valeur pondérée unique. Un neurone transmet sa valeur en multipliant la valeur du neurone et par le poids de la connexion sortante. Le neurone à la fin de la connexion sortante résume toutes ses connexions entrantes et propage ce résultat sur la couche suivante à travers toutes ses connexions sortantes. Les images rendent l'idée beaucoup plus intuitive. La figure 1 contient un petit exemple. Les 2 et 3 sur la gauche sont les entrées dans le réseau. Ces entrées sont multipliées par le poids de la connexion à la couche suivante. Le 2 est multiplié par 0,5 nous donnant 1 et 3 par 2 nous donnant 6. La deuxième couche contient un nœud qui résume les résultats de la couche précédente, nous donnant 7. L'étape suivante serait de multiplier 7 par les poids sur Les connexions sortantes et le passer sur la couche suivante. Figure 1: Exemple de réseau neuronal propageant les résultats vers l'avant. Le court exemple ci-dessus peut être répété et enchaîné ensemble pour former un réseau plus grand. Ci-dessous, dans la figure 2, nous avons un exemple d'un réseau plus grand. Le réseau exemple comporte 3 entrées qui sont connectées à une couche cachée. La couche cachée est alors connectée à une seule sortie. Les couches cachées sont de faciliter la formation. Plus le problème est complexe, plus il faut de couches et de nœuds. Figure 2: Exemple d'un réseau de neurones de plus grande taille. Le réseau apprend en mettant à jour les poids de ses nombreuses connexions. Il existe de nombreux algorithmes logiciels qui sont utilisés pour accomplir l'apprentissage dans les réseaux neuronaux. Ils relèvent de deux catégories: l'apprentissage supervisé et l'apprentissage non supervisé. L'apprentissage supervisé est accompli avec l'utilisateur indiquant au réseau si ses prédictions sont correctes ou non. Le réseau calcule ensuite son erreur et utilise l'un des algorithmes pour corriger l'erreur. Un exemple de ceci est la propagation inverse, qui calcule l'erreur d'une prédiction de réseaux. Le réseau utilise alors un algorithme rapide pour mettre à jour chacun des poids de connexion avec cette erreur. La propagation inverse est l'une des stratégies de formation les plus courantes. L'apprentissage non supervisé utilise un type d'aptitude ou d'algorithme de notation dans lequel le réseau se marquera et tentera d'améliorer chaque tentative ultérieure. Un exemple d'entraînement non supervisé est l'algorithme génétique. Cet algorithme crée une population de réseaux de neurones et utilise un algorithme de notation conçu par l'utilisateur pour classer la population. Après cela, c'est la survie du plus apte. Les réseaux les mieux classés restent et se reproduisent et les moins bien classés sont expulsés. Les réseaux se reproduisent en mélangeant et en adaptant les poids de connexion. Les réseaux de neurones peuvent considérablement aider les opérateurs de systèmes dans leur conception d'algorithme en explorant des milliards de combinaisons parmi une boîte à outils relativement petite d'indicateurs. Cela diffère de l'optimisation standard, qui consiste à brancher des numéros dans divers indicateurs à la recherche de quelle combinaison retourne le plus d'argent. Le fait que les réseaux puissent envisager des mesures multiples (équilibre, ratio de Sharpe, etc.) pour déterminer le meilleur système d'échange aide à réduire la probabilité qu'il accentue trop une mesure particulière. Un bon exemple de cela est l'équilibre des comptes. Si un système pèse le rapport entre le rendement net et le rendement ajusté au risque, il commence à s'écarter du calcul du nombre pour découvrir les meilleurs nombres à utiliser et se diriger vers l'apprentissage réel et la reconnaissance des motifs. Les réseaux neuronaux se révèlent être très utiles dans un large éventail d'applications, de la reconnaissance faciale aux prévisions du marché monétaire. Ils excellent là où il ya des modèles qui sont difficiles à reconnaître. Cette capacité rend les réseaux précieux dans la résolution de problèmes difficiles impliquant de multiples variables. Laisser un commentaire Annuler la réponse.
No comments:
Post a Comment