Thursday, February 23, 2017

Forex Support Vecteur Machine

MetaTrader 5 - Apprentissage de machines de trading: Comment les machines de vecteur de soutien peuvent être utilisées dans le commerce Qu'est-ce qu'une machine de vecteur de soutien Une machine de vecteur de soutien est une méthode d'apprentissage automatique qui tente de prendre des données d'entrée et de classer dans une de deux catégories. Pour qu'une machine à vecteur de support soit efficace, il est nécessaire d'utiliser d'abord un ensemble de données d'entrée et de sortie d'apprentissage pour construire le modèle de machine de vecteur de support qui peut être utilisé pour classer de nouvelles données. Une machine à vecteurs de soutien développe ce modèle en prenant les entrées d'entraînement, en les cartographiant en espace multidimensionnel, puis en utilisant la régression pour trouver un hyperplan (un hyperplan est une surface en espace n-dimensionnel qui sépare l'espace en deux demi-espaces) Les deux classes d'entrées. Une fois que la machine à vecteur de support a été formée, elle est capable d'évaluer de nouvelles entrées par rapport à l'hyperplan de séparation et de les classer dans une des deux catégories. Une machine de vecteur de support est essentiellement une machine de sortie d'entrée. Un utilisateur est capable de mettre en entrée, et basé sur le modèle développé par la formation, il retournera une sortie. Le nombre d'entrées pour une machine de vecteur de support donnée varie théoriquement de un à l'infini, mais en pratique la puissance de calcul limite le nombre d'entrées pouvant être utilisées. Si, par exemple, N entrées sont utilisées pour une machine de vecteur de support particulière (la valeur entière de N peut varier de un à l'infini), la machine de vecteur de support doit mapper chaque ensemble d'entrées dans l'espace N-dimensionnel et trouver a (N-1 ) - dimensionnelle qui mieux sépare les données d'entraînement. Figure 1. Les machines à vecteur de soutien sont des machines d'entrée-sortie La meilleure façon de concevoir comment fonctionne une machine de vecteur de support est en considérant le cas bidimensionnel. Supposons que nous voulons créer une machine vectorielle de support qui a deux entrées et retourne une sortie unique qui classe le point de données comme appartenant à l'une des deux catégories. Nous pouvons visualiser cela en le traçant sur un graphique en 2 dimensions tel que le graphique ci-dessous. Figure 2. Gauche: Entrées de la machine vectorielle de support mappées à un graphique 2D. Les cercles rouges et les croix bleues sont utilisés pour désigner les deux classes d'entrées. Figure 3. Droite: Soutenir les entrées de la machine vectorielle mappées sur un graphique 2D. Les cercles rouges et les croix bleues sont utilisés pour désigner les deux classes d'entrées avec une ligne noire indiquant l'hyperplan de séparation. Dans cet exemple, les croix bleues indiquent les points de données appartenant à la catégorie 1 et les cercles rouges qui représentent les points de données appartenant à la catégorie 2. Chacun des points de données individuels a une valeur d'entrée 1 unique (représentée par sa position sur l'axe des x ) Et une valeur d'entrée unique 2 (représentée par leur position sur l'axe y) et tous ces points ont été mappés à l'espace bidimensionnel. Une machine de vecteur de soutien est capable de classer les données en créant un modèle de ces points dans l'espace bidimensionnel. La machine à vecteur de support observe les données dans l'espace bidimensionnel et utilise un algorithme de régression pour trouver un hyperplan à 1 dimension (ligne aka) qui sépare le plus exactement les données en deux catégories. Cette ligne de séparation est ensuite utilisée par la machine à vecteur de support pour classer de nouveaux points de données dans la catégorie 1 ou la catégorie 2. L'animation ci-dessous illustre le processus d'apprentissage d'une nouvelle machine de vecteur de support. L'algorithme commencera par faire une estimation aléatoire d'un hyperplan de séparation, puis améliorera itérativement la précision de l'hyperplan. Comme vous pouvez le voir l'algorithme commence assez agressivement, mais ralentit alors qu'il commence à approcher la solution des désirs. Figure 4. Une animation montrant une formation de machine de vecteur de support. L'hyperplan converge progressivement sur la géométrie idéale pour séparer les deux classes de données. Le scénario bidimensionnel présenté ci-dessus nous permet de visualiser le processus d'une machine vecteur de support, mais il ne peut classer un point de données qu'à l'aide de deux entrées. Que faire si nous voulons utiliser plus d'entrées Heureusement, l'algorithme de la machine à vecteur de support nous permet de faire la même chose dans les dimensions supérieures, bien qu'il devienne beaucoup plus difficile à concevoir. Considérez ceci, vous souhaitez créer une machine vectorielle de support qui prend 20 entrées et peut classer n'importe quel point de données en utilisant ces entrées soit dans la catégorie 1 ou la catégorie 2. Pour ce faire, la machine vecteur de soutien doit modéliser les données dans l'espace 20 dimensions Et utiliser un algorithme de régression pour trouver un hyperplan de 19 dimensions qui sépare les points de données en deux catégories. Cela devient extrêmement difficile à visualiser, car il est difficile pour nous de comprendre quelque chose au-dessus de 3 dimensions, mais tout ce que vous devez savoir est que fonctionne exactement de la même manière qu'il le fait pour le cas bidimensionnel. Imaginez ce scénario hypothétique, vous êtes un chercheur enquêter sur un animal rare seulement trouvé dans les profondeurs de l'Arctique appelé Shnicks. Compte tenu de l'éloignement de ces animaux, seulement une petite poignée ont jamais été trouvés (disons environ 5000). En tant que chercheur, vous êtes coincé avec la question. Comment puis-je identifier un Schnick? Tout ce que vous avez à votre disposition sont les documents de recherche précédemment publiés par la poignée de chercheurs qui en ont vu un. Dans ces documents de recherche, les auteurs décrivent certaines caractéristiques des Schnicks qu'ils ont trouvés, à savoir la hauteur, le poids, le nombre de jambes, etc. Mais toutes ces caractéristiques varient entre les documents de recherche sans motif discernable. Comment pouvons-nous utiliser ces données pour identifier un nouvel animal comme schnick? Une solution possible à notre problème est d'utiliser une machine de vecteur de soutien pour identifier les modèles dans les données et créer un cadre qui peut être utilisé pour classer les animaux comme schnick ou Pas un schnick. La première étape est de créer un ensemble de données qui peuvent être utilisés pour former votre machine vecteur de soutien pour identifier schnicks. Les données de formation sont un ensemble d'entrées et de sorties correspondantes pour la machine à vecteur de support pour analyser et extraire un motif. Par conséquent, nous devons décider quels intrants seront utilisés et combien. En théorie, nous pouvons avoir autant d'entrées que nous le voulons, mais cela peut souvent conduire à une formation lente (plus les entrées que vous avez le plus de temps, il faut la machine de vecteur de soutien pour extraire des modèles). En outre, vous voulez choisir des valeurs d'entrées qui tendent à être relativement cohérentes dans tous les schnicks. Par exemple, la hauteur ou le poids de l'animal serait un bon exemple d'une entrée parce que vous vous attendez à ce que ce serait relativement cohérent à travers tous les schnicks. Cependant, l'âge moyen d'un animal serait un mauvais choix d'intrants, car on peut s'attendre à ce que l'âge des animaux identifiés varie considérablement. Pour cette raison, les entrées suivantes ont été choisies: Hauteur Poids Le nombre de jambes Le nombre d'yeux La longueur des animaux La vitesse moyenne des animaux La fréquence de l'appel des animaux Avec les entrées choisies, nous pouvons commencer à compiler nos données d'entraînement . Les données d'entraînement efficaces pour une machine de vecteur de support doivent répondre à certaines exigences: Les données doivent avoir des exemples d'animaux qui sont schnicks Les données doivent avoir des exemples d'animaux qui ne sont pas schnicks Dans ce cas nous avons les documents de recherche de scientifiques qui ont identifié un schnick Et énuméré leurs propriétés. Par conséquent, nous pouvons lire ces documents de recherche et extraire les données sous chacune des entrées et attribuer une sortie de vrai ou faux à chacun des exemples. Les données de formation dans ce cas peuvent ressembler au tableau ci-dessous. Tableau 1. Exemple de table des observations schnick Une fois que nous avons rassemblé les données pour toutes nos entrées et sorties d'entraînement, nous pouvons l'utiliser pour former notre machine vecteur de support. Au cours du processus de formation, la machine de vecteur de support va créer un modèle dans l'espace à sept dimensions qui peut être utilisé pour trier chacun des exemples de formation en vrai ou faux. La machine de vecteur de support continuera à le faire jusqu'à ce qu'il ait un modèle qui représente précisément les données d'entraînement (dans la tolérance d'erreur spécifiée). Une fois la formation terminée, ce modèle peut être utilisé pour classer les nouveaux points de données comme vrais ou faux. Est-ce que la machine de vecteur de soutien fonctionne réellement En utilisant le scénario de Schnick, j'ai écrit un manuscrit qui évalue à quel point une machine de vecteur de soutien peut réellement identifier de nouveaux schnicks. Pour ce faire, j'ai utilisé la bibliothèque de fonctions Support Vector Machine Learning Tool qui peut être téléchargée sur le Market. Pour modéliser ce scénario efficacement, nous devons d'abord décider quelles sont les propriétés réelles d'un Schnick. Les propriétés que j'ai assumées dans ce cas ont été énumérées dans le tableau ci-dessous. Si un animal satisfait à tous les critères ci-dessous, il s'agit d'un Schnick. Tableau 2. Résumé des paramètres qui définissent un schnick Maintenant que nous avons défini notre Schnick, nous pouvons utiliser cette définition pour expérimenter avec des machines de vecteurs de support. La première étape est de créer une fonction qui est capable de prendre les sept entrées pour un animal donné et de retourner la classification réelle de l'animal comme un schnick ou non. Cette fonction sera utilisée pour générer des données de formation pour la machine de vecteur de support ainsi que pour évaluer la performance de celle-ci à la fin. Cela peut être fait en utilisant la fonction ci-dessous. L'étape suivante du processus consiste à créer une fonction qui peut générer les entrées et sorties d'apprentissage. Les entrées dans ce cas seront générées en créant des nombres aléatoires dans une plage définie pour chacune des sept valeurs d'entrée. Ensuite, pour chacun des ensembles d'entrées aléatoires générées, la fonction isItASchnick () ci-dessus sera utilisée pour générer la sortie souhaitée correspondante. Ceci est fait dans la fonction ci-dessous: Nous avons maintenant un ensemble d'entrées et de sorties d'entraînement, il est maintenant temps de créer nos machines de vecteur de soutien en utilisant l'outil d'apprentissage de machine de vecteur de soutien disponible dans le marché. Une fois qu'une nouvelle machine de vecteur de support est créée, il est nécessaire de lui transmettre les entrées et sorties d'entraînement et d'exécuter la formation. Nous avons maintenant une machine de vecteur de support qui a été formée avec succès dans l'identification de Scnhicks. Pour vérifier cela, nous pouvons tester la machine de vecteur de support final en lui demandant de classer de nouveaux points de données. Ceci est fait en générant d'abord des entrées aléatoires, puis en utilisant la fonction isItASchnick () pour déterminer si ces entrées correspondent à un Schnick réel, puis utilisez la machine de vecteur support pour classer les entrées et déterminer si le résultat prévu correspond au résultat réel. Ceci est fait dans la fonction ci-dessous: Je recommande de jouer avec les valeurs dans les fonctions ci-dessus pour voir comment la machine de vecteur de soutien effectue dans différentes conditions. Pourquoi le support Vector Machine est-il si utile? L'avantage d'utiliser une machine vectorielle de support pour extraire un motif complexe à partir des données est qu'il n'est pas nécessaire d'avoir une compréhension préalable du comportement des données. Une machine de vecteur de support est capable d'analyser les données et d'extraire ses seules intuitions et relations. De cette manière, il fonctionne comme une boîte noire recevant des entrées et générant une sortie qui peut s'avérer très utile pour trouver des modèles dans les données qui sont trop complexes et pas évidentes. Une des meilleures caractéristiques des machines de vecteurs de support est qu'ils sont capables de traiter les erreurs et le bruit dans les données très bien. Ils sont souvent capables de voir le schéma sous-jacent dans les données et de filtrer les données aberrantes et d'autres complexités. Considérez le scénario suivant, en effectuant votre recherche sur Schnicks, vous rencontrez de multiples documents de recherche qui décrivent Schnicks avec des caractéristiques massivement différentes (comme un schnick qui est de 200 kg et est 15000mm de hauteur). Des erreurs comme celle-ci peuvent conduire à des distorsions de votre modèle de ce qu'est un Schnick, ce qui pourrait potentiellement vous faire faire une erreur lors du classement de nouvelles découvertes Schnick. L'avantage de la machine vecteur de support est qu'il développera un modèle qui s'accorde avec le modèle sous-jacent opposé à un modèle qui correspond à tous les points de données d'entraînement. Cela se fait en permettant à un certain niveau d'erreur dans le modèle d'autoriser la machine à vecteur de support à ignorer les erreurs dans les données. Dans le cas de la machine à vecteurs de soutien de Schnick, si nous tolérons une tolérance d'erreur de 5, la formation tentera seulement de développer un modèle qui correspond à 95 des données de formation. Cela peut être utile car il permet à la formation d'ignorer le faible pourcentage de valeurs aberrantes. Nous pouvons étudier cette propriété de la machine de vecteur de support en modifiant notre script de Schnick. La fonction ci-dessous a été ajoutée pour introduire des erreurs aléatoires délibérées dans notre jeu de données de formation. Cette fonction sélectionnera les points d'entraînement au hasard et remplacera les entrées et la sortie correspondante par des variables aléatoires. Cette fonction nous permet d'introduire des erreurs délibérées dans nos données de formation. En utilisant ces données remplies d'erreur, nous pouvons créer et former une nouvelle machine de vecteur de support et comparer sa performance avec celle d'origine. Lorsque le script est exécuté, il produit les résultats suivants dans le journal expert. Dans un ensemble de données de formation avec 5000 points de formation, nous avons pu introduire 500 erreurs aléatoires. Lors de la comparaison de la performance de cette machine à vecteur de support rempli d'erreur avec celle d'origine, la performance est seulement réduite par lt1. Cela est dû au fait que la machine de vecteur de support peut ignorer les valeurs aberrantes dans l'ensemble de données lors de la formation et est encore capable de produire un modèle impressionnant précis des données vraies. Cela suggère que les machines à vecteurs de soutien pourraient être un outil plus utile pour extraire des profils complexes et des idées à partir de jeux de données bruyants. 5. Une version complète du code ci-dessus peut être téléchargée à partir de Code Base, mais ce script ne peut être exécuté dans votre terminal que si vous avez acheté un Version complète de l'outil Support Vector Machine outil d'apprentissage du marché. Si vous avez seulement une version de démonstration de cet outil téléchargé, vous serez limité à utiliser l'outil via le testeur de stratégie. Pour permettre le test du code Schnick à l'aide de la version de démonstration de l'outil, j'ai réécrit une copie du script dans un Expert Advisor qui peut être déployé à l'aide du testeur de stratégie. Les deux versions de code peuvent être téléchargées en suivant les liens ci-dessous: Version complète - Utilisation d'un script qui est déployé dans le terminal MetaTrader 5 (nécessite une version achetée de l'outil d'apprentissage Machine Vector Support) Version de démonstration - Utilisation d'un conseiller expert Déployé dans le testeur de stratégie MetaTrader 5 (nécessite seulement une version de démonstration de l'outil d'apprentissage de la machine à vecteur de soutien) Comment peut-on utiliser les machines vectorielles sur le marché? Certes, l'exemple de Schnick décrit ci-dessus est assez simple. Peuvent être tirés entre cet exemple et en utilisant les machines de vecteurs de support pour l'analyse technique du marché. L'analyse technique consiste essentiellement à utiliser les données historiques du marché pour prévoir les mouvements futurs des prix. De la même façon, dans l'exemple de schnick, nous utilisions les observations faites par des scientifiques du passé pour prédire si un nouvel animal est schnick ou non. En outre, le marché est en proie au bruit, les erreurs et les valeurs aberrantes statistiques qui font de l'utilisation d'une machine de vecteur de soutien un concept intéressant. La base d'un nombre important d'approches de négociation d'analyse technique implique les étapes suivantes: Suivi de plusieurs indicateurs Identifier les conditions de chaque indicateur corrélées à un commerce potentiellement efficace Surveiller chacun des indicateurs et évaluer quand ils (ou la plupart) signalent un commerce Est possible d'adopter une approche similaire pour utiliser des machines de vecteurs de soutien pour signaler de nouveaux métiers d'une manière similaire. L'outil d'apprentissage de la machine à vecteur de support a été développé dans cet esprit. Une description complète de la façon d'utiliser cet outil peut être trouvé sur le marché, donc je vais seulement donner un aperçu rapide. Le processus d'utilisation de cet outil est le suivant: Figure 6. Le schéma fonctionnel montrant le processus de mise en œuvre de la machine-outil de vecteur de support dans un Expert Advisor Avant de pouvoir utiliser l'outil d'apprentissage de Vector Vector Machine, il est important de comprendre d'abord comment la formation Entrées et sorties sont générés. Comment les entrées d'entraînement sont-elles générées? Ainsi, les indicateurs que vous souhaitez utiliser comme entrées ont déjà été initialisés ainsi que votre nouvelle machine vectorielle de support. L'étape suivante consiste à passer les poignées d'indicateur à votre nouvelle machine de vecteur de support et à lui indiquer comment générer les données de formation. Cela se fait en appelant la fonction setIndicatorHandles (). Cette fonction vous permet de passer les poignées des indicateurs initialisés dans la machine de vecteur de support. Cela se fait en passant et le tableau entier contenant les poignées. Les deux autres entrées pour cette fonction sont la valeur de décalage et le nombre de points de données. La valeur de décalage désigne le décalage entre la barre courante et la barre de départ à utiliser pour générer les entrées d'entraînement et le nombre de points de formation (désigné par N) définit la taille de vos données d'entraînement. Le schéma ci-dessous illustre comment utiliser ces valeurs. Une valeur de décalage de 4 et une valeur de N de 6 indiquent à la machine à vecteur de support d'utiliser uniquement les barres saisies dans le carré blanc pour générer des entrées et des sorties d'apprentissage. De même, une valeur de décalage de 8 et une valeur de N de 8 indiquent à la machine à vecteur de support d'utiliser uniquement les barres saisies dans le carré bleu pour générer des entrées et des sorties d'apprentissage. Une fois la fonction setIndicatorHandles () a été appelée, il est possible d'appeler la fonction genInputs (). Cette fonction utilisera les poignées d'indicateur transmises pour générer un tableau de données d'entrée à utiliser pour la formation. Figure 7. Diagramme de bougies illustrant les valeurs du décalage et du N Comment les extrants de formation produits Les résultats de la formation sont générés en simulant des transactions hypothétiques basées sur des données de prix historiques et en déterminant si un tel échange aurait été un succès ou un échec. Pour ce faire, il y a quelques paramètres qui sont utilisés pour donner à l'outil d'apprentissage de la machine à vecteur de support comment évaluer un commerce hypothétique comme ayant réussi ou échoué. La première variable est OPTRADE. La valeur de cette valeur peut être soit ACHETER, soit VENDRE, et correspondra soit à des opérations hypothétiques d'achat ou de vente. Si la valeur de cette valeur est ACHETER, alors lors de la génération des résultats, il ne regardera que le succès potentiel des opérations d'achat hypothétiques. Alternativement, si la valeur de cela est VEND, alors lors de la génération des sorties, il ne regardera que le succès potentiel des opérations de vente hypothétiques. Les valeurs suivantes utilisées sont le Stop Loss et Take Profit pour ces opérations hypothétiques. Les valeurs sont définies en pips et définissent les niveaux d'arrêt et de limite pour chacun des métiers hypothétiques. Le paramètre final est la durée du commerce. Cette variable est mesurée en heures et veillera à ce que seules les transactions complètes dans cette durée maximale soient considérées comme réussies. La raison d'inclure cette variable est d'éviter la signalisation de la machine de vecteur de soutien trades dans un marché latéral lent. Considérations à prendre lors du choix des entrées Il est important de mettre un peu de réflexion dans la sélection d'entrée lors de la mise en œuvre des machines de vecteur de soutien dans votre négociation. Similaire à l'exemple de Schnick, il est important de choisir une entrée qui devrait avoir des similarités entre les différentes incidences. Par exemple, vous pouvez être tenté d'utiliser une moyenne mobile en tant qu'entrée, cependant puisque le prix moyen à long terme tend à changer de façon spectaculaire au fil du temps, une moyenne mobile isolée peut ne pas être la meilleure entrée à utiliser. C'est parce qu'il n'y aura aucune similitude significative entre la valeur moyenne mobile aujourd'hui et les valeurs moyennes mobiles il ya six mois. Supposons que nous négocions EURUSD et que nous utilisions une machine de vecteur de support avec une entrée de moyenne mobile pour signaler des transactions d'achat. Disons que le prix actuel est de 1,10, mais il est générant des données d'entraînement de il ya six mois quand le prix était de 0,55. Lors de la formation de la machine vecteur de support, le motif qu'il trouve peut seulement conduire à un commerce étant signalé lorsque le prix est d'environ 0,55, car c'est la seule donnée qu'il connaît. Par conséquent, votre machine de vecteur de support peut ne jamais signaler un commerce jusqu'à ce que le prix redescende à 0,55. Au lieu de cela, une meilleure entrée à utiliser pour la machine de vecteur de support peut être un MACD ou un oscillateur similaire, car la valeur du MACD est indépendante du niveau de prix moyen et ne signale que le mouvement relatif. Je vous recommande d'expérimenter avec ceci pour voir ce qui produit les meilleurs résultats pour vous. Une autre considération à prendre lors du choix des intrants est de s'assurer que la machine de vecteur de soutien a un instantané adéquat d'un indicateur pour signaler un nouveau commerce. Vous pouvez trouver dans votre propre expérience de trading qu'un MACD est seulement utile quand vous avez les cinq dernières barres à regarder, car cela montrera une tendance. Une seule barre du MACD peut être inutile dans l'isolement à moins que vous puissiez dire si elle se dirige vers le haut ou vers le bas. Par conséquent, il peut être nécessaire de passer les dernières barres de l'indicateur MACD à la machine de vecteur de support. Il ya deux façons possibles de le faire: Vous pouvez créer un nouvel indicateur personnalisé qui utilise les cinq dernières barres de l'indicateur MACD Calculer une tendance sous la forme d'une valeur unique. Cet indicateur personnalisé peut alors être transmis à la machine de vecteur de support comme une entrée unique ou Vous pouvez utiliser les cinq barres précédentes de l'indicateur MACD dans la machine de vecteur de support comme cinq entrées distinctes. La méthode consiste à initialiser cinq instances différentes de l'indicateur MACD. Chacun des indicateurs peut être initialisé avec un décalage différent de la barre actuelle. Ensuite, les cinq poignées des indicateurs séparés peuvent être transmises à la machine à vecteur de support. Il convient de noter que l'option 2 aura tendance à entraîner des délais d'exécution plus longs pour votre conseiller expert. Le plus d'entrées que vous avez, plus il faudra pour réussir à former. Implémenter les machines à vecteur de soutien et Expert Advisor J'ai préparé un expert consultant qui est un exemple de la façon dont quelqu'un pourrait potentiellement utiliser des machines de vecteur de soutien dans leur propre commerce (une copie de ce peut être téléchargé en suivant ce lien mql5encode1229). Espérons que le conseiller expert vous permettra d'expérimenter un peu avec les machines de vecteur de soutien. Je vous recommande copychangemodify le conseiller expert pour convenir à votre propre style de négociation. L'EA fonctionne comme suit: Deux nouvelles machines de vecteurs de support sont créées à l'aide de la bibliothèque svMachineTool. L'un est mis en place pour signaler de nouveaux métiers d'achat et l'autre est mis en place pour signaler de nouveaux métiers de vente. Sept indicateurs standard sont initialisés avec chacune de leurs poignées stockées dans un tableau entier (Note: toute combinaison d'indicateurs peut être utilisée comme entrée, il suffit de les transmettre au SVM dans un tableau entier). Le tableau des poignées indicatrices est transmis aux nouvelles machines de vecteurs de support. En utilisant le tableau des poignées d'indicateurs et d'autres paramètres, les données de prix historiques sont utilisées pour générer des entrées et des sorties précises à utiliser pour la formation des machines de vecteurs de support. Une fois que toutes les entrées et les sorties ont été générées, les deux machines à vecteur de support sont formées. Les machines de vecteurs de soutien formés sont utilisées dans l'EA pour signaler de nouveaux achats et de vendre des métiers. Lorsqu'une nouvelle transaction d'achat ou de vente est signalée, le commerce s'ouvre avec les ordres manuels Stop Loss et Take Profit. L'initialisation et la formation de la machine vectorielle de support sont exécutées dans la fonction onInit (). Pour votre référence, ce segment de la svTrader EA a été inclus ci-dessous avec des notes. Advanced Support Vector Machine Trading Capacité supplémentaire a été intégrée dans l'outil d'apprentissage de la machine de vecteur de soutien pour les utilisateurs les plus avancés là-bas. L'outil permet aux utilisateurs de transmettre leurs propres données d'entrée personnalisées et les données de sortie (comme dans l'exemple de Schnick). Cela vous permet de personnaliser vos propres critères pour les entrées et sorties de la machine vectorielle de support et de transmettre manuellement ces données pour les former. Cela ouvre la possibilité d'utiliser des machines de vecteur de soutien dans n'importe quel aspect de votre négociation. Il est non seulement possible d'utiliser des machines de vecteur de soutien pour signaler de nouveaux métiers, mais il peut également être utilisé pour signaler la fermeture des métiers, la gestion de l'argent, de nouveaux indicateurs avancés, etc Cependant pour vous assurer de ne pas recevoir des erreurs, il est important de comprendre comment Ces entrées et sorties doivent être structurées. Entrées: Les entrées sont transmises à SVM en tant que matrice 1 dimensionnelle de valeurs doubles. Veuillez noter que toute entrée que vous créez doit être transmise en tant que double valeur. Boolean, integer, etc. doivent tous être convertis en une double valeur avant d'être transmis dans la machine vecteur de support. Les entrées sont requises sous la forme suivante. Par exemple, supposons que nous passons des entrées avec 3 entrées x 5 points de formation. Pour ce faire, notre double réseau doit avoir 15 unités de longueur dans le format: A 1 B 1 C 1 A 2 B 2 C 2 A 3 B 3 C 3 A 4 B 4 C 4 A 5 B 5 C 5 Il est également nécessaire Pour transmettre une valeur pour le nombre d'entrées. Dans le cas, NInputs3. Sorties: les sorties sont transmises en tant que tableau de valeurs booléennes. Ces valeurs booléennes sont la sortie désirée du SVM correspondant à chacun des ensembles d'entrées passées. Suivant l'exemple ci-dessus, disons que nous avons 5 points de formation. Dans ce scénario, nous allons passer dans un tableau booléen des valeurs de sortie qui est de 5 unités de long. Lorsque vous générez vos propres entrées et sorties, assurez-vous que la longueur de vos tableaux correspond aux valeurs que vous transmettez. Si elles ne correspondent pas, une erreur sera générée en vous informant de l'écart. Par exemple, si nous avons passé dans NInputs3, et les entrées est un tableau de longueur 16, une erreur sera lancée (puisque, une valeur Ninputs de 3 signifie que la longueur de n'importe quel tableau d'entrée devra être un multiple de 3) . De même, assurez-vous que le nombre d'ensembles d'entrées et le nombre de sorties que vous passez sont égaux. Encore une fois, si vous avez NInputs3, longueur d'entrées de 15 et une longueur de sorties de 6, une autre erreur sera lancée (comme vous avez 5 ensembles d'entrées et 6 sorties). Essayez de vous assurer que vous avez assez de variation dans vos résultats de formation. Par exemple, si vous passez dans 100 points de formation, ce qui signifie un tableau de sortie de longueur 100, et toutes les valeurs sont fausses avec un seul vrai, alors la différenciation entre le cas vrai et le cas faux n'est pas suffisant. Cela aura tendance à conduire à la formation SVM très rapide, mais la solution finale étant très pauvre. Un ensemble d'entraînement plus diversifié mènera souvent à une plus affective SVM. Foreign Exchange Trading avec Support Vector Machines Références BOSER, B. E. GUYON, I. M. et VAPNIK, V. N. (1992): Algorithme de formation pour les classificateurs de marge optimale. Dans: D. Haussler (Ed.): Actes du 5e atelier annuel ACM sur la théorie de l'apprentissage numérique. ACM Press, 144152. BOX, G. E.P. Et JENKINS, G. M. (1976): Analyse des séries temporelles: prévision et contrôle. Holden-Day, San Francisco. MATH BROWN, M. GRUNDY, W. LIN, D. CRISTIANINI, N. SUGNET, C. FUREY, T. ARES, M. et HAUSSLER, D. (1999): Analyse basée sur la connaissance des données d'expression génique de microarray utilisant le vecteur de support Machines. Rapport technique . Université de Californie, Santa Cruz. CHANG, C. C. Et LIN, C. J. (2001): LIBSVM: une bibliothèque pour les machines à vecteur de support (version 2.31). Rapport technique . Département des sciences informatiques et de l'ingénierie de l'information, Université nationale de Taiwan, Taipei, Taiwan. CORTES, C. et VAPNIK, V. (1995): Réseau Vectoriel de Soutien. Apprentissage automatique. 20, 273297. MATH FRANCOIS, D. WERTZ, V. et VERLEYSEN, M. (2005): A propos de la localité des noyaux dans les espaces à haute dimension. ASMDA 2005 - Symposium international sur les modèles stochastiques appliqués et l'analyse des données. Brest, France, 238245. GRANGER, C. W.J. (1969): Recherche des relations causales par des modèles économétriques et des méthodes croisées. Économétrique. 37, 424438. JO: Regroupement JOACHIMS, T. (1998): catégorisation du texte avec les machines à vecteur de soutien. Actes de la Conférence européenne sur l'apprentissage automatique (CELV). KAMRUZZAMAN, J. et SARKER, R. A. (2003a): Prévision du taux de change: une étude de cas. Actes de la Conférence internationale IEEE sur les réseaux neuronaux et le traitement du signal (ICNNSP). Nanjing. KAMRUZZAMAN, J. et SARKER, R. A. (2003b): Application de la machine de vecteur de soutien à la surveillance Forex. Troisième Conférence internationale sur les systèmes intelligents hybrides (HIS). Melbourne. KAMRUZZAMAN, J. SARKER, R. A. Et AHMAD, I. (2003): Modèles à base de SVM pour la prévision des taux de change. Actes de la troisième Conférence internationale IEEE sur l'exploitation des données (ICDM). KARATZOGLOU, A. HORNIK, K. SMOLA, A. et ZEILEIS, A. (2004): Kernlab-Un paquet S4 pour les méthodes de noyau dans R. Journal of Statistical Software. 11, 9. CrossRef KUAN, C. M. Et LIU, T. (1995): Prévision des taux de change à l'aide des réseaux neuronaux feedforward et récurrents. Journal of Applied Econometrics. 10, 347364. CrossRef MLLER, K. R. SMOLA, A. RTSCH, G. SCHLKOPF, B. KOHLMORGEN, J. et VAPNIK, V. (1999): Utilisation de machines à vecteur de soutien pour la prévision des séries temporelles. Dans: B. Schlkopf, C. J.C. Burges et A. J. Smola (Eds.): Advances in Kernel Methods. MIT Press, 242253. PLATT, J. C. (1998): Optimisation minimale séquentielle: un algorithme rapide pour la formation de vecteurs de support. Rapport technique . Microsoft Research. QUINLAN, M. J. CHALUP, S. K. Et MIDDLETON, R. H. (2004): Application des SVM pour la classification des couleurs et la détection des collisions avec des robots AIBO. Avancées dans les systèmes de traitement de l'information neuronale. 16. 635642. SCHLKOPF, B. (2001): Le truc du noyau pour les distances. Rapport technique, MSR 2000-51. Microsoft Research, Redmond, WA. VAPNIK, V. (1998): Théorie statistique de l'apprentissage. Wiley, New York. MATHTrading avec Support Vector Machines (SVM) Enfin toutes les étoiles ont aligné et je peux consacrer avec confiance un certain temps pour back-testing de nouveaux systèmes de négociation, et Support Vector Machines (SVM) sont le nouveau jouet qui va me tenir occupé pour un tandis que. Les SVM sont un outil bien connu dans le domaine de l'apprentissage automatisé supervisé. Et ils sont utilisés à la fois pour la classification et la régression. Pour plus de détails, se référer à la littérature. Il me semble que l'application la plus intuitive pour la négociation est la régression, alors laissez commencer par la construction d'un modèle de régression SVM. Suite à notre expérience avec les modèles ARMAGARCH, nous commencerons par essayer de prévoir les rendements, au lieu des prix. De même, dans nos premiers tests, nous n'utiliserons que les retours des 5 jours précédents comme caractéristiques déterminant le retour d'un jour donné. Nous allons commencer avec l'histoire de 500 jours que l'ensemble de formation. En termes plus mathématiques, pour l'ensemble d'entraînement nous avons N caractéristiques, pour chacun d'eux nous avons M échantillons. Nous avons aussi M réponses. Étant donné une rangée de valeurs de caractéristiques, la matrice de gauche, la SVM est formée pour produire la valeur de réponse. Dans notre exemple spécifique, nous avons cinq colonnes (caractéristiques), chaque colonne correspondant aux retours avec un lag différent (de 1 à 5). Nous avons 500 échantillons et les réponses correspondantes. Une fois la SVM formée sur cet ensemble, nous pouvons commencer à l'alimenter avec des ensembles de cinq caractéristiques, correspondant aux rendements pour les cinq jours précédents, et le SVM nous fournira la réponse, qui est le retour prévu. For example, after training the SVM on the previous 500 days, we will use the returns for days 500, 499, 498, 497 and 496 (these are ours as the input to obtain the forecasted return for day 501. From all the packages available in R, I decided to choose the e1071 package. A close second choice was the kernlab package, which I am still planning to try in the future. Then I tried a few strategies. First I tried something very similar to the ARMAGARCH approach the lagged returns from the five previous days. I was quite surprised to see this strategy performing better than the ARMAGARCH (this is the home land of the ARMAGARCH and I would have been quite happy just with comparable performance) Next, I tried to the same five features, but trying to select the best subset. The selection was done using a greedy approach, starting with 0 features, and interactively adding the feature which minimizes the error best. This approach improved things further. Finally, I tried a different approach with about a dozen features. The features included returns over different period of time (1-day, 2-day, 5-day, etc), some statistics (mean, median, sd, etc) and volume. I used the same greedy approach to select features. This final system showed a very good performance as well, but it took a hell of a time to run. Time to end this post, the back-testing results have to wait. Until then you can play with the full source code yourself. Here is an example of using it:


No comments:

Post a Comment