Forex Technology Amp Cloud Providers Besoin d'implémenter des tarifs et des informations de compte et la possibilité d'envoyer ou de modifier des commandes Pour une utilisation plus technique de l'API, nous offrons des options pour un niveau de technologie supérieur. Nos API pour les fournisseurs de technologie et de cloud computing vous offrent une architecture à faible bande passante, sans aucun minimum de compte, une gamme complète d'ordres de négociation et un accès aux données historiques sur les forex et les CFD. Forexconnect API ForexConnect est notre API8212 la plus flexible utilisée par les plates-formes NinjaTrader et Mirror Trader. ForexConnect est compatible avec. Net, Linux, Mac, iOS et Android. Code sur 30 fonctions et fonctionnalités différentes Utiliser des structures de messagerie de bas niveau ou des structures de table avec des champs calculés Connectez-vous à MATLAB pour exécuter une analyse avancée sur les données de prix Débuter Déjà un compte FXCM Télécharger Forexconnect SDK Un compte FXCM, Un IDE ou éditeur de texte qui exécute LUA (c.-à-d. Visual Studio) Besoin d'informations supplémentaires Visitez ForexConnect Wiki pour lire nos guides pour Java. NET et C et voir des exemples d'extraits de code complexes pour des actions comme les commandes par lots et les groupes de contingence. Vous cherchez à créer une application client ou serveur? Java est une API évolutive, légère et robuste basée sur la spécification FIX pour le forex et personnalisée pour le commerce avec FXCM. Compatible avec n'importe quel système d'exploitation compatible avec Java Léger et basé sur la messagerie FIX Capable d'obtenir des transactions et des taux historiques Débuter Déjà un compte FXCM Télécharger Java SDK Un compte FXCM, y compris le compte free practice 8212nombre minimum nécessaire Un IDE (ie Netbeans, Eclipse) Voir l'exemple de code et voir la documentation sur FXCMs API Java GitHub page. Comment commencer à utiliser ForexConnect. NET API (Win32Win64) Cet article explique comment commencer à utiliser ForexConnect. NET API. Ici vous pouvez trouver les principes de base de l'API expliqués et des instructions pas à pas sur la création d'un échantillon de travail d'une application de trading simple. Plate-forme . Microsoft. NET Framework 2.0 et versions ultérieures sur MS Windows 32 bits version 64 bits Langue. C. NET IDE. Microsoft Visual Studio 2005, 2008, 2010 L'utilisation de la bibliothèque ForexConnect. NET avec le framework d'application Microsoft Silverlight n'est pas prise en charge. La bibliothèque ForexConnect. NET fonctionnant en mode Mono n'est pas prise en charge. Obtenir et installer les bibliothèques API ForexConnect Téléchargez la dernière version de l'API ForexConnect: Si vous avez une version 32 bits de Microsoft Windows, téléchargez la version 32 bits de l'API ForexConnect. Si vous disposez d'une version 64 bits de Microsoft Windows, téléchargez la version 64 bits de l'API ForexConnect. Pour plus d'informations sur la version de votre système, reportez-vous à la boîte de dialogue Propriétés système. Notez que si votre système est Windows XP et que vous ne voyez pas l'édition x64 dans la boîte de dialogue Propriétés système, vous exécutez une version 32 bits de Windows XP. Démarrez le programme d'installation puis suivez les instructions de l'assistant de configuration. De plus, nous supposerons que l'API ForexConnect est installée dans C: Program FilesCandleworksForexConnectAPI. Utilisation de l'API ForexConnect avec Microsoft Visual Studio Vous devez effectuer les modifications suivantes dans votre projet C: 1. Configurez l'événement post-build de votre projet pour copier les bibliothèques API ForexConnect et Support des fichiers dans le dossier où votre programme est construit: Dans le projet Propriétés rarr Build Events rarr Ligne de commande Post-Build event, ajoutez le texte suivant: copy C: Program FilesCandleworksForexConnectAPIbin. (TargetDir) 2. Ajoutez une référence à l'assembly. NET fxcore2.dll à votre projet. Si vous utilisez. NET 4.0, puis utilisez l'assemblage. NET fxcore2.dll approprié qui peut être trouvé dans le dossier C: Program FilesCandleworksForexConnectAPIbinnetdotnet40. Si vous utilisez. NET 2.0, utilisez l'assembly fxcore2.dll du dossier C: Program FilesCandleworksForexConnectAPIbinnetdotnet20. 3. Ajoutez l'espace de noms fxcore2 à votre code: Distribution Vous devez distribuer votre programme avec toutes les bibliothèques binaires et les fichiers de support de C: Program FilesCandleworksForexConnectAPIbin. Les bibliothèques ForexConnect et les fichiers de support doivent être situés dans le dossier où votre application est installée. Notez que l'assembly fxcore2.dll doit être placé dans le dossier où votre application est installée. Caractéristiques de l'API ForexConnect. NET Architecture dirigée par événement Toutes les API utilisées par ForexConnect sont asynchrones, vous devrez donc implémenter une architecture événementielle dans votre code. Une architecture événementielle est un modèle d'architecture logicielle qui gère le comportement de la production, la détection et la consommation des événements ainsi que les réponses qu'ils évoquent. Dans ce contexte, un événement doit être traité comme une valeur ou un message qui peut être identifié dans un flux continu d'entrées surveillées, telles que des conditions ou des signaux spécifiques ou autre chose. Les architectures événementielles sont généralement constituées de producteurs d'événements et de consommateurs d'événements. Les consommateurs d'événements s'abonnent à un gestionnaire d'événements, et les producteurs d'événements publient à ce gestionnaire. Lorsque le gestionnaire reçoit un événement d'un producteur, il envoie cet événement à tous les consommateurs enregistrés ou stocke l'événement pour un renvoi ultérieur. Un gestionnaire d'événements est une routine de rappel qui fonctionne de façon asynchrone et gère les entrées reçues dans un programme (événements). Dans ce contexte, un événement est un élément significatif des informations d'application d'un cadre de développement sous-jacent, habituellement à partir d'une boîte à outils d'interface utilisateur graphique (GUI) ou d'une sorte de routine d'entrée. Du côté GUI, par exemple, les événements incluent les touches, l'activité de la souris, les sélections d'action ou les expirations de minuterie. Du côté des entrées, les événements comprennent l'ouverture ou la fermeture de fichiers et de flux de données, la lecture de données et ainsi de suite. La gestion des événements est la réception d'un événement dans un gestionnaire d'événements d'un producteur d'événements et des processus ultérieurs. Les processus impliqués dans la gestion des événements comprennent: Identifier où un événement doit être transféré Faire l'avant Réception de l'événement renvoyé Prendre une sorte d'action appropriée en réponse, comme l'écriture dans un journal, l'envoi d'une routine d'erreur ou de récupération ou l'envoi d'un message L'événement Le gestionnaire peut finalement transmettre l'événement à un consommateur événement. L'avantage des architectures événementielles est qu'elles permettent à des groupes de consommateurs et de producteurs, arbitrairement importants, ainsi qu'à un certain nombre de gestionnaires, d'échanger des informations sur le statut et les réponses. Ils sont également généralement assez réactifs face aux événements tels qu'ils se produisent, et fonctionnent bien dans des environnements de communication imprévisibles et asynchrones. L'API ForexConnect. NET dispose déjà d'implémentations d'interfaces IO2GSessionStatus et IO2GResponseListener pour recevoir des notifications de changements de statut de session et de réception de données. Vous pouvez donc utiliser les événements. NET appropriés de l'objet O2GSession au lieu de les implémenter vous-même. Cependant, vous pouvez les mettre en œuvre et les utiliser pour recevoir des notifications de l'objet session après l'abonnement si cela vous convient le mieux. Notez que tous les gestionnaires d'événements que vous avez implémentés pour les événements O2GSession sont appelés dans un thread distinct. Vous devez donc garder à l'esprit ce qui suit: Vous devez toujours fournir un accès thread-safe à toutes les données stockées dans votre application qui est mis à jour à partir de vos gestionnaires d'événements. Vous n'avez pas besoin de synchroniser les appels des gestionnaires d'événements et ne pas avoir besoin de penser à réintroduire le gestionnaire d'événements car tous les événements de l'API sont déjà synchronisés dans un thread. Par conséquent, les gestionnaires d'événements sont appelés dans l'ordre. Vous devez gérer chaque événement aussi rapidement que possible car ils sont synchronisés dans le thread de gestionnaires par la bibliothèque ForexConnect. Vous pouvez exécuter vos propres threads pour accélérer la gestion des événements. Gestion de la durée de vie des objets Vous n'avez pas besoin d'une gestion supplémentaire des ressources pour les objets obtenus à l'aide de l'API. NET de ForexConnect. Toutefois, il est recommandé d'appeler la méthode Dispose () pour tous les objets obtenus qui l'implémentent. Ces appels vous permettent de libérer les ressources système inutilisées plus efficacement. Vous pouvez utiliser l'instruction using à cet effet: Exemple d'application à l'aide de l'API. NET ForexConnect Cet exemple est une application console simple qui utilise l'API ForexConnect. NET. Cette application présente les caractéristiques suivantes: Connexion à un serveur de commerce à l'aide des informations d'identification prédéfinies Récupération des prix pour EURUSD Récupération des comptes pour l'utilisateur Création d'une commande de marché ouvert pour EURUSD lorsque vous saisissez b (achat) ou s (vendez) Récupération des commandes Table et réception des notifications de mises à jour dans ce tableau Fin de l'exécution de l'application lorsque vous entrez q (quit) Pour simplifier l'exemple, la logique entière de l'application est implémentée dans une classe MyApp. Vous pouvez télécharger le code source complet de l'exemple: File: ForexConnect Sample Net. zip Connexion avec Trade Server L'objet principal de l'API ForexConnect. NET est un objet de session O2GSession dans l'espace de noms fxcore2. Cet objet représente une session de connexion d'utilisateurs et peut être créé à l'aide d'une méthode statique de la classe O2GTransport: L'objet O2GSession informe les abonnés de tous les changements de l'état de connexion par les événements suivants: ou via l'interface de rappel IO2GSessionStatus. Les notifications de réception de données peuvent être traitées en utilisant les événements O2GSession suivants: ou via l'interface de rappel IO2GResponseListener. Pour vous connecter à un serveur de commerce à l'aide de l'API ForexConnect. NET, procédez comme suit: Créez un objet session. Implémentez des gestionnaires pour les événements objet de session afin de recevoir des notifications des changements d'état de la session. Appelez login () pour la session et attendez que le processus de connexion soit terminé. Traiter les notifications reçues des changements d'état de connexion dans onSessionStatusChanged pour gérer l'état du processus de connexion. Voir le code source suivant pour les détails de la mise en œuvre: Notez que nous attendons une notification de la fin de connexion parce que l'appel ltcodegtlogin () est asynchrone. Pour cela, nous utilisons un signal de synchronisation spécial. Lorsque onSessionStatusChanged est appelé, le signal est défini pour reprendre l'exécution du thread après mSyncSessionEvent. WaitOne (5000) dans la méthode run (). Connexion avec le choix de la session de négociation Lorsqu'un compte d'utilisateur comporte plusieurs sessions de négociation, la connexion est un processus en plusieurs étapes: 1. Appelez la méthode login () de l'objet de session avec un nom d'utilisateur, un mot de passe, une URL de serveur et un nom de base de données spécifiés. 2. Traitez l'état reçu TradingSessionRequested dans le gestionnaire d'événements onSessionStatusChanged. Voici les étapes communes pour traiter l'état TradingSessionRequested: 2.1. Récupérez la liste de négociation à partir de l'objet O2GSession à l'aide de la méthode getTradingSessionDescriptors (). 2.2. Fournir un choix de la séance de négociation pour l'utilisateur. 2.3. Demandez un NIP secret à l'utilisateur. 2.4. Définissez l'ID de session de négociation et le code PIN spécifiés à l'aide de setTradingSession (). Afficher la source Gestion des prix La gestion des prix comprend les étapes suivantes: Vérifiez si les données de prix sont automatiquement demandées lors de la connexion. Si oui, allez à l'étape 2. Si non, envoyez une demande pour les prix courants pour tous les instruments. Traitez la réponse. Gérer la mise à jour des prix pour un instrument donné. Pour recevoir des notifications de réponses de requête ou des modifications d'état d'objets serveur, vous devez implémenter et souscrire des gestionnaires d'événements aux événements appropriés de l'instance O2G2Session. Pour cela, modifiez la classe MyApp pour gérer ces événements: Demande de prix en vigueur Selon les paramètres du serveur de commerce, les prix actuels de tous les instruments peuvent être automatiquement reçus pendant le processus de connexion ou vous pouvez demander explicitement ces données au serveur de commerce . Pour obtenir les prix actuels, procédez comme suit: 1. Vérifiez s'il existe des offres de prix reçues lors de la connexion en utilisant la méthode isTableLoadedByDefault () de l'instance O2GLoginRules. 2. S'ils sont chargés, obtenez l'objet de réponse des offres déjà reçu en utilisant la méthode getTableRefeshResponse (Offres) de l'instance O2GLoginRules. Cet objet de réponse peut être traité pour extraire des données d'offres. Pour obtenir un lecteur d'offres pour la lecture des données de réponse, procédez comme suit: Obtenez le lecteur de réponses en usine en utilisant la méthode getResponseReaderFactory () de l'instance d'objet de session. Créez un lecteur à l'aide de la méthode createOffersTableReader () de l'instance O2GResponseReaderFactory. 3. Si les offres n'ont pas été reçues lors de la connexion, envoyez une requête pour la table des offres explicitement en utilisant la méthode sendRequest () de l'objet session. Pour créer la requête appropriée, procédez comme suit: Obtenez l'usine de requête en utilisant la méthode getRequestFactory () de l'objet session. Créer une requête en utilisant la méthode createRefreshTableRequest () de l'instance O2GRequestFactory. Pour demander les prix actuels, ajoutez le code source suivant à la méthode run () de notre échantillon après le traitement de connexion: Dans l'exemple, nous attendons la réception de la réponse de requête en utilisant un signal de synchronisation. Nous prenons donc le temps de commencer à surveiller l'évolution du prix de l'EURUSD à partir de. Bien sûr, nous devrions définir ce signal lorsque les données de prix sont reçues. Dans notre exemple, une astuce est utilisée pour éviter la duplication de code. Comme vous le verrez plus loin, le traitement des réponses est le même lorsque les données d'offre sont reçues de l'objet O2GLoginRules et lorsque nous récupérons explicitement les données des offres. Donc pour traiter l'objet réponse reçu de O2GLoginRules. Vous pouvez appeler directement le gestionnaire d'événements implémenté de l'événement RequestCompleted de l'objet session. Recevoir des données de prix Comme un appel de sendRequest () est asynchrone, pour recevoir une réponse avec des données de prix, vous devez implémenter le gestionnaire d'événements pour l'événement RequestCompleted de l'objet de session. Comme ce gestionnaire d'événements est utilisé pour recevoir des notifications de réponses de toutes les requêtes, vous devez effectuer les opérations suivantes: Vérifiez si le type de réponse est GetOffers. Obtenez le lecteur de réponse O2GOffersTableResponseReader en utilisant O2GResponseReaderFactory pour obtenir des données de prix de l'objet de réponse. Traiter toutes les lignes dans le tableau Offres en utilisant le lecteur. Vous devez fournir un accès thread-safe aux offres stockées dans votre application. Consultez le code source ci-dessous pour un exemple de gestion de la réception d'une réponse. Pour stocker les prix actuels pour EURUSD, les variables appropriées sont définies et l'accès thread-safe à eux est mis en œuvre. Un signal de synchronisation est défini lorsque la réception des données d'offre est terminée. Cette astuce permet d'attendre de recevoir les prix actuels dans le fil principal après l'envoi de la demande. Notre exemple d'application gère l'événement RequestComplete et extrait le prix d'enchère et de demande EURUSD. Les prix de demande et d'offre reçus sont stockés dans les variables de niveau mEURUSDBid et mEURUSDAsk, des méthodes thread-safe pour lire et modifier ces variables sont implémentées. Mises à jour des offres de réception Notez que la notification est reçue dans un thread distinct, vous devez donc utiliser la lecture et la mise à jour thread-safe des variables stockant les données reçues. Ajoutez le code suivant à MyApp pour gérer la mise à jour des prix EURUSD: Le traitement de la mise à jour de la table des offres comprend les étapes suivantes: 1. Obtenez O2GResponseReaderFactory à partir de l'objet session. 2. Obtenez un lecteur O2GTablesUpdatesReader en usine via la méthode createTablesUpdatesReader. 3. Créez une boucle pour énumérer chaque élément de la liste des mises à jour car les données reçues peuvent contenir des mises à jour pour tout type d'objet, pas seulement pour la table Offres. Vous devez donc vérifier chaque élément de la liste des mises à jour pour le type de table et le type d'opération de mise à jour requis. 4. Pour traiter la modification, utilisez la méthode getOfferRow () du lecteur pour récupérer un objet du type O2GOfferRow: Notez que la notification est reçue dans un thread distinct, donc vous devez utiliser la lecture thread-safe et la mise à jour des variables qui Stocker les données reçues. Ajoutez le code suivant à MyClass pour gérer la mise à jour des cours EURUSD: Dans notre exemple, nous traitons uniquement les mises à jour des prix EURUSD et stockons leurs dernières valeurs dans les variables mEURUSDBid et mEURUSDAsk. Nous avons implémenté des méthodes thread-safe pour accéder à ces variables. Création de commande Pour créer une commande, procédez comme suit: 1. Assurez-vous d'avoir au moins un ID de compte d'utilisateur et un ID d'offre requis pour créer une commande. Sinon, demandez-les d'abord. 2. Utilisez une occurrence O2GRequestFactory pour créer O2GValueMap pour spécifier les paramètres de commande. 3. Remplissez le valoremap avec les paramètres nécessaires pour créer un type particulier d'ordre Veuillez consulter le SDK de ForexConnectAPI pour plus de détails sur les paramètres des commandes pour créer des ordres. 4. Créez un objet O2GRequest à l'aide de O2GRequestFactory pour le lemme-valeur rempli. 5. Lancez l'exécution de la requête. 6. Recevoir la réponse de la requête pour s'assurer que l'exécution de la demande est réussie. Comme nous avons besoin d'un ID de compte pour notre échantillon, nous récupérons d'abord la table Comptes. La récupération des données de la table Comptes est similaire à la récupération des données de la table Offres. Pour simplifier l'exemple, obtenez le premier compte à partir de la liste des comptes d'utilisateur et stockez-le dans une variable de niveau de classe pour une utilisation ultérieure. Nous attendons la réponse pour éviter la création d'ordre avant que l'identifiant de compte soit récupéré. La meilleure pratique est l'encapsulation de la logique de création d'ordre dans une méthode distincte de la classe MyApp. Vous devez également gérer la réponse à la demande de création d'ordre dans le gestionnaire d'événements onRequestCompleted pour vous assurer que l'ordre est créé. Reportez-vous au code source suivant qui crée une commande d'achat ou de vente pour l'instrument EURUSD avec un montant de 100 Ko: Notez qu'il existe des classes d'aide utiles dans l'espace de noms fxcore2.Constants pour remplir l'objet valueMap avec les paramètres d'ordre: Réponse de processus d'une requête particulière uniquement: Récupération de la table des commandes Toutes les informations sur les états des commandes existantes peuvent être récupérées à partir de la table Commandes. L'API ForexConnect permet de récupérer la table Commandes uniquement pour un compte spécifié. Vous devez donc effectuer les opérations suivantes: Récupérer la table Comptes. Attendez que les données des comptes soient reçues. Récupérez la table Commandes pour chaque compte reçu en utilisant createRefreshTableRequestByAccount () de l'instance O2GRequestFactory. Gérer la réponse de demande dans un gestionnaire d'événements de l'événement RequestComplete. Gérer la mise à jour de la table Orders dans un gestionnaire d'événements de l'événement TablesUpdates. Pour simplifier notre échantillon, nous prenons l'ID de compte stocké et l'utilisons dans l'exemple de la récupération de la table Orders. Notez que si vous stockez des données de commandes, vous devez fournir un accès thread-safe à ces données et une gestion correcte des compteurs de référence pour les objets stockés. Dans notre exemple, les données des commandes ne sont pas stockées, donc la synchronisation n'est pas implémentée. Finalisation de l'application. Déconnexion Comme vous pouvez le voir, la méthode stop () de notre classe MyApp libère toutes les ressources système utilisées et désinscrit tous les gestionnaires d'événements des événements de session pour cesser de recevoir des notifications. Vous devez appeler logout () avant la fin de votre application. Aussi, vous devez appeler la méthode Dispose () de l'instance de session avant que tmain () renvoie le contrôle. Gestion des erreurs de demande Lorsqu'une erreur se produit lors de l'exécution asynchrone d'une requête, le gestionnaire d'événements de l'événement RequestFailed est invoqué. Dans notre exemple, nous gérons l'erreur en mettant la description de l'erreur dans la sortie de la console et en arrêtant l'application: Lancement de l'échantillon A présent, notre échantillon peut se connecter, récupérer les changements de prix EURUSD, afficher des informations sur les commandes existantes et une méthode de création Un ordre de marché ouvert. Pour lancer l'échantillon sur cette étape, nous devons mettre en œuvre l'utilisation de notre classe MyApp. Pour cela, procédez comme suit: Dans la fonction principale de notre application console, créez une instance de notre classe MyApp. Appelez la méthode run () de l'instance pour vous connecter au serveur de commerce et commencer à recevoir les mises à jour d'EURUSD. Fournissez la lecture des entrées des utilisateurs pour exécuter les commandes: lorsque b est entré, créez un ordre du marché d'achat quand s est entré, créez un ordre du marché de vente quand q est entrée, quittez l'application. La méthode run () de l'échantillon prépare l'application à la négociation. Après la préparation est faite, il retourne vrai si tout est bon. Comme vous pouvez le voir, cette méthode appelle toutes les fonctions API asynchrone mais attend leurs réponses en utilisant des objets de synchronisation spéciaux. Notez que ce n'est pas une méthode efficace d'utiliser ForexConnectAPI, mais il est facile à comprendre. N'oubliez pas de spécifier un nom d'utilisateur et un mot de passe valides pour un appel de la méthode login (). Vous pouvez maintenant créer et exécuter l'exemple. Si vous avez un problème avec la construction de l'échantillon, veuillez le comparer avec le code source complet de l'exemple: File: ForexConnect Sample Net. zip. Whats Next Pour des informations détaillées sur toutes les classes API et leurs méthodes, consultez ForexConnectAPI SDK. Cet article dans Other LanguagesHow à inclure ForexConnect API sur Win32 L'article explique comment utiliser ForexConnect API en C sur Win32. Pour utiliser l'API ForexConnect dans votre application C, vous devez: Placer votre programme d'application dans le même répertoire où se trouvent les fichiers dll supportant (généralement le dossier bin contenant expat. dll, fxmsg. dll, gstools2.dll, etc.) Dossier C: Program FilesCandleworksForexConnectAPIbin contient ces bibliothèques, la ligne de commande d'événement post-construit peut ressembler à ceci: Alternativement, vous pouvez construire votre application dans le répertoire contenant les DLL de support. Ajoutez le sous-dossier include du répertoire dans lequel ForexConnect API est installé pour inclure des répertoires supplémentaires du projet. Donc, si ForexConnect API est installé dans C: Program FilesCandleworksForexConnectAPI. Ajoutez le répertoire C: Program FilesCandleworksForexConnectAPIinclude comme répertoire d'inclusion supplémentaire. Pour déposer stdafx. h. Ajoutez le sous-répertoire lib du répertoire dans lequel l'API ForexConnect est installée dans les répertoires de bibliothèque supplémentaires du projet. Donc, si ForexConnect API est installé dans C: Program FilesCandleworksForexConnectAPI. Ajoutez le répertoire C: Program FilesCandleworksForexConnectAPIlib comme répertoire de bibliothèque supplémentaire. Ajoutez ForexConnect. lib comme dépendance supplémentaire pour l'entrée de l'éditeur de liens. Remarque: les interfaces API ForexConnect utilisent des chaînes ASCII, de sorte que le jeu de caractères des propriétés de configuration sera quotNot setquot.
No comments:
Post a Comment