{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Quick Start" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Disclaimer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "FXCM Group, LLC and each of its affiliates and subsidiaries are herein referred to as, \"FXCM\".\n", "\n", "Trading forex/CFDs on margin carries a high level of risk and may not be suitable for all investors as you could sustain losses in excess of deposits. Leverage can work against you. Due to the certain restrictions imposed by the local law and regulation, German resident retail client(s) could sustain a total loss of deposited funds but are not subject to subsequent payment obligations beyond the deposited funds. Be aware and fully understand all risks associated with the market and trading. Prior to trading any products, carefully consider your financial situation and experience level. Any opinions, news, research, analyses, prices, or other information is provided as general market commentary, and does not constitute investment advice. FXCM will not accept liability for any loss or damage, including without limitation to, any loss of profit, which may arise directly or indirectly from use of or reliance on such information." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "FXCM provides a **RESTful API** (henceforth the \"API\") to interact with its trading platform. Among others, it allows the retrieval of **historical data** as well as of **streaming data**. In addition, it allows to place different types of **orders** and to read out **account information**. The overall goal is to allow the implementation **automated, algortithmic trading programs**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this documentation, you learn all about the `fxcmpy` Python wrapper package (henceforth just `fxcmpy` or \"package\")." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Demo Account" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get started with the the API and the package, a **demo account** with FXCM is sufficient. You can open such an account under https://www.fxcm.com/uk/forex-trading-demo/." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Python Installation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`fxcmpy` works with **Python 3.4** and later. If you need to install **Python** itself and/or additional **packages**, we recommend the use of the `conda` package and environment manager. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To this end, you can download the `Miniconda` installer from https://conda.io/miniconda.html for your operating system and get it installed." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can then download and use the following `yaml` file to create a Python environment:\n", "\n", "http://fxcmpy.tpq.io/_static/fxcm.yml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Having downloaded this file, the **environment** is created on the command line as follows:\n", "\n", " conda env create -f fxcm.yml -n fxcm\n", " \n", "Activate it under Mac OS/Linux via:\n", "\n", " conda activate fxcm\n", " \n", "And under Windows via:\n", "\n", " activate fxcm\n", " \n", "You can then start, for instance, **Jupyter** to interactively explore the examples of this documentation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Package Installation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The code of the package is hosted under https://github.com/fxcm/fxcmpy. You can clone the Git repository and install the `fxcmpy` package locally via\n", "\n", " git clone https://github.com/fxcm/fxcmpy/\n", " cd fxcmpy\n", " python setup.py install" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, installation in general is easiest via `pip` install on the command line.\n", "\n", " pip install fxcmpy\n", " \n", "Make sure to update/upgrade regularly via\n", "\n", " pip install fxcmpy --upgrade" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Working in an interactive context (e.g. `IPython` or `Jupyter`), you can then check whether the package is installed via" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import fxcmpy" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'1.1.17'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fxcmpy.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## API Token" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To connect to the API, you need an **API token** that you can create or revoke from within your (demo) account in the Trading Station https://tradingstation.fxcm.com/.\n", "\n", "**Important**: Please send **an email with you user name** to api@fxcm.com to get RESTful API access and to activate your token, respectively." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In an interactive context, you can use e.g. a variable called `TOKEN` to reference your unique API token.\n", "\n", " TOKEN = YOUR_FXCM_API_TOKEN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Connecting to the server, then boils down to the following line of code.\n", "\n", " con = fxcmpy.fxcmpy(access_token=TOKEN, log_level='error')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, it is recommended to store the API token in a **configuration file** which allows for re-usability and hides the token on the GUI level. The file should contain the following lines." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " [FXCM]\n", " log_level = error\n", " log_file = PATH_TO_AND_NAME_OF_LOG_FILE\n", " access_token = YOUR_FXCM_API_TOKEN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is assumed onwards that this file is in the current working directory and that its name is `fxcm.cfg`.\n", "\n", "With such a configuration file in the current working directory, only the filename need to be passed as a parameter to **connect to the API**." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "con = fxcmpy.fxcmpy(config_file='fxcm.cfg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default, the class connects to the `demo` server.\n", "\n", " con = fxcmpy.fxcmpy(config_file='fxcm.cfg', server='demo')\n", " \n", "To connect to the live server, the `server` parameter must be set to `real`.\n", "\n", " con = fxcmpy.fxcmpy(config_file='fxcm.cfg', server='real')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## First Steps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Having established the connection to the API, data retrieval is straightforward.\n", "\n", "For example, you can look up which **instruments** are available via the `con.get_instruments()` method." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['EUR/USD', 'USD/JPY', 'GBP/USD', 'USD/CHF', 'EUR/CHF', 'AUD/USD', 'USD/CAD', 'NZD/USD', 'EUR/GBP', 'EUR/JPY', 'GBP/JPY', 'CHF/JPY', 'GBP/CHF', 'EUR/AUD', 'EUR/CAD', 'AUD/CAD', 'AUD/JPY', 'CAD/JPY', 'NZD/JPY', 'GBP/CAD', 'GBP/NZD', 'GBP/AUD', 'AUD/NZD', 'USD/SEK', 'EUR/SEK', 'EUR/NOK', 'USD/NOK', 'USD/MXN', 'AUD/CHF', 'EUR/NZD', 'USD/ZAR', 'USD/HKD', 'ZAR/JPY', 'USD/TRY', 'EUR/TRY', 'NZD/CHF', 'CAD/CHF', 'NZD/CAD', 'TRY/JPY', 'USD/CNH', 'AUS200', 'ESP35', 'FRA40', 'GER30', 'HKG33', 'JPN225', 'NAS100', 'SPX500', 'UK100', 'US30', 'Copper', 'CHN50', 'EUSTX50', 'USDOLLAR', 'USOil', 'UKOil', 'SOYF', 'NGAS', 'Bund', 'XAU/USD', 'XAG/USD']\n" ] } ], "source": [ "print(con.get_instruments())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simlarly, **historical data** is retrieved via the `con.get_cancles()` method." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data = con.get_candles('EUR/USD', period='m1', number=250)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bidopenbidclosebidhighbidlowaskopenaskcloseaskhighasklowtickqty
date
2018-06-06 04:08:001.172401.172401.172401.172401.172631.172631.172641.1726311
2018-06-06 04:09:001.172401.172381.172451.172381.172641.172611.172681.1726139
2018-06-06 04:10:001.172381.172351.172381.172301.172611.172581.172611.1725429
2018-06-06 04:11:001.172351.172381.172431.172341.172581.172621.172681.1725743
2018-06-06 04:12:001.172381.172381.172391.172371.172621.172621.172621.1726017
\n", "
" ], "text/plain": [ " bidopen bidclose bidhigh bidlow askopen askclose \\\n", "date \n", "2018-06-06 04:08:00 1.17240 1.17240 1.17240 1.17240 1.17263 1.17263 \n", "2018-06-06 04:09:00 1.17240 1.17238 1.17245 1.17238 1.17264 1.17261 \n", "2018-06-06 04:10:00 1.17238 1.17235 1.17238 1.17230 1.17261 1.17258 \n", "2018-06-06 04:11:00 1.17235 1.17238 1.17243 1.17234 1.17258 1.17262 \n", "2018-06-06 04:12:00 1.17238 1.17238 1.17239 1.17237 1.17262 1.17262 \n", "\n", " askhigh asklow tickqty \n", "date \n", "2018-06-06 04:08:00 1.17264 1.17263 11 \n", "2018-06-06 04:09:00 1.17268 1.17261 39 \n", "2018-06-06 04:10:00 1.17261 1.17254 29 \n", "2018-06-06 04:11:00 1.17268 1.17257 43 \n", "2018-06-06 04:12:00 1.17262 1.17260 17 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bidopenbidclosebidhighbidlowaskopenaskcloseaskhighasklowtickqty
date
2018-06-06 08:13:001.176301.176161.176351.176141.176531.176401.176581.17637248
2018-06-06 08:14:001.176161.176221.176461.176161.176391.176431.176701.17639340
2018-06-06 08:15:001.176221.175811.176221.175631.176441.176051.176451.17587448
2018-06-06 08:16:001.175811.176031.176051.175751.176051.176261.176261.17598227
2018-06-06 08:17:001.176041.176051.176441.175971.176261.176281.176681.17620458
\n", "
" ], "text/plain": [ " bidopen bidclose bidhigh bidlow askopen askclose \\\n", "date \n", "2018-06-06 08:13:00 1.17630 1.17616 1.17635 1.17614 1.17653 1.17640 \n", "2018-06-06 08:14:00 1.17616 1.17622 1.17646 1.17616 1.17639 1.17643 \n", "2018-06-06 08:15:00 1.17622 1.17581 1.17622 1.17563 1.17644 1.17605 \n", "2018-06-06 08:16:00 1.17581 1.17603 1.17605 1.17575 1.17605 1.17626 \n", "2018-06-06 08:17:00 1.17604 1.17605 1.17644 1.17597 1.17626 1.17628 \n", "\n", " askhigh asklow tickqty \n", "date \n", "2018-06-06 08:13:00 1.17658 1.17637 248 \n", "2018-06-06 08:14:00 1.17670 1.17639 340 \n", "2018-06-06 08:15:00 1.17645 1.17587 448 \n", "2018-06-06 08:16:00 1.17626 1.17598 227 \n", "2018-06-06 08:17:00 1.17668 1.17620 458 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Such data can be **visualized** with standard functionality of Python and pandas, for instance." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pylab import plt\n", "plt.style.use('seaborn')\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data['askclose'].plot(figsize=(10, 6));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As last step, it is recommended to close the connection to free resources." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "con.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you have questions regarding **demo or full accounts**, reach out to:\n", "\n", "* info@fxcm.co.uk\n", "* +44 (0) 207 398 4050\n", "\n", "If you have questions regarding the **RESTful API**, reach out to:\n", "\n", "* api@fxcm.com\n", "\n", "The **detailed documentation of the API** is found under:\n", "\n", "* https://github.com/fxcm/RestAPI\n", "\n", "The book _Python for Finance — Mastering Data-Driven Finance_ (O'Reilly) provides detailed information about the use of **Python in Finance**:\n", "\n", "* http://pff.tpq.io/.\n", "\n", "In-depth courses and programs about **Python for Algorithmic Trading**:\n", "\n", "* http://pyalgo.tpq.io\n", "* http://certificate.tpq.io.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## License" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, you can download the [license text](_static/LICENSE.txt)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n", "\n", "1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n", "\n", "2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n", "\n", "3. FXCM's name may not be used to endorse or promote products derived from this software without specific prior written permission.\n", "\n", "THIS SOFTWARE IS PROVIDED BY FXCM \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FXCM BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Risk Warning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a condition to your use, you understand and agree that your download and/or use of the software will expose you to risks associated with the download and/or use of software, including without limitation:\n", "\n", "* risk of delays or failures in transmission, connection, or communication;\n", "* risks of error in the data, code, software updates or patches;\n", "* the risk that the software maybe discontinued, terminated or become obsolete at any time without notice;\n", "* modification or updates to the software may cause disruption or errors;\n", "* the risk that you are solely responsible to ensure you obtain and are using the most up to date version of the software, which may be modified or updated without notice; and\n", "* software or data may not be compatible with your equipment or for your use. \n", "\n", "You hereby agree to accept such risks including but not limited to failure of or damage to hardware, software, communication lines or systems, and/or other computer equipment. FXCM expressly disclaims any liability with respect to the foregoing." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }