Pionnier dans Tomorrows Trading Comment fonctionne-t-il Construire des algorithmes dans un navigateur IDE, en utilisant des stratégies de modèle et Free Data Design et tester votre stratégie sur nos données gratuites et lorsque vous êtes prêt à le déployer en direct à votre courtage. Code dans plusieurs langages de programmation et exploiter notre groupe de centaines de serveurs pour exécuter votre backtest pour analyser votre stratégie en actions, FX, CFD, options ou marchés à terme. QuantConnect est la prochaine révolution dans le commerce quantitatif, combinant le cloud computing et l'accès ouvert aux données. Une vitesse inégalée Utilisez notre batterie de serveurs pour des vitesses institutionnelles à partir de votre ordinateur de bureau. Vous pouvez itérer sur vos idées plus rapidement que vous avez jamais fait auparavant. Massive Data Library Nous fournissons une vaste bibliothèque de données de résolution de tiques de 400 To, couvrant les actions américaines, Options, Futures, Fundamentals, CFD et Forex depuis 1998. Exécution de classe mondiale Nos algorithmes de trading en direct sont co-situés à côté des serveurs de marché à Equinix (NY7) Pour une exécution rapide, résiliente et sûre sur les marchés. Avez-vous de bonnes idées? Laissez-le tester Démarrez votre algorithme Qualité professionnelle, Open Data Library Conception de stratégies avec notre bibliothèque de données soigneusement organisée, couvrant les marchés mondiaux, de la tique à la résolution quotidienne. Les données sont mises à jour presque quotidiennement afin que vous puissiez backtest sur les données les plus récentes possible, et la survie biais libre. Nous offrons des données sur les actions qui remontent à janvier 1998 pour chaque symbole échangé, totalisant plus de 29 000 actions. Le prix est fourni par QuantQuote. En outre, nous avons Morning Star Données fondamentales pour les plus populaires 8 000 symboles pour 900 indicateurs depuis 1998. Forex CFD CFD Nous proposons 100 paires de devises et 70 contrats CFD couvrant toutes les grandes économies fournies par FXCM et OANDA. Les données sont à la résolution de la tique, commence avril 2007 et est mise à jour quotidiennement. Nous offrons des contrats à terme et des données de cotation de janvier 2009 à aujourd'hui, pour chaque contrat négocié dans CME, COMEX et GLOBEX. Les données sont mises à jour chaque semaine et fournies par AlgoSeek. Nous proposons des opérations sur options et des cotations jusqu'à une résolution minime, pour chaque option négociée sur ORPA depuis 2007, couvrant des millions de contrats. Les données sont mises à jour dans les 48 heures et fournies par AlgoSeek. Collaboration en équipe Trouvez de nouveaux amis dans la communauté et collaborez avec notre fonctionnalité de codage d'équipe Partagez des projets et consultez leur code instantanément au fur et à mesure de leur frappe. Vous pouvez même accorder l'accès en direct et contrôler l'algorithme en direct ensemble. Utilisez notre messagerie instantanée interne pour trouver des membres potentiels de l'équipe pour unir leurs forces. Propriété intellectuelle sécurisée Notre objectif est de vous donner la meilleure plate-forme de négociation algorithmique possible et de protéger votre précieuse propriété intellectuelle. Nous serons toujours un fournisseur d'infrastructure et de technologie d'abord. Lorsque vous êtes prêt pour le commerce en direct bien heureux vous aider à exécuter à travers votre courtier de choix. Exécuter par le biais de courtiers de premier plan Weve intégré avec les courtiers mondiaux de premier plan pour fournir la meilleure exécution et les frais les plus bas à la communauté. Stratégies entraînées par les événements Conception d'un algorithme ne pourrait pas être plus facile. Il n'y a que deux fonctions requises et nous nous occupons de tout le reste. Vous venez d'initialiser () votre stratégie et de gérer les événements de données que vous avez demandés. Vous pouvez créer de nouveaux indicateurs, classes, dossiers et fichiers avec un compilateur C complet basé sur le Web et un auto-complet. Nous nous engageons à vous offrir la meilleure expérience de conception d'algorithmes possible. Tirer parti de votre potentiel Opt dans les utilisateurs peuvent avoir leurs stratégies présentées aux clients hedgefund dans un tableau de bord professionnel transparent de la stratégie. Stratégies sont validées par QuantConnects backtesting et live trading, vous donnant une neutralité tiers examen du code. Les hedgefunds intéressés peuvent vous contacter directement à travers QuantConnect pour vous offrir un emploi ou un financement pour votre stratégie. Joignez-vous à notre communauté Nous avons l'une des plus importantes communautés commerciales quantitatives au monde, construisant, partageant et discutant des stratégies à travers notre communauté. Converse avec certains des esprits les plus brillants dans le monde que nous explorons de nouveaux domaines de la science, des mathématiques et de la finance. Forex Trading Diary 1 - Forex Trading automatisé avec l'API OANDA J'ai déjà mentionné dans l'article QuantStart: 2014 révision que je serais dépenser Certains de 2015 écrit sur le commerce de forex automatisé. Étant donné que moi-même habituellement effectuer des recherches sur les marchés d'actions et à terme, j'ai pensé qu'il serait amusant (et éducatif) d'écrire sur mes expériences d'entrer sur le marché des changes dans le style d'un journal. Chaque entrée de journal tentera de construire sur tous ceux avant, mais devrait également être relativement autonome. Dans cette première entrée du journal Ill être décrivant comment mettre en place un nouveau compte de courtage de pratique avec OANDA ainsi que la façon de créer un moteur de négociation multithread base événementielle qui peut exécuter automatiquement les métiers à la fois dans un cadre pratique et en direct. L'année dernière, nous avons passé beaucoup de temps à regarder le backtestter événementiel. Principalement pour les actions et les FNB. Celui que je présente ci-dessous est orienté vers le forex et peut être utilisé pour le commerce de papier ou de commerce en direct. J'ai écrit toutes les instructions suivantes pour Ubuntu 14.04, mais ils devraient facilement traduire à Windows ou Mac OS X, en utilisant une distribution Python comme Anaconda. La seule bibliothèque supplémentaire utilisée pour le moteur de négoce Python est la bibliothèque de requêtes, qui est nécessaire pour la communication HTTP avec l'API OANDA. Puisque c'est le premier poste directement sur le commerce de change, et le code présenté ci-dessous peut être directement adapté à un environnement commercial en direct, je tiens à présenter les avertissements suivants: Avertissement: Trading de devises étrangères sur la marge comporte un niveau élevé de risque, Et peut ne pas convenir à tous les investisseurs. Les performances passées ne représentent pas les résultats futurs. Le haut degré de levier peut travailler contre vous ainsi que pour vous. Avant de décider d'investir en devises, vous devriez considérer attentivement vos objectifs de placement, votre niveau d'expérience et votre appétit pour le risque. La possibilité existe que vous pourriez soutenir une perte de tout ou partie de votre investissement initial et donc vous ne devriez pas investir de l'argent que vous ne pouvez pas vous permettre de perdre. Vous devriez être conscient de tous les risques associés aux opérations de change, et demander conseil à un conseiller financier indépendant si vous avez des doutes. Ce logiciel est fourni tel quel et toute garantie expresse ou implicite, y compris, mais sans s'y limiter, les garanties implicites de qualité marchande et d'adéquation à un usage particulier, est exclue. En aucun cas, les régents ou contributeurs ne pourront être tenus responsables de dommages directs, indirects, accessoires, spéciaux, exemplaires ou consécutifs (y compris, mais sans s'y limiter, l'achat de biens ou de services de remplacement perte d'utilisation, de données ou de profits ou d'interruption d'activité ), Quelle qu'en soit la cause et quelle que soit la théorie de la responsabilité, contractuelle, stricte ou délictuelle (y compris la négligence ou autre) découlant de l'utilisation de ce logiciel, même si elle est avisée de la possibilité de tels dommages. Configuration d'un compte avec OANDA La première question qui vient à l'esprit est Pourquoi choisir OANDA. En bref, après un peu de Googling autour pour les courtiers forex qui avaient API, j'ai vu que OANDA avait récemment publié une API REST appropriée qui pourrait facilement être communiquée à partir de presque n'importe quelle langue d'une manière très simple. Après avoir lu la documentation de l'API de développeur. J'ai décidé de leur donner un essai, au moins avec un compte pratique. Pour être clair - je n'ai pas de relation préalable ou existante avec OANDA et je suis seulement de fournir cette recommandation basée sur mon expérience limitée en jouant avec leur API de pratique et quelques brèves utilisation (pour le téléchargement de données de marché) alors qu'il était auparavant dans un fonds. Si quelqu'un a rencontré tout autre forex courtiers qui ont également une API similairement similaire alors je serais heureux de leur donner un coup d'oeil ainsi. Avant d'utiliser l'API, il est nécessaire de s'inscrire à un compte pratique. Pour ce faire, dirigez-vous vers le lien d'inscription. Vous verrez l'écran suivant: Vous pourrez alors vous connecter avec vos identifiants de connexion. Veillez à sélectionner l'onglet fxTradePractice à partir de l'écran de connexion: une fois entré, vous devrez noter votre ID de compte. Il est répertorié sous l'en-tête noir de Mes fonds en regard de Primaire. Le mien est un nombre à 7 chiffres. En outre, vous devrez également générer un jeton API personnel. Pour ce faire, cliquez sur Gérer l'accès à l'API sous l'onglet Autres actions en bas à gauche: À ce stade, vous serez en mesure de générer un jeton API. Vous aurez besoin de la clé pour une utilisation ultérieure, alors assurez-vous de l'écrire aussi. Vous voudrez maintenant lancer l'application FXTrade Practice, qui nous permettra de voir les ordres exécutés et notre perte de gain (papier). Si vous utilisez un système Ubuntu, vous devez installer une version légèrement différente de Java. En particulier, la version Oracle de Java 8. Si vous ne faites pas cela, le simulateur pratique ne sera pas chargé à partir du navigateur. J'ai exécuté ces commandes sur mon système: Vous serez maintenant en mesure de lancer l'environnement commercial pratique. Revenez au tableau de bord d'OANDA et cliquez sur le lien Mise en évidence sur le lien vert mis en évidence. Une boîte de dialogue Java s'affiche pour vous demander si vous voulez l'exécuter. Cliquez sur Exécuter et l'outil fxTrade Practice sera chargé. Mine a manqué à un graphique de bougie de 15 minutes de EURUSD avec le panneau de devis sur la gauche: À ce stade, nous sommes prêts à commencer à concevoir et à coder notre système automatisé de forex contre l'API d'OANDA. Vue d'ensemble de l'architecture commerciale Si vous avez suivi la série de backtester événementielle pour les actions et les ETF que j'ai créés l'année dernière, vous serez conscient de la façon dont fonctionne un système de négociation événementielle. Pour ceux d'entre vous qui sont nouveaux dans le logiciel événementiel. Je suggère vivement de lire l'article afin de mieux comprendre comment ils fonctionnent. Essentiellement, l'ensemble du programme est exécuté dans une boucle infinte while qui ne se termine que lorsque le système de trading est coupé. Le mécanisme de communication central du programme est donné via une file d'attente qui contient des événements. La file d'attente est constamment interrogée pour vérifier les nouveaux événements. Une fois qu'un événement a été retiré du haut de la file d'attente, il doit être géré par un composant approprié du programme. Par conséquent, un flux de données de marché pourrait créer TickEvent s qui sont placés sur la file d'attente quand un nouveau prix de marché arrive. Un objet stratégie de génération de signal peut créer OrderEvent s qui doivent être envoyés à une maison de courtage. L'utilité d'un tel système est donnée par le fait qu'il n'a pas d'importance quel ordre ou types d'événements sont placés sur la file d'attente, car ils seront toujours correctement gérés par le bon composant au sein du programme. En outre, différentes parties du programme peuvent être exécutées dans des threads distincts. Ce qui signifie qu'il n'y a jamais d'attente pour un composant particulier avant de traiter un autre. Ceci est extrêmement utile dans les situations de trading algorithmique où les gestionnaires de flux de données de marché et les générateurs de signaux de stratégie ont des caractéristiques de performances très différentes. La boucle commerciale principale est donnée par le pseudo-code Python suivant: Comme nous l'avons indiqué ci-dessus, le code s'exécute dans une boucle infinie. Tout d'abord, la file d'attente est interrogée pour récupérer un nouvel événement. Si la file d'attente est vide, la boucle redémarre simplement après une courte période de sommeil connue sous le nom de battement cardiaque. Si un événement est détecté, son type est évalué et le module concerné (la stratégie ou le gestionnaire d'exécution) est appelé à gérer l'événement et éventuellement à générer de nouveaux qui retournent dans la file d'attente. Les éléments de base que nous allons créer pour notre système commercial sont les suivants: Streaming Price Handler - Cela permettra de garder une connexion longue durée ouverte aux serveurs OANDAs et d'envoyer des données tick (bidask) à travers la connexion pour tous les instruments qui ont été intéressés. Générateur de signaux de stratégie - Cela prendra une séquence de tics et les utilisera pour générer des ordres de trading qui seront exécutés par le gestionnaire d'exécution. Execution Handler - Prend un ensemble d'événements d'ordre puis les exécute aveuglément avec OANDA. Evénements - Ces objets constituent les messages transmis dans la file d'attente des événements. Nous ne demandons que deux pour cette implémentation, à savoir TickEvent et OrderEvent. Point d'entrée principal - Le point d'entrée principal comprend également la boucle commerciale qui interroge en continu la file d'attente de messages et distribue des messages au composant approprié. Cela est souvent appelé la boucle d'événements ou le gestionnaire d'événements. Nous allons maintenant discuter de la mise en œuvre du code en détail. Au bas de l'article est la liste complète de tous les fichiers de code source. Si vous les placez dans le même répertoire et exécutez python trading. py, vous commencerez à générer des ordres, en supposant que vous avez rempli votre identifiant de compte et votre jeton d'authentification de OANDA. Mise en œuvre de Python Il est de mauvaise pratique de stocker des mots de passe ou des clés d'authentification dans un codebase car vous ne pouvez jamais prédire qui sera éventuellement autorisé à accéder à un projet. Dans un système de production, nous stockerons ces informations d'identification en tant que variables d'environnement avec le système, puis nous les interrogerons chaque fois que le code sera redéployé. Cela garantit que les mots de passe et les jetons d'authentification ne sont jamais stockés dans un système de contrôle de version. Cependant, étant donné que nous sommes uniquement intéressés à la construction d'un système de négociation de jouets, et ne sont pas concernés par les détails de production dans cet article, nous allons plutôt séparer ces jetons d'authentification dans un fichier de paramètres. Dans le fichier de configuration settings. py suivant, nous avons un dictionnaire nommé ENVIRONMENTS qui stocke les points d'extrémité API pour l'API OANDA de flux de prix et l'API de négociation. Chaque sous-dictionnaire contient trois points d'extrémité séparés de l'API: real. Pratique et sandbox. L'API sandbox est purement pour le test du code et pour vérifier qu'il n'y a pas d'erreurs ou de bugs. Il n'a pas les garanties de disponibilité des API réelles ou de la pratique. La pratique API, en substance, fournit la capacité de commerce du papier. Autrement dit, il fournit toutes les fonctionnalités de l'API réelle sur un compte de simulation de pratique. L'API réelle est juste que - c'est la négociation en direct Si vous utilisez ce point de terminaison dans votre code, il sera le commerce contre votre solde de compte en direct. ÊTRE EXTREMEMENT ATTENTIF IMPORTANT: Lors de la négociation contre la pratique API rappelez-vous qu'un coût de transaction important, celui de l'impact sur le marché. N'est pas prise en considération. Étant donné qu'aucun métier n'est effectivement placé dans l'environnement, ce coût doit être comptabilisé d'une autre façon ailleurs dans un modèle d'impact sur le marché si vous souhaitez évaluer de façon réaliste les performances. Dans ce qui suit, nous utilisons le compte de pratique tel qu'indiqué par le paramètre DOMAIN. Nous avons besoin de deux dictionnaires distincts pour les domaines, chacun pour les composants d'API de streaming et de négociation. Enfin nous avons le ACCESSTOKEN et ACCOUNTID. Ive rempli les deux ci-dessous avec des ID factices afin que vous devrez utiliser votre propre, qui peut être consulté à partir de la page compte OANDA: L'étape suivante consiste à définir les événements que la file d'attente utilisera pour aider tous les composants individuels de communiquer. Nous avons besoin de deux: TickEvent et OrderEvent. Le premier stocke des informations sur les données du marché des instruments comme le (meilleur) bidask et le temps de négociation. Le second est utilisé pour transmettre des ordres au gestionnaire d'exécution et contient ainsi l'instrument, le nombre d'unités à commercer, le type d'ordre (marché ou limite) et le côté (achat et vente). Pour établir le code des événements à l'épreuve du futur, nous allons créer une classe de base appelée Événement et que tous les événements héritent de celle-ci. Le code est fourni ci-dessous dans events. py: La prochaine classe que nous allons créer traitera la stratégie commerciale. Dans cette démo, nous allons créer une stratégie plutôt absurde qui reçoit simplement toutes les tiques du marché et à chaque 5ème tick aléatoirement achète ou vend 10 000 unités d'EURUSD. Il est évident que c'est une stratégie ridicule Cependant, il est fantastique pour les tests car il est facile de coder et de comprendre. Dans les futures entrées de journal, nous remplacerons ceci par quelque chose de beaucoup plus excitant qui (espérons-le) transformera un profit. Le fichier strategy. py se trouve ci-dessous. Permet de travailler à travers elle et de voir ce qui se passe. Tout d'abord, nous importons la bibliothèque aléatoire et l'objet OrderEvent de events. py. Nous avons besoin de la bibliothèque aléatoire afin de sélectionner un ordre aléatoire d'achat ou de vente. Nous avons besoin de OrderEvent car c'est ainsi que l'objet stratégie enverra des ordres à la file d'attente des événements, qui sera ensuite exécutée par le gestionnaire d'exécution. La classe TestRandomStrategy prend simplement l'instrument (dans ce cas EURUSD), le nombre d'unités et la file d'attente des événements comme un ensemble de paramètres. Il crée alors un compteur de tiques qui est utilisé pour indiquer le nombre d'occurrences TickEvent qu'il a vues. La plupart des travaux se produisent dans la méthode calculatesignals qui prend simplement un événement, détermine s'il s'agit d'un TickEvent (sinon ignore) et incrémente le compteur de tics. Il vérifie ensuite si le compte est divisible par 5 et puis aléatoirement achète ou vend, avec un ordre de marché, le nombre spécifié d'unités. Ce n'est certainement pas la plus grande stratégie de négociation mondiale, mais elle sera plus que convenable pour nos tests d'API de courtage OANDA Le prochain composant est le gestionnaire d'exécution. Cette classe est chargée d'agir sur les instances OrderEvent et de faire des demandes au courtier (dans ce cas OANDA) d'une manière stupide. Autrement dit, il n'y a pas de gestion des risques ni de recouvrement de la construction du portefeuille. Le gestionnaire d'exécution exécutera tout simplement l'ordre qui lui a été donné. Nous devons transmettre toutes les informations d'authentification à la classe Execution, y compris le domaine (practice, real ou sandbox), le jeton d'accès et l'ID de compte. Nous créons alors une connexion sécurisée avec httplib. Un des Pythons construit dans les bibliothèques. La plupart du travail se produit dans executeorder. La méthode nécessite un événement comme paramètre. Il construit ensuite deux dictionnaires - les en-têtes et les params. Ces dictionnaires seront alors correctement codés (en partie par urllib, une autre bibliothèque Python) pour être envoyés comme une requête HTTP POST à l'API OANDAs. Nous passons les paramètres d'en-tête Content-Type et Authorization, qui incluent nos informations d'authentification. En outre, nous encodons les paramètres, y compris l'instrument (EURUSD), les unités, le type d'ordre et le côté (buysell). Enfin, nous effectuons la requête et sauvegardons la réponse: La composante la plus complexe du système de négociation est l'objet StreamingForexPrices, qui traite les mises à jour des prix du marché d'OANDA. Il existe deux méthodes: connecttostream et streamtoqueue. La première méthode utilise la bibliothèque de requêtes Python pour se connecter à une socket en continu avec les en-têtes et les paramètres appropriés. Les paramètres comprennent l'ID de compte et la liste des instruments nécessaires qui doivent être écoutés pour les mises à jour (dans ce cas, il s'agit uniquement d'EURUSD). Notez la ligne suivante: Cela indique à la connexion à être diffusée et donc maintenu ouvert de manière longue. La deuxième méthode, streamtoqueue. Tente de se connecter au flux. Si la réponse n'est pas réussie (c'est-à-dire que le code de réponse n'est pas HTTP 200), alors nous retournons simplement et quittons. Si elle réussit, nous essayons de charger le paquet JSON renvoyé dans un dictionnaire Python. Enfin, nous convertissons le dictionnaire Python avec l'instrument, bidask et timestamp dans un TickEvent qui est envoyé à la file d'attente des événements: Nous avons maintenant tous les principaux composants en place. La dernière étape est de conclure tout ce que nous avons écrit jusqu'à présent dans un programme principal. L'objectif de ce fichier, connu sous le nom de trading. py. Est de créer deux threads distincts. Dont l'un exécute le gestionnaire de tarification et l'autre qui exécute le gestionnaire de négociation. Pourquoi avons-nous besoin de deux fils distincts? Simplement, nous exécutons deux morceaux de code séparés, tous deux en cours d'exécution. Si nous devions créer un programme non threadé, alors la prise en streaming utilisée pour les mises à jour de prix ne reviendrait jamais jamais au chemin du code principal et donc nous n'effectuerions jamais réellement aucun trading. De la même façon, si nous exploitions la boucle commerciale (voir ci-dessous), nous ne retournerons jamais le chemin d'écoulement vers le socket de streaming de prix. Nous avons donc besoin de plusieurs threads, un pour chaque composant, afin qu'ils puissent être exécutés indépendamment. Ils se communiquent tous les deux via la file d'attente des événements. Examinons cela un peu plus. Nous créons deux threads séparés avec les lignes suivantes: Nous transmettons le nom de la fonction ou de la méthode à l'argument de mot clé cible, puis passons un iterable (comme une liste ou un tuple) à l'argument de mot-clé args, qui transmet alors ces arguments à la méthode effective . Finalement, nous commençons les deux threads avec les lignes suivantes: Ainsi, nous sommes en mesure d'exécuter deux segments de code, indépendamment, en boucle infinie, qui communiquent tous les deux à travers la file d'attente des événements. Notez que la bibliothèque de threading Python ne produit pas un véritable environnement multithread multi-core en raison de l'implémentation CPython de Python et du Global Interpreter Lock (GIL). Si vous souhaitez en savoir plus sur le multithreading sur Python, consultez cet article. Examinons le reste du code en détail. Tout d'abord, nous importons toutes les bibliothèques nécessaires, y compris la file d'attente. Le filetage et le temps. Nous importons ensuite tous les fichiers de code ci-dessus. Personnellement, je préfère mettre en majuscule tous les paramètres de configuration, ce qui est une habitude que j'ai pris de travailler avec Django Après que nous définissons la fonction commerciale, qui a été expliqué en Python-pseudocode ci-dessus. Une boucle infinie while est exécutée (alors que True:) qui interroge en continu depuis la file d'attente des événements et ne saute la boucle que si elle est trouvée vide. Si un événement est trouvé, il s'agit soit d'un TickEvent ou d'un OrderEvent, puis le composant approprié est appelé pour l'exécuter. Dans ce cas, il s'agit soit d'un gestionnaire de stratégie ou d'exécution. La boucle s'endort simplement pendant des secondes de pulsation (dans ce cas, 0,5 seconde) et continue. Enfin, nous définissons le point d'entrée principal du code dans la fonction principale. Il est bien commenté ci-dessous, mais je vais résumer ici. En essence, nous instancions la file d'attente des événements et définissons les unités d'instruments. Nous créons ensuite la classe StreamingForexPrices de flux de prix puis le gestionnaire d'exécution Execution. Les deux reçoivent les détails d'authentification nécessaires fournis par OANDA lors de la création d'un compte. Nous créons ensuite l'instance TestRandomStrategy. Finalement, nous définissons les deux threads puis les démarrons: Pour exécuter le code, il suffit de placer tous les fichiers dans le même répertoire et d'appeler au terminal: Notez que pour arrêter le code à ce stade, Processus Python. Via Ctrl-Z ou l'équivalent Ive n'a pas ajouté un fil supplémentaire à la poignée recherchant le sys. exit () qui serait nécessaire pour arrêter le code en toute sécurité. Un moyen possible d'arrêter le code sur une machine UbuntuLinux est de taper: Et puis transmettre la sortie de ce (un numéro de processus) dans la suivante: Où PROCESSID doit être remplacé par la sortie de pgrep. Notez que ce n'est pas particulièrement bonne pratique Dans les articles suivants, nous allons créer un mécanisme de stopstart plus sophistiqué qui fait usage de la supervision de processus Ubuntus afin d'avoir le système de négociation en cours d'exécution 247. La sortie après 30 secondes environ, selon le moment de Jour par rapport aux principales heures de négociation pour EURUSD, pour le code ci-dessus, est donné ci-dessous: Les cinq premières lignes montrent les données de la marque JSON retournées par OANDA avec les prix bidask. Par la suite, vous pouvez voir la sortie Exécuter l'ordre ainsi que la réponse JSON retournée par OANDA confirmant l'ouverture d'un commerce d'achat pour 10 000 unités d'EURUSD et le prix auquel il a été atteint. Cela continuera à fonctionner indéfiniment jusqu'à ce que vous tuez le programme avec une commande Ctrl-Z ou similaire. Whats Next Dans les articles suivants, nous allons effectuer certaines améliorations nécessaires, y compris: Stratégies réelles - Stratégies de forex appropriées qui génèrent des signaux rentables. Infrastructure de production - implémentation de serveurs distants et 247 systèmes de trading surveillés, avec capacité stopstart. Gestion des portefeuilles et des risques - Répartition des portefeuilles et des risques pour tous les ordres proposés de la stratégie. Stratégies multiples - Construire un portefeuille de stratégies qui intègrent dans la gestion des risques overlay Comme avec les actions backtestter événementiel, nous avons également besoin de créer un module de backtesting forex. Cela nous permettra d'effectuer des recherches rapides et de faciliter le déploiement de stratégies. Settings. py (n'oubliez pas de changer ACCOUNTID et ACCESSTOKEN):
No comments:
Post a Comment