Thursday, 16 February 2017

Forex_nn_ind

Pas attendre une minute :) Il n'y a aucun moyen de l'exécuter tick par tick - il trades à la fin de la barre: En outre, le délai est de 1 heure: Aussi aussi :) Je n'ai aucune idée comment il va effectuer. Je ne l'ai testé que sur HISTOIRE. Ouvrir le mode uniquement des prix est suffisant, et assez rapide pour tester et optimiser. Il est en probation pendant environ une semaine sur ma démo, et jusqu'à présent produit seulement 1 commerce, alors ne vous attendez pas à commencer à perdre de l'argent :) immédiatement. Quand j'ai assez de métiers réels pour poster, mauvais poste. Aussi également :))) lire la clause de non-responsabilité des auteurs. C'est un exemple, pas un graal. Dommage :( gtgtgt Permettez-moi de l'essayer dès le début ltltlt 1. Copie d'un expert à partir de l'article Enregistrement en tant que testexpert. mq4 Compilation (F5): succès 2. Copie d'un indicateur. Testind. mq4 Compilation: succès 3. OOPS Renommer l'indicateur dans le code expert, car il n'est pas forexnnind plus :) 4. Test. Paramètres: EURUSD, H1, Ouvrir les prix seulement, Recalculer coché. Résultats: 0 métiers. OK, je pense que je l'ai eu. Je sais quel est le problème. Je vais le mettre dans le prochain post, pour le garder lisible. OK, je suis ici, en gardant mon promesse (voir la fin de mon poste précédent). La raison pour laquelle il n'ya pas de métiers, est dans la boîte de dialogue Propetries Expert. Les propriétés ne sont pas définies Elles sont toutes des zéros. Jetez un coup d'œil à l'expert. Si nous ne sommes pas test (trading en temps réel), les propriétés sont initiées à quotoptimal valuesquot. Si nous sommes TESTS - ils ne sont pas. Vous devez le faire à la main. Donc, pour continuer l'avant. : 5. Définition des propriétés d'expert à: dBuyLevel 0.21 dSellLevel 0.9 dStopLoss 200 Point dTrailingStop 200 Point (et pour optimiser, vous devrez également définir une plage pour chaque variable) Résultats de ce test (comme c'est, de l'article, pas Optimisé): Barres dans le test 17770 Tiques modélisées 35440 Qualité de la modélisation nd Dépôt initial 1000.00 Total du bénéfice net 2098.85 Bénéfice brut 6758.65 Perte brute -4659.80 Facteur de bénéfices 1.45 Rémunération escomptée 32.29 Dette absolue 0.00 Diminution maximale 1188.55 (27.7) Gagné) 2 (50,00) Positions longues (gagné) 63 (44,44) Profit métiers (sur le total) 29 (44,62) Perte transactions (sur le total) 36 (55,38) Plus grand bénéfice commerce 802,00 perte trade -204,90 Profit moyen trade 233,06 perte trade - 129,44 Victoires consécutives maximales (profit en argent) 6 (1330,35) pertes consécutives (perte de fonds) 5 (-628,25) Profit maximal consécutif (décompte des gains) 1330,35 (6) perte consécutive (décompte des pertes) -652,10 (4) Moyenne Consécutive gagne 2 pertes consécutives 2 Généralement (j'ai utilisé différentes dates gamme) - même que promises dans l'article. Wow, qui a été longue:) SnowCron réseaux neuronaux pour le commerce FOREX Dans cet article: un exemple d'utilisation de notre logiciel de réseaux neuronaux pour créer un système complet réseau commercial neuronal. Cet exemple utilise le langage de script intégré de Cortex. Alors s'il vous plaît lire le guide de langage de script d'abord. Utiliser les réseaux neuronaux pour créer la stratégie de trading FOREX Dans ce tutoriel en ligne gratuit, vous trouverez le cycle complet de l'utilisation des réseaux de neurones (Cortex Neural Networks Software) pour le commerce de forex. Vous apprendrez à choisir des intrants pour les réseaux de neurones artificiels. Et comment décider quoi utiliser comme sortie. Vous trouverez un exemple d'un script prêt à utiliser qui permet d'effectuer l'optimisation des réseaux neuronaux à la fois de la structure du réseau neuronal (nombre de neurones) et du système de trading forex (stop loss etc.) Enfin (la partie qui n'est pas présente dans La plupart des tutoriels), vous apprendrez quoi faire ensuite. Après tout, Cortex Neural Networks Software ne peut pas faire de négociation en temps réel, vous avez besoin d'utiliser quelque chose comme Trade Station, MetaQuotes ou MetaTrader. Comment porter le système de trading FOREX de Cortex à votre plateforme de trading préférée Avez-vous à traiter avec les DLL, les contrôles ActiveX et la programmation de bas niveau La réponse est NON. Cortex Neural Networks logiciel est livré avec la fonctionnalité facile à utiliser qui vous permet de porter facilement le réseau neuronal résultant (formés) au langage de script de votre plate-forme de négociation. Pas de DLL, DDE, ActiveX ou tout autre bas niveau de solutions - tout est simple et simple. Note importante: ce n'est pas une façon de commerce tutoriel. Au lieu de cela, il vous indique comment utiliser le logiciel Cortex Neural Networks. Mais vous avez encore besoin d'inventer votre propre système commercial. Celui que nous utilisons ici est à peine un point de départ, et ne devrait pas être utilisé comme une stratégie de trading forex comme il est. L'idée de ce texte est de vous apprendre à créer des systèmes de négociation basés sur NN et de les porter à la plate-forme de négociation de votre choix. L'exemple est, cependant, simplifié et ne peut être utilisé que comme illustration de principes commerciaux. De même, le système de négociation MACD, qui peut être trouvé dans de nombreux tutoriels, ne fonctionne pas bien (comme les marchés ont changé), mais est encore un bon exemple d'utilisation d'indicateurs pour le trading mécanique. En deux mots: faire votre propre analyse. Une autre note importante: le tutoriel utilise des exemples, beaucoup d'entre eux. Pour vous faciliter la vie, je les ai tous inclus, pas seulement des fragments. Cependant, il rend le texte beaucoup plus long. Aussi, je vais de la toute première, maladroit, système de trading forex. À plus avancé, chaque fois expliquant ce qui avait été amélioré et pourquoi. Soyez patient, ou sautez directement à la section dont vous avez besoin. Note finale importante: le code n'est pas quelque chose sculpté dans la pierre, il pourrait changer pendant que ce texte a été écrit. Les versions finales des fichiers de script sont incluses dans l'archive Cortex. Les pièges de FOREX ACHETER SELL Signaux: Qu'est-ce qui ne va pas avec des exemples simples Dans le logiciel Cortex Neural Networks Software, nous avons utilisé un exemple simple d'un réseau neuronal aftifficial. Prédisant le prix du stock GENZ. Pour savoir ce qui ne va pas avec cette approche, nous allons faire le même exemple simple, en utilisant MSFT. TXT, au lieu du GENZ. TXT (utiliser 800 enregistrements dans le jeu d'apprentissage, comme MSFT. TXT est un peu plus court, puis GENZ. SMS). Il ne fonctionnerait pas Pourquoi la raison deviendra évidente, si vous vous demandez: Quelle est la raison pour laquelle la prévision réseau neuronal de valeurs futures peut être fait sur la première place La réponse est: il s'agit d'apprendre à faire ce qu'on appelle la reconnaissance des réseaux de réseaux neuronaux. Pour reconnaître des motifs, et s'il ya une logique cachée dans ces modèles, alors même un nouveau modèle (avec la même logique) sera reconnu. C'est un truc - avec la même logique. Il n'y a pas un seul, mais trois problèmes ici. Tout d'abord, si vous regardez le prix des actions de Microsofts, vous remarquerez qu'il était en baisse dans la partie apprentissage de nos données, et de côté - dans la partie test. Il est donc possible que la logique ait changé. Deuxièmement, et ce qui est encore plus important - QU'EST-CE QUE LE MODÈLE Vous voyez, si nous avons enseigné le réseau de neurones dans la gamme 10 - 100, puis présenté avec quelque chose dans la gamme 1 à 3 - ils sont différents modèles 10, 20, 30 et 1, 2, 3 ressemblent à l'humain parce que - PARCE QUE - nous avons cette capacité de diviser par dix, quand présenté avec des nombres se terminant par zéro. C'est ce qu'on appelle un prétraitement des données, et par défaut, le NN ne peut pas le faire. Pouvons-nous l'enseigner Bien sûr. Qu'est-ce que c'est EXACTEMENT nous devons l'enseigner C'est le troisième, et le plus important. Nous n'avons pas besoin de la prédiction des prix Nous ne nous soucions pas Ce que nous avons besoin est FOREX acheter vendre signaux. Maintenant, attendre une minute Nous avons besoin a) d'avoir notre entrée (à la fois d'apprentissage et de test) dans la même gamme, et nous avons besoin b) d'être en mesure de prendre des décisions commerciales basées sur elle Isnt ce que nous appelons un indicateur Bingo So thats Ce que nous allons faire - nous allons construire un indicateur, de l'alimenter à la NN comme une entrée, et nous essaierons d'obtenir une prédiction de la valeur de l'indicateur, et non le prix des actions sans valeur Dans notre premier exemple, nous allons charger des stocks Les citations du disque, ouvrir le fichier Neural Network et commencer l'apprentissage - le tout dans un mode automatisé. Créez un nouveau fichier de script (ou ouvrez celui qui est venu avec les archives du logiciel Cortex Neural Networks) et appelez-le stocksnn. tsc. Tout d'abord, nous devons télécharger les valeurs de prix à partir du fichier MSFT. TXT. Nous allons utiliser l'indicateur CLV (voir ci-dessous), mais pour le calculer, nous avons besoin de valeurs divisées pour High et Low, et pas seulement pour close. Voici comment les obtenir. Stocksnn. tsc, part 1 La première ligne affecte le chemin à la variable strStockPath, bien sûr, vous devrez la modifier, si votre fichier de données se trouve dans le répertoire différent. Dans la deuxième ligne, nous spécifions que ce chemin n'est pas relatif (relatif à l'emplacement du fichier Cortex. exe). Le TABLELOADER reçoit le chemin, la chaîne vide pour la ligne de départ, 1 - pour sauter la première ligne (noms de colonne), une partie de la ligne de bas de page des fichiers (la dernière ligne dans MSFT. TXT ne contient pas de données), il est également instruit Pour charger le numéro de colonne 0 (et appelez-le arrDate), 2 (arrHigh), 3 (arrLow), 4 (arrC) et 6 (arrClose). Pour une description complète de TABLELOADER, voir le guide de référence SLANG. Ensuite, nous calculons la division, en divisant la fermeture ajustée par la fermeture, et utiliser cette valeur pour ajuster les valeurs Low et High. Le fichier MSFT. TXT contient les données les plus récentes PREMIER, alors que nous voulons les DERNIER. Ensuite, nous devons créer un indicateur. Disons, il va être un indicateur de valeur de position proche, bien que dans la vie réelle, je utiliserais probablement plus d'un indicateur comme l'entrée NN. L'indicateur Close Location Value est calculé comme CLV ((Close - Low) - (High - Close)) (High - Low), où Close, Low et High correspondent à l'intervalle, pas nécessairement pour une seule barre. Notez que nous voulons qu'il soit dans la plage 0 - 1, pour faciliter la normalisation de notre gamme NN (qui est, encore une fois, 0-1). Stocksnn. tsc, part 3 Ensuite, nous devons créer un fichier de retard. Permet d'utiliser des délais égaux à 1, 2. 9 (Pour plus de détails sur les fonctions de fichier, reportez-vous au guide de référence SLANG). Notez que la boîte de dialogue Cortexs NN peut générer des retards simples automatiquement (vous pouvez utiliser un bouton Generate lag). Mais plus loin dans ce texte, nous allons travailler avec des retards complexes (ce qui signifie qu'ils ne sont pas 1, 2, 3. mais 1, 3, 64.), nous devons donc créer le code qui peut gérer cette tâche dans Plus souple. Stocksnn. tsc, part 4 Ayant le fichier lag, nous sommes prêts à créer notre premier réseau neuronal. Cette fonction prend beaucoup de paramètres, alors soyez prudent. Cependant, le code est vraiment simple. Soit dit en passant, la plupart de ce code peut être supprimé, si vous pensez que vous pouvez gérer des nombres, au lieu de noms significatifs dans votre code, cependant, ce serait une très mauvaise pratique de codage. Stocksnn. tsc, part 5 Maintenant, après que nous avons un réseau de neurones et le fichier retardé avec des données, nous devons enseigner le réseau. Le fichier de retard (msftind. lgg) a 1074 enregistrements, il est donc raisonnable d'utiliser 800 comme un ensemble d'apprentissage, et le reste 274 comme un ensemble de tests. Vous pouvez, bien sûr, ouvrir un fichier réseau et cliquer sur le bouton Exécuter de l'onglet Apprentissage. Mais comme il s'agit d'une introduction à la programmation avancée de logiciels de réseaux neuronaux Cortex, nous utilisons plutôt le langage de script builder SLANG. Le code suivant affiche la boîte de dialogue modale avec ann NN settings. Notez que si vous voulez avoir le privilège de cliquer sur le bouton Exécuter, vous devez modifier le fichier stocksnn. tsc, partie 6 Le script bStartLearning peut être 0, auquel cas la boîte de dialogue attend votre entrée ou 1, puis l'apprentissage Commencera aussitôt. Le bResumeScript, si égal à 1, reprendra le script, si vous fermez la boîte de dialogue en cliquant sur le bouton OK. Le bReset est utilisé pour réinitialiser le réseau avant le début de l'apprentissage. Exécutez le script et attendez que le compteur d'époques dépasse 1000, puis cliquez sur Arrêter. Allez dans l'onglet Appliquer, puis cliquez sur Appliquer. Cela exécutera l'ensemble des données (à la fois l'apprentissage et les tests) à travers le NN, et créer le fichier. APL, contenant à la fois l'entrée-sortie d'origine, et la prévision NN-générés, de cette façon, vous pouvez facilement les tracer et compacter les uns contre les autres . Allez dans l'onglet Sortie, sélectionnez le fichier msftind. apl, cliquez sur Parcourir le fichier, sélectionnez les champs, puis sélectionnez la case Non dans la liste de gauche et (en maintenant la touche CTRL enfoncée tout en sélectionnant avec la souris) Clv et NN: Clv dans le Droite. Cliquez sur Graphique pour voir à quel point notre prédiction est bonne. Bien. Il est plus ou moins bon, de ce que nous pouvons dire en le regardant. Pourtant, rien d'extraordinaire. C'était juste un exemple de ce que vous pouvez faire avec SLANG scripting, et comment automatiser les tâches courantes de Cortexs. Cependant, jusqu'à présent, nous n'avons rien fait que vous ne puissiez pas faire à la main. Bien. Presque rien, parce que si vous voulez créer un fichier de retard personnalisé, avec, par exemple, Clv-100, Clv-50, Clv-25. Colonnes, alors vous devrez utiliser SLANG (ou Excel.), Parce que vous ne pouvez pas faire dans dans Cortex sans scripts. FOREX Trading Strategy: ce qu'il faut optimiser Voici notre prochain problème. Avons-nous besoin d'une bonne prévision, ou avons-nous besoin de celui que nous pouvons utiliser pour le commerce avec le profit La question semble étrange, mais il suffit de penser à ce sujet pour un moment. Disons que nous avons une très bonne prévision de 1 heure. 95 précise. Pourtant, jusqu'à quel point le prix peut aller dans une heure Pas trop loin, je crains. Comparez-le à la situation, lorsque vous avez une prédiction de 10 heures plutôt inexacte. Vaut-il mieux Répondre à cette question, nous avons besoin de faire du commerce, une simple comparaison des erreurs moyennes produites par les deux NN ne va pas aider. La deuxième partie (du même problème) est dans la façon dont nous définissons une bonne prédiction. Disons que nous avons un réseau, qui produit la prédiction, qui est précise. Comparez-le au NN, c'est-à-dire produisant 100 prédiction précise. Le dernier est meilleur. Maintenant, DIVIDE la sortie (prédiction) des 100 NN précis de 10. Nous aurons un réseau TRES inexact, car son signal est nulle part près du signal que nous avons utilisé comme une sortie souhaitée. Et pourtant, il peut être utilisé de la même manière que nous avons utilisé 100 NN précis, tout ce que nous avons à faire est de le multiplier à 10 Voir, le NN est créé, en ajustant l'erreur quadratique moyenne, et non pas la corrélation, donc au moins en Théorie, un meilleur NN peut montrer des résultats médiocres, lorsqu'il est utilisé pour le stock réel Forex trading. Pour résoudre ce problème, nous avons besoin de tester nos NNs en utilisant la négociation, et d'utiliser les résultats de cette négociation (profit et tirages) pour décider, si ce NN est meilleur que l'autre. Faisons le. Permet de créer un programme, qui peut être utilisé pour affiner NN, et cette fois, par ajustement, nous allons signifier des résultats commerciaux. Neural Network Trading: Quelques notes brèves Tout d'abord, dans notre exemple ci-dessus, l'apprentissage automatique ne s'arrêtera jamais, parce que nous n'avons pas spécifié de critères d'arrêt. Dans la boîte de dialogue, ou dans la fonction CREATENN, vous pouvez fournir la valeur min. (Lorsque le NN l'atteint, il s'arrête et, si bResumeScript est défini sur 1, la boîte de dialogue se ferme et le script reprend). Aussi yo peut fournir le nombre maximum d'époques, ou les deux. Je ne l'utilise pas dans l'exemple ci-dessous, du moins pas toujours, parce que je prévois de regarder l'apprentissage et de cliquer sur STOP quand je pense que le NN est prêt. Si vous voulez le faire en mode entièrement automatique, faites attention à ces paramètres. Seconde. Une des façons de rendre un réseau plus petit, plus rapide et plus précis, est de commencer par le petit réseau, et d'augmenter sa taille, neurone par neurone. Obviously, le nombre de neurones d'entrée est déterminé par le nombre de colonnes de données d'entrée (mais nous pouvons les varier, aussi), et le nombre de neurones de sortie devrait être égal au nombre de colonnes de données de sortie (habituellement un, mais pas nécessairement) ). Cela signifie que nous devons optimiser le nombre de neurones dans la (les) couche (s) cachée (s). En outre, comme je l'ai mentionné, nous ne savons pas vraiment quelles données utiliser. Est-ce que Clv-256 (15 jours retardés) augmentera la précision de notre prédiction Avons-nous besoin de Clv-256 Est-il préférable d'utiliser les deux dans le même NN, ou va ajouter Clv-256 ruiner notre performance? Les paramètres d'entrée, vous pouvez: Créer le NN, de la même façon que nous l'avons fait pour les données stock (permettez-moi de répéter, pour le NN, il n'ya pas de différence entre les stocks et FOREX, il est arrivé que j'ai quelques fichiers de données de haute qualité pour FOREX que je veux traiter, en écrivant ce texte). Essayez différentes combinaisons de décalages. Essayez un nombre différent de neurones dans la couche cachée. . Et différentes combinaisons d'indicateurs différents. . etc. Cependant, si vous essayez toutes les combinaisons possibles de tous les paramètres possibles, vous n'obtiendrez JAMAIS vos résultats, peu importe la vitesse de votre ordinateur. Ci-dessous, nous allons utiliser quelques astuces pour réduire les calculs à un strict minimum. En passant, il peut sembler que si vous commencez à partir d'un neurone caché, puis l'augmenter à 2, 3 et ainsi de suite, et à un certain point l'erreur (qualité de la prédiction) ou le profit (si vous testez le NN par Trading en utilisant) va commencer à aller vers le bas, alors vous avez votre gagnant. Malheureusement, je ne peux pas prouver que, après le premier pic de performance, il ne peut y avoir de deuxième. Cela signifie que l'erreur peut aller comme 100, 30, 20, 40, 50 (elle était juste à son minimum, à droite) puis 30, 20, 10, 15. (le deuxième minimum). Nous avons juste à tester tous les nombres raisonnables. Troisième. L'optimisation est une épée à deux tranchants. Si vous sur-optimisez votre code, il peut ne pas fonctionner en dehors des données que vous avez utilisé pour l'affiner. Je ferai de mon mieux pour éviter cet écueil. Si vous voulez faire des optimisations supplémentaires à votre code ou NN, je vous conseille de faire une recherche sur Internet, pour en savoir plus sur les problèmes cachés de cette approche. Aussi, je vais prêter une certaine attention à la finesse de la courbe de profit. Le bénéfice qui ressemble à 0, -500, 1000, -100, 10000 peut être grand, mais le profit 0, 100, 200, 300, 400. est mieux, car il est moins risqué. Nous en parlerons plus tard. Enfin, pour cet exemple nous allons utiliser FOREX, plutôt que les cours des actions. Du point de vue de la NN il n'ya pas de différence, et de mon point - Forex est beaucoup plus amusant à commercer. Si vous préférez les stocks, le code peut facilement être modifié. Une stratégie de trading FOREX à jouer avec Tout d'abord, permet de créer un prototype de notre code, celui qui peut facilement être optimisé à l'avenir. Il va être un système commercial, qui utilise un réseau de neurones pour le commerce et produit un graphique (profit contre le numéro de commerce). Il calcule également le prélèvement, comme une mesure de la robustesse de notre système commercial. Forexnn01.tsc, part 1 La principale différence ici est que nous utilisons des fonctions, au lieu de placer tout le code dans le bloc principal du programme. De cette façon, il est beaucoup plus facile à gérer. Deuxièmement, nous avons une fonction TestNet. J'utilise un algorithme très simple de trading. L'indicateur CLV est limité à 0 - 1 intervalle (notre version de CLV est), donc quand l'indicateur croise le dBuyLevel (voir le code ci-dessus), je suis l'achat, quand il traverse le dSellLevel, je vends. Évidemment, ce n'est pas la meilleure stratégie de négociation, mais il fera pour notre but (juste pour le moment). Si vous voulez l'améliorer, voici quelques pointeurs. Tout d'abord, vous pouvez avoir un système, qui n'est pas toujours sur le marché. Deuxièmement, vous pouvez utiliser plus d'un indicateur comme intrants, et peut-être, plus d'un NN, de sorte que la décision de négociation est faite basée sur quelques indicateurs prédits. Nous ajouterons quelques améliorations à l'algorithme de trading plus tard. Nous utilisons certaines hypothèses standard de la négociation FOREX: écart est de 5 points, levier est de 100, min. Lot est de 100 (mini-FOREX). Jetons un regard sur notre système commercial. Encore une fois, c'est une simplification excessive. Une note importante: TestNn () est appelée dernière et elle a accès à toutes les variables qui ont été créées à ce point. Donc, si vous voyez une variable que j'utilise, sans l'initialiser, cela signifie probablement qu'elle a été initialisée dans NewNn (), TeachNn () ou une autre fonction qui a été appelée avant TestNn (). Pour faciliter les choses, les commentaires sont placés dans le code. Forexnn01.tsc, partie 2 Quelques mots sur le rabat. Il y a peu de façons de le calculer, et nous utilisons ce que je considère comme le plus honnête. Le retrait est une mesure de l'instabilité de notre système. Si le bénéfice est de 100, 200, 300, 400. le tirage est de 0. S'il passe 100, 200, 100. alors le tirage est de 0,1 (c'est-à - 10), comme nous venons de perdre un montant, égal à 110 du dépôt initial (de 1200 à 1100). Je serais fortement conseillé contre l'utilisation de systèmes de négociation avec de gros tirages. Aussi, ici j'utilise un rabat, qui est à utiliser avec la taille du lot variable. Toutefois, dans les échantillons réels, qui viennent avec le livre électronique, vous verrez une autre version: Comme vous pouvez le voir, ici nous utilisons toujours 1000 (le montant initial) pour calculer le retrait. La raison est simple: nous utilisons toujours la même taille de lot (pas de gestion de l'argent pour le moment), il n'y a donc aucune différence, combien d'argent nous avons déjà accumulé sur notre compte, un bénéfice moyen devrait être constant. Le pire scénario possible dans ce cas ressemble à ceci: dès le début (1000 sur le compte) nous perdons de l'argent. Si nous utilisons 1000 pour calculer le retrait, nous obtiendrons le rabaissement pire. Cela nous aidera à ne pas nous tromper. Par exemple, disons, nous avons échangé pendant un certain temps, et nous avons 10 000 sur notre compte. Ensuite, nous perdons de l'argent, et nous en avons maintenant 8 000. Ensuite, nous avons récupéré, et obtenu 12.000. Bon système commercial Probablement pas. Répétons la logique, car elle est très importante (et elle deviendra encore plus importante, lorsque nous commencerons à gérer l'argent). Nous négocions en utilisant des lots de taille fixe. Donc, statistiquement, il n'y a aucune garantie, que la perte maximum ne se produira pas au tout début, quand nous avons seulement 1000. Et si cela arrive, nous aurons -1000 (10.000 - 8.000), donc le système commercial est probablement trop risqué. Lorsque nous parlons de la gestion de l'argent (probablement, pas dans ce texte), nous devrons utiliser une approche différente pour calculer le prélèvement. Notez que dans ce système de trading, j'utilise le pire scénario possible: j'achète en utilisant High et en vendant, en utilisant Low. De nombreux testeurs ne suivent pas ces règles, et créent des systèmes de négociation, qui fonctionnent bien sur les données historiques. Mais dans la vraie vie, ces systèmes commerciaux ont des performances très médiocres. Pourquoi jeter un oeil à la barre de prix. Il a ouvert, haut, bas et proche. Savez-vous comment le prix se déplaçait à l'intérieur du bar. Donc, disons, votre système commercial a généré un signal d'achat, au bas de la barre de prix (si dLow Notez que j'utilise dLotSize égal à 0,1 lot (100). Évidemment, dans le commerce réel, vous bénéficierez grandement, si la taille du lot est calculée en fonction de l'argent que vous avez, quelque chose comme: forexnn01.tsc, partie 3 Cependant, nous faisons des tests ici, pas de négociation. Il est beaucoup plus facile de faire si la taille du lot est la même (en situation idéale, pour dLotSize 100, nous aurons une ligne droite, avec une pente positive, alors que dans Cas de la taille de lot réglable nous obtiendrons un exposant, qui est beaucoup plus difficile à analyser.) Plus tard dans ce texte, nous allons appliquer des règles de gestion de l'argent à notre système commercial, mais pas encore. Lorsque nous avons terminé avec la dernière partie de notre La fonction suivante crée un indicateur CLV: il prend l'intervalle en tant que paramètre, ce qui signifie que nous pouvons l'appeler plusieurs fois, lors de l'optimisation, en passant des nombres différents. Notez que j'utilise le NN qui fonctionne dans l'intervalle de 0 à 1. Les données peuvent être normalisées, bien sûr, mais j'ai choisi de diviser l'indicateur par 2 et d'ajouter 0,5, de sorte qu'il est dans une plage de 0 à 1. Forexnn01.tsc, part 4 Pour créer un fichier lag, nous pouvons utiliser la fonction CREATELAGFILE. Sinon, nous pouvons le faire en fournissant explicitement tout le code nécessaire. Dans ce cas, nous avons plus de contrôle, et nous allons en avoir besoin, si nous commençons à varier le nombre de colonnes retardées et ainsi de suite. Forexnn01.tsc, part 5 Le paramètre nRemoveFirst est important. Beaucoup de fonctions, comme les indicateurs, les moyennes mobiles, les générateurs de retard, pour cette question, ne fonctionnent pas bien dans les premiers enregistrements de l'ensemble de données. Disons que nous avons MA (14) - que va-t-il placer dans les dossiers 1 - 13 Donc, nous choisissons de supprimer simplement les premiers enregistrements (peu fiables). Pour le NewNn, ainsi que pour toutes les fonctions de ce programme, nous devons passer comme paramètres uniquement ce qui peut être modifié lors du processus d'optimisation. Par exemple, il n'est pas nécessaire de passer un saut avant le paramètre, car il est toujours le même. Forexnn01.tsc, part 6 La fonction TeachNn affiche simplement la boîte de dialogue NN. Forexnn01.tsc, part 7 Enfin, nous avons besoin d'une fonction de cartographie. Il n'est pas obligatoire, mais il est toujours une bonne idée de voir à quoi ressemble notre ligne de profit. Le code suivant utilise le XML pour produire un graphique. Il est donc judicieux de lire le didacticiel. Sinon, vous pouvez dessiner le graphique plutôt que de l'enregistrer dans un fichier. Pour ce faire, utilisez l'un des exemples, qui se trouvent dans le répertoire samplesscripts. Enfin, vous pouvez modifier le code, pour produire HTML, plutôt que XML. HTML est plus facile à apprendre, mais le code lui-même sera un peu moins lisible. Forexnn01.tsc, part 8 Compilez et exécutez le script. Bien. Comme prévu, l'utilisation de 7 heures d'intervalle pour le CLV a donné de très mauvais résultats: Stratégies de trading FOREX et optimisation La raison des mauvais résultats est assez évidente: nous avons utilisé l'intervalle, Stop Loss, les niveaux d'achat et de vente et d'autres paramètres, Purement aléatoire - nous venons de choisir en premier qui est venu à l'esprit Que faire si nous essayons quelques combinaisons FOREX Trading Signals: Quoi optimiser Tout d'abord, en overoptimizing les niveaux d'achat et de vente, nous pouvons ruiner nos performances futures. Cependant, nous pouvons encore les accorder, surtout, si la performance est proche des valeurs proches des limites d'achat et de vente. Par exemple, si nous avons -10 bénéfice à la limite d'achat égal à 0,3 et 1000 bénéfice quand il est égal à 0,35, il ya probablement une coïncidence chanceuse, et nous ne devrions pas utiliser 0.35 pour notre système commercial, comme à l'avenir il ne se produira probablement pas encore. Si, au lieu de cela, nous avons -10 et 10 (au lieu de 1000), il peut être plus sûr à utiliser. En général, notre système de négociation devrait être construit pour le scénario le plus possible, comme si au cours de la négociation réelle la performance sera meilleure, alors pendant le test, nous survivrons, mais pas l'inverse. Nous pouvons faire varier la valeur de l'intervalle des indicateurs, à condition que nous ayons assez de métiers, afin que nous puissions être confiants, en termes de statistiques, sur la performance d'un système. Nous pouvons certainement varier le nombre de neurones, je ne pense pas qu'il peut être overoptimized facilement. Nous pouvons varier le nombre d'intrants et les retards pour les intrants. Il est possible de sur-optimiser cela, mais il n'est pas très probable qu'il se produise. Et, bien sûr, nous pouvons essayer différents indicateurs. Signaux précis FOREX: Comment optimiser Comme nous l'avons déjà mentionné, si nous commençons à essayer toutes les combinaisons possibles, il faudra une éternité. Nous allons donc tricher. Nous allons créer des ensembles prédéfinis de paramètres que nous pensons être raisonnables et les transmettre au programme. Pour faire le moins de calculs possible, notez que Clv-1 et Clv-2 sont, probablement, importants, mais qu'en est-il de Clv-128 Et - si nous avons déjà Clv-128, avons-nous besoin de Clv-129 Probablement pas. Donc, nous allons avoir quelque chose comme Clv-1, Clv-2, Clv-4, Clv-8. Clv-128 avec peu de variations, ce qui rendra notre temps de calcul des milliers de fois plus court. Forex Professional System Trading: Peut-il fonctionner à tous Qu'est-ce que c'est exactement ce que nous voulons prédire Jusqu'à ce point, nous avons utilisé le graphique 1 heure pour EURUSD, et nous avons été prédire les barres CLV prochaine. Le CLV2 sera-t-il meilleur Qu'en est-il de CLV3 En outre, compte tenu des mauvaises performances de notre premier système commercial, il serait bon de savoir que, au moins dans le monde idéal, l'objectif (trading rentable) peut être atteint. Pour répondre à ces questions, créez un programme de test simple. Nous supposons que notre prédiction est 100 précise, et, sur la base de cette hypothèse, nous utiliserons CLVN, et non le NN prédit. Thats droit - nous allons prendre des données de l'avenir, et de les utiliser au lieu de la prédiction NN. Cette approche ne fonctionnerait pas dans la vie réelle, bien sûr, mais au moins, cela nous donnera quelques idées de ce à quoi nous attendre. Lorsque vous regardez les résultats, gardez à l'esprit que nous n'utilisons pas de gestion de fonds avancée, notre taille de lot est fixée à un minimum de 100. Si vous utilisez des tailles de lots variables, les résultats seront radicalement différents. Mais même à une taille de lot fixé à 0,1, nous pouvons voir (ci-dessous) que l'obtention de l'information de l'avenir est un ultime négociants holly graal. Forexnn02.tsc, part 1 Vous connaissez déjà ce code, il a été utilisé dans FOREXNN01.TSC. Il gère le chargement des données. La seule différence est dans la partie qui obtient la liste des fichiers dans le répertoire images et supprime tous les fichiers avec l'extension. PNG. La raison de ce code est simple: au cours de nos tests, nous allons créer de nombreux fichiers de milliers d'images. Nous ne voulons pas qu'ils soient accrochés après avoir terminé. Ainsi, au début du script, nous supprimons des images créées par d'autres scripts. Forexnn02.tsc, part 2 Quelques commentaires. Nous ne voulons pas essayer toutes les valeurs possibles pour, par exemple, CLV intervalle. Au lieu de cela, nous pouvons créer un tableau, qui contient uniquement les valeurs que nous voulons tester. Ensuite (voir ci-dessous), nous allons parcourir ce tableau. Stop pertes sont une partie importante de toute stratégie de négociation, donc j'ai décidé de varier eux aussi. C'est une idée dangereuse, cependant, car il est facile d'overoptimize le système. Je prévois de tester différentes valeurs pour acheter et vendre des niveaux, mais il sera fait en cycle, sans utiliser de tableaux. Contrairement à notre exemple précédent, nous voulons avoir un grand fichier XML, contenant de nombreuses images. Pour ce faire, j'ai déplacé le code, c'est formant l'en-tête et le pied de page XML en dehors de la fonction Chart. Lisez l'un des didacticiels XML en ligne pour plus de détails. Notez que j'utilise 0 comme premier décalage, ce qui signifie que je teste d'abord l'indicateur (CLV) qui n'a pas été décalé de l'avenir. Juste pour avoir une idée, comment bon système de négociation serait sans NN (horrible, est le bon mot. Il est perdre tout l'argent). Cortex utilise le contrôle Internet Explorer pour afficher des pages XML. Lorsque les pages grandissent, il faut beaucoup de mémoire. Si votre ordinateur ne peut pas le gérer, pensez à créer plusieurs pages XML ou HTML. Dans le cas de forexnn02, il ne devrait pas être un problème, car la page est relativement courte. Sinon (c'est ce que je fais dans les scripts plus tard dans ce texte), créer un fichier XML, mais ne l'ouvrez pas de Cortex. Ouvrez-les à l'aide d'Internet Explorer à la place - contrairement à IE contrôle, l'Internet Explorer n'a pas le problème de mémoire. Maintenant, le code qui tente différentes combinaisons de paramètres. Forexnn02.tsc, part 3 Nous utilisons ici des cycles imbriqués. Dans chaque cycle, nous assidons une variable (par exemple, nInterval pour le cycle externe). De cette façon, le cycle va assigner des valeurs de tous les éléments d'un tableau correspondant, un par un. Ensuite, en dedans, le cycle interne est utilisé, et ainsi de suite, de sorte que toutes les combinaisons de tous les éléments de tableau sont testés. Dans le cycle le plus interne, j'appelle la fonction Test (), pour tester le commerce et Chart () pour ajouter une nouvelle image à une liste d'images enregistrées sur le disque. Notez que ce graphique () ne montre aucune image, jusqu'à ce que tous les cycles soient terminés. Les fonctions Test () et CreateClv () sont presque identiques à celles de l'exemple précédent. La seule différence réelle est due au fait qu'il est appelé plus d'une fois. Pour ce faire, j'appelle ARRAYREMOVE pour nettoyer les tableaux. Aussi, notez, que nous ne sommes que la création de graphiques pour les combinaisons de paramètres, qui produisent le système commercial avec un bénéfice positif. Sinon, nous appelons continue, pour sauter la fonction Chart (). Enfin, nous avons Take Profit maintenant, de sorte que notre système de négociation peut être un peu plus souple. Forexnn02.tsc, part 4 La fonction Chart () a été divisée en deux parties. The header and the footer should be written to the XML file only once, so they were moved to the main part of the program. Also, I am using the counter, to save files under the different names. The information about parameters is written to the header of an image, so we can easily see which one it is. Finally, images are only saved for winning configurations, meaning the balance at the end should be more, then at the beginning. forexnn02.tsc, part 5 Run the program (it will take some time to complete). You will end up with a large XML page with images, one for each winning configuration. Some of the results are great, however, as we used data from the future, this system will not work in the real life. Actually, if you look at the Test() function, you will notice, that the cycle stops before we reach the last element of arrClose: for(nBar nRemoveFirst 1 nBar THIS IS C, just an example. As you can see, the code is really simple. Now lets do the same using the SLANG script. As in examples before, we will keep the overall structure of the code, so that this example looks familiar. The only difference is that instead of using the built-in APPLYNN function, we call the function of our own. The code that we do not use (such as cycles) is commented, but not removed. Note, that the logic behind it was discussed in Neural Networks and Stock Forex Trading article already. Briefly, the output of this script is formated to be compatible with the MQL, MetaTraders scripting engine. MetaTrader is a trading platform we use, if you want something different, like TradeStation, for example, you will have to alter the code to comply to its syntax. Then, in the following chapters, we are going to insert this code in the MetaTraders indicator, and to use it to trade. Porting script to trading platform The next step is not really required, but it is something, that may be useful. We are going to create a version of a tsc file (one above), but this time, we will use SLANG (Cortex scripting language) to emulate APPLYNN function. The reason is, in the next chapter we are going to port it to the scripting language of a MetaTrader trading platform, so it is a good idea to make sure everything works. After we run this function, we discover, that the result it produces is the same, as the forexnn05a produced, which means the code works fine. Note, that there is a difference at the beginning of the charts, as our NN does not try to process the data at the beginning (where lag is incomplete), while the built-in NN does not know about this problem. Of course, it doesnt affect the result, as the beginning of the chart is ignored by using the nRemoveFirst parameter in our script (set to 200, which is guaranteed to be larger, then our lag). Using third-party trading platform We have the NN that (more or less) can be used. We have the script, implementing this NN without calls to the Cortex-specific NN functions. Now we are going to port it to the trading platform that can be used for the real trading, which means it can contact brocker, place orders and earn (or loose) money. As a trading platform, I am going to use MetaTrader Disclaimer: I am not related to MetaQuotes in any way. I do not work for them, I am not their affiliate and so on. I use MetaTrader, ONLY because I like it. I find this program user-friendly, flexible and powerful, and not a monster. Also, it is free (compare to other packages of this class). The only (minor) problem is that it is not always easy to find the dealer using MT in your area. Then, when you do a research, you may find couple of brockers, with screenshots on their web sites, that look suspiciously familiar. Yes, they use MetaTrader, but they dont call it MetaTrader I have asked for clarification at the companys forum, and they have told me, that they dont reveal brockers using their services. Très étrange. One of the brockers that is not hiding the fact they use MT, is Alpari. They will allow you to open a Demo account, so that you can trade in a real time, but without risking your money. Warning I am not going to recommeng services of Alpari. Once again, I am not being paid for that. Try their Demo account, and use your own judgement. Or you can start your own research at Internet forums. Finally, if you do not like the MT, you can probably follow the example below using TS, MS or some other trading platform. This is just an example. Our MT-based trading system will include two files, the indicator and an expert. This is the way they call it in MQL (scripting language of MT), and I am going to follow this naming convention. The indicator implements the neural network and draws a chart. An expert takes these data and does trading. As MetaTrader has a strategy tester, we will be able to test our strategy, to see how good it is. I will assume, that you are familiar with MQL programming, it is quite close to SLANG and tutorials can be found both at MetaQuotes and Alpari. Finally, I am using the code structure, that is borrowed from MetaQuotes forum, permission to use it the author of the corresponding posts had granted me permission to use fragments of his code. Also, as some of our MetaTrader code is the same for all experts and indicators, we moved it to a separate library file. MetaTraders libraries are nothing but includable files. This library takes care of synhronization, when two or more expert are trying to run in the same time, as well as of few other things. If you use MetaTrader, it will help you to create robust experts, in any case, the MQL language is easy to understand. mylib. mql, a helper library The code should look familiar, all I did was re-writing it, using slightly different language syntax of MQL. This indicator has two buffers, and draws two lines, one for the original NOC, and one for the NN-predicted NOC. For trading, you dont have to draw both indicator lines, of course (see MQL tutorials to learn how to do it), but I have decided to show them together, so you can compare. Another difference, that you should know about, is the way MT performs testing. It may, in some cases, be more accurate, then one we did (we did the worse case scenario). Of course, you can always to change the SLANG script from the examples above, to implement any logic you want. The result of our testing in MT is a bit better, then in Cortex, due to all these reasons. Keep in mind, that MT calculates the DD in a different way. I still think, that my way is better. In should be especially noted, that no additional optimization had been performed using MetaTraders optimizer. We have just plugged our MTS (mechanical trading system) in, and it worked as expected. C'est ça. You can now create Cortex Neural Network, optimize it to do trading, and to port it to the trading platform of your choice. Download Cortex Order Cortex View Price List Visibility is very important for this site. If you like it please link to this URLSnowCron Self-Organizing Maps Using Self-Organizing Map to create Neural Network Trading System. FOREX Technical Analysis with Auto Classification Kohonen Neural Network. Neural Network Trading with Kohonen Neural Network. In this free online tutorial you will find the full cycle of using Cortex built-in Self Organizing Maps (SOM, kohonen neural networks) for Forex trading (or stock trading, the idea is the same). You will learn how to choose inputs for the Self Organizing Maps . and how to decide what to do with the output. You will find an example of a ready to use script that allows to perform optimization of both the Self Organizing Maps (number of neurons) and the trading parameters (stop loss etc.) Finally (the part that is not present in most tutorials), you will learn what to do next. After all, Cortex Neural Networks Software cannot do real time trading, you need to use something like Trade Station, MetaStocks or MetaTrader. How to port the Self Organizing Maps based forex trading strategy from Cortex to your favorite trading platform Do you have to deal with DLLs, ActiveX controls and low-level programming The answer is NO. Cortex comes with the easy to use feature that allows you to easily port the resulting (trained) Self Organizing Maps to the scripting language of your trading platform. No DLLs, DDE, ActiveX or any other low-level solutions - everything is plain and simple. Important note: this is NOT a how to trade tutorial. Instead, it tells you how to use Cortex, but you still need to invent your own trading system. The one we use here is barely a starting point, and shouldnt be used for Forex trading as is. The idea of this text is to teach you to create Self Organizing Maps - based forex trading strategy and to port them to the trading platform of your choice. The example is, however, ovesimplified, and can only be used as the illustration of trading principles. Same way, the MACD trading system, that can be found in many tutorials, is not working well anymore (as markets have changed), but still is a good example of using indicators for mechanical trading. In two words: do your own analysis. Another important note: the tutorial is using examples, lots of them. To make your life easier, I have included them all, not just fragments. However it makes the text much longer. Also, I am going from the very first, clumsy, trading systems, to more advanced, every time explaining what had been improved and why. Be patient, or jump directly to the section you need. Final important note: the code is not something carved in stone, it could change while this text was written. The final versions of script files are included in Cortex Neural Networks Software archive. Clustering Data: Simple test First of all, lets try a straightforward approach - lets feed our Self Organizing Map with sequence of 0 and 1. This should give us two clusters, that is easy to distinguish visually: As we can see, Self Organizing Maps can easily handle this task, creating two clasters: When we plot data and winner neurons, we can see, that the system works well - 0 and 1 are clearly separated. Clustering Map: Visualizing results The approach we used in the previous example is quite clumsy - we plotted numbers of winner neurons. This is not very informative, and if we want to use this information, for example, as an input of neural networks software - not very useful. The reason is - the number of a neuron is within a 0 - size of a matrix range, and Neural Network will have to figure out a complex relation between it and a cluster neuron belongs to. Also, on a chart, it will give us a non-obvious line. In a SOM, we can uniquely identify a neuron by its coordinates (X, Y) and a signal it produces - by adding a Z - coordinate. Also, a color in a computer graphics is usually represented by (Red, Green, Blue) vector, so here is a trick: lets ask our system to produce not the neuron numbers, but the corresponding colors. We use the following formulas in C language: Lets walk through the code, this time, we are going to use a SIN(X) function. As you can see, classifying patterns in SIN(x) is done fine. Also, on a smooth colors chart, it is easy to see, that colors are properly assigned to similar trend parts of a chart. Forex Signals: Using real quotes Now, lets use real quotes and see if our self-organizing map will be able to handle them same way it handled SIN(x). As you can see from the chart, the SOM worked, but. The classification is not very useful. The problem is, as one would expect, in the fact, that the chart (CLOSE quotes for EURUSD) is going up, so the same pattern at the beginning of a chart and at its end is considered (by self-organizing map ) as two completely different patterns. Forex Trading Strategy: Using NOC indicator NOC (Normalize On Condition) indicator was created and used in one of the previous articles to handle the requirement of the NN - it need normalized data to work. We are going to use NOC with self-organizing map to classify trends of the CLOSE quotes. Remarque. that I personally DO NOT think that NOC is a perfect indicator to be used with SOM. Some kind of a claster indicator, showing money flow between different currencies, will most likely do a much better job. So please, consider this as an example, and build your own trading system. To crash test our system, you can use eurusdh1long. txt quotes file, that is included in the Cortex archive, together with the shorter eurusdh1.txt. When you use it (by replacing the short one in the code), you can see our systems behaviour in the out of sample test, on the data, it never seen. In that test, NOC does not fail, but does not shine either. Also, we use cycles to find nicer parameters. Above is a small fragment of a resulting chart. Note, that it is very hard to say what use can we have for this type of a classification, but a) maybe, FFBP Neural Network can make sence out of it and b) it is just an example. We can also use daily charts. Below is the nearly identical code for MSFT stock price. FOREX Trading Strategy without Kohonen SOM With the chart we got in the chapter above, it is hard to create a forex trading system system. There is a classification, all right. But it does not look like trend up - green, trent down - red. So lets use a FFBP neural network to mak sence out of it. To make it better, lets use both Self-Organizing Map output and NOC as FFBP NN inputs. We are going to use the script from the article about Neural Networks FOREX Trading. that, I assume, you have already read. First, lets run the original, SOM-free, script again and find the optimal set of NN parameters. Here, we can choose a winner. Note, that beating the market is not our goal here, what we want to do, is to take more-or-less working FFBP system and to see, if its performance can be improved by supplying additional inputs from SOM. Trades: 27(Buy: 27, Sell :0) NocInterval: 12, Range: 0.004, Ma: 3 Lag: 2, Neurons: 5 Stop: 0.0200, Tp: 0.0000, Stop increase: 0.600000, Buy: 0.170, Sell: 0.900 Drawdown: 0.299 Profit: 6174.000000 (long: 6174.000000, short: 0.000000) This chart looks good enough. In the next chapter we are going to use Self-Organizing Map output in addition to NOC. Using Kohonen Neural Network and FFBP Neural Network together We are going to remove cycles from the previous example, and to add a Self-Organizing Map to it. The Kohonen SOM was created by som04.tsc, note, that you need to run that script first. So, first of all, run som04.tsc and rename the resulting Self-Organizing Map to som04winner. kh. The following script uses the existing Kohonen SOM and tries to find optimal parameters for FFBP NN that uses its output as an input, in addition to NOC. Trades: 29(Buy: 29, Sell :0) NocInterval: 12, Range: 0.000, Ma: 3 Lag: 2, Neurons: 7 Stop: 0.0200, Tp: 0.0000, Stop increase: 0.500000, Buy: 0.140, Sell: 0.900 Drawdown: 0.557 Profit: 6677.000000 (long: 6677.000000, short: 0.000000) As you can see, at least one chart is better, than it was without SOM, though AGAIN, this is just an example, and for a real trading system, NOC is, most likely, NOT the best choice of input for Kohonen SOM (it is very good for FFBP NN, however). Removing cycles from FFBP Neural Network Trading System Now, lets port our trading system to a real trading platform. After all, Cortex Neural Networks Software cannot do online trading, so we need to use MetaTrader, TradStation or something else. We are going to create a script for MetaTrader expert here, that uses both our FFBP NN and SOM. We do it in two steps. First, we are going to repeat the steps from Neural Networks FOREX trading article, for our winner FFBP. Then we add SOM. To do it, we remove cycles from the som05.tsc code, it leaves us with a code, that uses a single winning NN. Then we add code to this script, to PRINT weights of neurons. We format this output, to make it comply with MetaTraders (or other trading platform, it is up to you) syntax. As the result, we have a large array with NN weights, that we can paste into the expertindicator code of a trading platform of your choice. For now, lets remove all unnecessary cycles from som5.tsc, so that we have the script, that works with a winner NN. As we use existng winning NN, we need to get it somewhere. The Cortex comes with som05winner1.nn (created in som05.tsc and then renamed). Note, that the code still has cycles - just to be as familiar as possible - but these cycles are only done once. Also, some parameters for the Noc and network are hardcoded: som06.tsc, FFBP, no SOM yet Exporting weights of the Neural Networks The next step is to export weights of the Neural Network to the scripting language of a trading platform of our choice. Here we are just repeating the Neural Networks Forex Trading. To do it, we add couple of PRINT statements to the som06.tsc, and it will produce the necessary output. Simply insert the following code in the som06.tsc: Note, that the logic behind it was discussed in Neural Networks Forex Trading article already. Briefly, the output of this script is formated to be compatible with the MQ4, MetaTraders scripting engine. MetaTrader is a trading platform we use, if you want something different, like TradeStation, for example, you will have to alter the code to comply to its syntax. Then, in the following chapters, we are going to insert this code in the MetaTraders indicator, and to use it to trade. Emulating APPLYNN The next step is not really required, but it is something, that may be useful to find and fix bugs in code. We are going to create a version of som06.tsc, but this time, we will use SLANG (Cortex built-in scripting language ) to emulate APPLYNN function. The reason is, in the next chapter we are going to port it to the scripting language of a MetaTrader trading platform, so it is a good idea to make sure everything works. Porting FFBP Neural Network to trading platform The following code is taken from Neural Networks Forex Trading article. It is a ready to be used pair of indicator and an expert, that uses that indicator. No kohonen neural network code yet. As usual, please keep in mind, that it is just an example, that is not necessarily going to always be profitable. Also, as some of our MetaTrader code is the same for all experts and indicators, we moved it to a separate library file. MetaTraders libraries are nothing but includable files. This library takes care of synhronization, when two or more expert are trying to run in the same time, as well as of few other things. If you use MetaTrader, it will help you to create robust experts, in any case, the MQL language is easy to understand. mylib. mql, a helper library Kohonen Neural Network FFBP Neural Network, no cycles We are done with a forex trading system that uses FFBP networks only. Now we are going to do the same work with a forex trading strategy . that uses FFBP and Kohonen SOM together. First of all, lets take som07.tsc again, and run it, in order to pick the best FFBP network. Note, that the Kohonen clustering map for this script was created earlier (in som04), and stored as som07winer. kh, so we do not have to recreate it. Trades: 52(Buy: 52, Sell :0) NocInterval: 12, Range: 0.004, Ma: 3 Lag: 2, Neurons: 3 Stop: 0.0200, Tp: 0.0000, Stop increase: 0.600000, Buy: 0.170, Sell: 0.900 Drawdown: 0.981 Profit: 6820.000000 (long: 6820.000000, short: 0.000000) Then, lets remove cycles from som07.tsc, to get the script we are going to port: Exporting weights of the Self-Organizing Map Lets add the code to print Neural Network parameters, both for FFBP Neural Network and for self-organizing map . We do it by adding the following to som10.tsc: Emulating APPLYSOM function The next step is to add the code, that emulates apply function, using generic scripting language instead of Cortex-specific calls. As we already have this code for FFBP NN, lets focus on SOM only. Porting Self-Organizing Map forex trading system based to MT The final step is to port our script to MetaTrader, so that it can be used for real trading. We are going to use the same expert as in the FFBP only example above, however, the indicator will contain both FFBP and SOM code. Note, that in addition, mylib. mq4 is used, its code is the same as in FFBP only example. The indicators code was created based on FFBP only example, by adding the SOM code, ported from som12.tsc: Final notes That is it. You can now create Cortex Neural Network Software script, that takes SOM output as its inputs, among other inputs, optimize it to do trading, and to port it to the trading platform of your choice. Note, that this is not your only option - you can use this approach, for example, to create FFBP NN that uses more than one indicator plus another FFBP NN output as its input, and so on. Download Cortex Order Cortex View Price List Visibility is very important for this site. If you like it please link to this URL


No comments:

Post a Comment