The document provides an overview of the ForexConnect API, including what it can do, how to get started with it, and important concepts to understand. The API allows developers to build custom applications that can access live market data, place orders, manage accounts, and more. It supports multiple platforms and programming languages. Demo trading accounts are available to test applications being developed with the API.
The document provides an overview of the ForexConnect API, including what it can do, how to get started with it, and important concepts to understand. The API allows developers to build custom applications that can access live market data, place orders, manage accounts, and more. It supports multiple platforms and programming languages. Demo trading accounts are available to test applications being developed with the API.
The ForexConnect API offers all the same functionality of the powerful FXCM Trading Station. This includes all of the available order entry types, managing your positions, downloading historical instrument rates, getting account reports, and more.
ForexConnect makes it possible to develop rich applications that extend the functionality of the Trading Station. For example, you could develop custom logic that applies multiple stops and limits to one position, closes all positions when the profit on all trades met a certain level, or send email alerts when events take place such as new orders. ForexConnect has access to all of the information and functionality that the Trading Station has and it allows you to develop an unlimited number of custom features which can then be used by yourself or your clients. Getting the API
ForexConnect is currently supported on multiple platforms which include both 32 and 64-bit architectures on Windows, MacOS, and Linux. The API is also supported on the popular mobile platforms iOS and Android. In order to download the API, please visit the FXProgrammers forum found here: http://forexforums.dailyfx.com/forexconnect/ Getting API Updates
In order to receive updates whenever there is a new API build, you must subscribe to updates on the FXProgrammers forum. Please visit the following link to subscribe:
Every ForexConnect application should provide access to both UK and US demo registration forms. Both Standard and Mobile forms are available, depending upon which is relevant for your application. Use the following URLs when building this functionality into your application.
Note also that these demo accounts can be used when developing. Whether you are testing code that creates some custom order functionality or publishing rates to a GUI, you need an account login to do this. This is where demo trading accounts are very helpful. US Demo Forms
Mobile: https://secure4.fxcorporate.com/fxtr/demo/?ib=us_api_usi_contest Standard: https://secure4.fxcorporate.com/fxtr/demo/?ib=us_api_usi_contest&layout=FXCM2 UK Demo Forms
*Note that the FXCM UK and FXCM US demos contain a slightly different functionality set. This difference is covered in the Important Concepts section
Code Examples
The ForexConnect API download comes with many examples. These examples are written in C++, C#, Java and VB. In the ForexConnect install directory, you will find them at /ForexConnectAPI/samples/. Below are some of the examples with a description of what they demonstrate.
Example Name Description Check Permissions Demonstrates how to determine what permissions are available to an account; e.g., what order types Close All Positions Closes all positions for a given instrument Close Position Closes an individual position Create ELS Creates an entry order with a stop and limit attached Create Entry Order Creates an entry order to either open or close positions Create OCO Creates a set of entry orders that are linked so that when one is triggered, the other is cancelled Create OTO Creates a set of entry orders that are linked so that when one is triggered, the other becomes active Get Price History Obtains historical prices Get Offers Obtains live, streaming quotes Get Report URL Gets the account trading statement Login Demonstrates how to login Login to Several Databases Pin Demonstrates how to login if a PIN is required and how to login with credentials that connect to more than one server Net Stop Limit Places a net stop and net limit (relevant for FXCM US accounts) Open Position Opens a position Important Concepts
The following is a list of concepts which you should ideally be familiar with before architecting any software which uses the API. US versus UK Accounts
US and UK account types do not share the same set of functionality. The following are three related areas where they differ. Hedging
UK accounts are by default configured to support hedging. This is the ability to have both a buy trade and a sell trade at the same time, for some given instrument. For example, assume that while connected to an account that supports hedging you attempt to create both a buy trade and a sell trade on the EUR/USD instrument. The result of doing this would be two open trades, one buy and one sell.
US accounts do not support hedging. Therefore, buy trades and sell trades in the same instrument cancel each other out. For example, assume you are connected to a US account that is currently holding an open buy trade on the EUR/USD instrument. If you were to create a sell trade on the EUR/USD instrument, it would close all or part of the existing buy trade (depending upon how the order sizes may differ).
Checking for Hedging Status
By default US accounts will not support hedging due to regulatory reasons. UK accounts by default support it but FXCM does allow these clients to disable the feature. Therefore, it is important to check whether or not the account you are connected has hedging enabled or disabled.
The account hedging status can be determined using the O2GAccountRow object. After requesting the O2GAccountsTable, inspect each O2GAccountRow for the O2GAccountRow.MaintenanceType property. If this value is set to Y, then hedging is enabled. If it is set to N, then hedging is not enabled. FIFO (First-In, First-Out)
As US accounts do not support hedging, all buy and sell trades in one instrument have the effect of cancelling each other out. This takes place in a First-In, First-Out order. For example, assume you create three buy trades on AUD/USD in the amount of 10,000. In total you have a buy trade of 30,000 on the AUD/USD instrument. Now assume you create an order to sell 10,000 AUD/USD. This 10,000 sell order is applied to the first 10,000 AUD/USD buy trade that you created. You cannot selectively choose which of the three 10,000 buy trades to apply it to.
It is important to note that this FIFO limitation only applies to multiple trades in the same instrument. That is, if you have two open trades and each are on different instruments, you can close those in any order that you like. Stop and Limit Orders
As mentioned above, US accounts must observe FIFO. With this in mind, they cannot place stop and limit orders on individual trades. For US accounts, Stop-Entry (SE) and Limit-Entry (LE) orders simply cancel out existing trades in the same instrument, in the order that they were opened. Getting Historical Data
Historical data requests are limited to 300 data points per request. This is a feature built in to our charting servers to ensure timely responses for all of FXCMs customers. If you want to get more than 300 points of data you will need to traverse through your required timeframe, making separate requests.
The ForexConnect download comes with an example that creates a historical request that requires more than 300 data points. This example project is called Get Price History. ForexConnect Table Orientation
The ForexConnect API is table oriented. The state of an account or instrument can be obtained from the various tables within the API. These tables can be monitored for updates throughout an API session. Below is a list of the API tables you can use:
Table Name Table Description Accounts Contains information such as account equity, balance, and margin figures Orders Holds information about existing orders that have not yet been executed or cancelled Offers Contains updated information about instruments such as current, high, and low prices Trades Holds information about existing trades such as open times and open prices Closed Trades Contains information about trades closed during the current trading day Summary Contains a summary of open trades which includes information such as average open prices and P/L Messages Maintains a list of messages sent by FXCM
Capturing Updates to the API Tables
There are two ways that you may capture updates to the API tables. You should be aware of each and the advantages/disadvantages of choosing one. O2GTableManager
The O2GTableManager object is an in-memory representation of the API tables. The table manager allows you to subscribe to table change events such as updates, adding rows, or removing rows. It is important to note that the SummaryTable is only accessible through the table manager. Table Manager Advantages o Access to calculated fields such as PipCost or P/L o You would otherwise have to calculate these values in your application o Access to the SummaryTable o Selectively subscribe to table update events such as updates, adding rows, or removing rows
Table Manager Disadvantages o The calculated fields present a decrease in performance o With each update to the table objects, fields must be recalculated
TablesUpdates Response
If you are not using the table manager, you can capture updates through the use of a class that implements the IO2GResponseListener interface. The IO2GResponseListener.onTablesUpdates() method will capture the TablesUpdates responses. These response messages are the table updates.
The main advantage to using a response listener class as opposed to table manager is performance. Table manager presents a performance decrease because it is constantly recalculating fields. Unless you deem the table manager necessary, it may be better to use this method. IO2GResponseListener.onTablesUpdates( ) Example
Price Updates in XML Format
In addition to the ForexConnect API, you can also access price updates in XML format at the following URL: http://rates.fxcm.com/RatesXML3
This can be used to receive price updates without maintaining the ForexConnect session. You may find multiple applications for it. This file is updated every 30 seconds. RSS News Feeds
RSS news feeds from DailyFX are available at http://www.dailyfx.com/rss/. DailyFX is the news and research arm of FXCM. You can build some or all of the news feeds into an application for display.
Some of the more popular RSS feeds are included under Forex Market News and Alerts. Where to Get Help
Usually the fastest way to answer a question about the API is to refer to the code examples and the FXProgrammers forum. A simple keyword search on the FXProgrammers ForexConnect forum will often show that your question has already been asked and a helpful answer should be available.
In addition to code examples and the forum, you can also contact FXCM API support. They can be reached by emailing [email protected].
Finance Psychology: How To Begin Thinking Like A Professional Trader (This Workbook About Behavioral Finance Is All You Need To Be Successful In Trading)
Finance Psychology: How To Begin Thinking Like A Professional Trader (This Workbook About Behavioral Finance Is All You Need To Be Successful In Trading)