Skip to content

Instantly share code, notes, and snippets.

@yhilpisch
Last active September 24, 2018 19:15
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save yhilpisch/b41d0e935128a65a611e87bcf3bff665 to your computer and use it in GitHub Desktop.
Save yhilpisch/b41d0e935128a65a611e87bcf3bff665 to your computer and use it in GitHub Desktop.

Algorithmic Trading with ML & DL

Dr. Yves J. Hilpisch | The Python Quants GmbH

Workshop at ODSC London on 20. September 2018

See http://odsc.com/london.

Links

Link to Slides

http://hilpisch.com/odsc_ldn_2018.pdf

Short Link to Gist

http://bit.ly/odsc_ldn_2018

Python

You should have installed either Anaconda or Miniconda.

If you do not have a Python installation/environment with the core scientific packages, do on the shell do:

conda create -n odsc python=3.6 jupyter pandas nomkl scikit-learn matplotlib
conda activate odsc

In any case do the following to install the fxcmpy package:

pip install --upgrade pip
pip install fxcmpy

FXCM

You should open a demo account under

https://www.fxcm.com/uk/forex-trading-demo/

The documentation for fxcmpy is found under

http://fxcmpy.tpq.io

You should generate a token in your account under Token Management.

Create your working folder where you put in all subsequently created files.

Then create a configuration file with name fxcm.cfg and the following content:

[FXCM]
log_level = error
log_file = 'fxcm.log'
access_token = YOUR_FXCM_API_TOKEN
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"http://hilpisch.com/tpq_logo.png\" alt=\"The Python Quants\" width=\"35%\" align=\"right\" border=\"0\"><br>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ODSC &mdash; FXCM Basics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Risk Disclaimer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 & TPQ 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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Speaker Disclaimer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The speaker is neither an employee, agent nor representative of FXCM and is therefore acting independently. The opinions given are their own, constitute general market commentary, and do not constitute the opinion or advice of FXCM or any form of personal or investment advice. FXCM assumes no responsibility for any loss or damage, including but not limited to, any loss or gain arising out of the direct or indirect use of this or any other content. 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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Imports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import datetime as dt\n",
"from pylab import plt\n",
"plt.style.use('seaborn')\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Retrieving Tick Data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# from fxcmpy import fxcmpy_tick_data_reader as tdr"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# print(tdr.get_available_symbols())"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# start = dt.datetime(2018, 9, 4)\n",
"# stop = dt.datetime(2018, 9, 5)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# td = tdr('EURUSD', start, stop)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# td.get_raw_data().info()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# td.get_data().info()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# td.get_data().head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Retrieving Candles Data"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"from fxcmpy import fxcmpy_candles_data_reader as cdr"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('AUDCAD', 'AUDCHF', 'AUDJPY', 'AUDNZD', 'CADCHF', 'EURAUD', 'EURCHF', 'EURGBP', 'EURJPY', 'EURUSD', 'GBPCHF', 'GBPJPY', 'GBPNZD', 'GBPUSD', 'GBPCHF', 'GBPJPY', 'GBPNZD', 'NZDCAD', 'NZDCHF', 'NZDJPY', 'NZDUSD', 'USDCAD', 'USDCHF', 'USDJPY')\n"
]
}
],
"source": [
"print(cdr.get_available_symbols())"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"start = dt.datetime(2018, 5, 1)\n",
"stop = dt.datetime(2018, 7, 6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`period` must be one of `m1`, `H1` or `D1`"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"period = 'H1'"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"candles = cdr('EURUSD', start, stop, period)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"data = candles.get_data()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"DatetimeIndex: 1200 entries, 2018-04-29 21:00:00 to 2018-07-06 20:00:00\n",
"Data columns (total 8 columns):\n",
"BidOpen 1200 non-null float64\n",
"BidHigh 1200 non-null float64\n",
"BidLow 1200 non-null float64\n",
"BidClose 1200 non-null float64\n",
"AskOpen 1200 non-null float64\n",
"AskHigh 1200 non-null float64\n",
"AskLow 1200 non-null float64\n",
"AskClose 1200 non-null float64\n",
"dtypes: float64(8)\n",
"memory usage: 84.4 KB\n"
]
}
],
"source": [
"data.info()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>BidOpen</th>\n",
" <th>BidHigh</th>\n",
" <th>BidLow</th>\n",
" <th>BidClose</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-04-29 21:00:00</th>\n",
" <td>1.21226</td>\n",
" <td>1.21299</td>\n",
" <td>1.21226</td>\n",
" <td>1.21277</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-29 22:00:00</th>\n",
" <td>1.21277</td>\n",
" <td>1.21287</td>\n",
" <td>1.21202</td>\n",
" <td>1.21215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-29 23:00:00</th>\n",
" <td>1.21215</td>\n",
" <td>1.21228</td>\n",
" <td>1.21190</td>\n",
" <td>1.21227</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-30 00:00:00</th>\n",
" <td>1.21227</td>\n",
" <td>1.21319</td>\n",
" <td>1.21217</td>\n",
" <td>1.21286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-30 01:00:00</th>\n",
" <td>1.21286</td>\n",
" <td>1.21341</td>\n",
" <td>1.21214</td>\n",
" <td>1.21333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" BidOpen BidHigh BidLow BidClose\n",
"2018-04-29 21:00:00 1.21226 1.21299 1.21226 1.21277\n",
"2018-04-29 22:00:00 1.21277 1.21287 1.21202 1.21215\n",
"2018-04-29 23:00:00 1.21215 1.21228 1.21190 1.21227\n",
"2018-04-30 00:00:00 1.21227 1.21319 1.21217 1.21286\n",
"2018-04-30 01:00:00 1.21286 1.21341 1.21214 1.21333"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data[data.columns[:4]].head()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>AskOpen</th>\n",
" <th>AskHigh</th>\n",
" <th>AskLow</th>\n",
" <th>AskClose</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-04-29 21:00:00</th>\n",
" <td>1.21249</td>\n",
" <td>1.21311</td>\n",
" <td>1.21248</td>\n",
" <td>1.21289</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-29 22:00:00</th>\n",
" <td>1.21289</td>\n",
" <td>1.21291</td>\n",
" <td>1.21203</td>\n",
" <td>1.21217</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-29 23:00:00</th>\n",
" <td>1.21217</td>\n",
" <td>1.21230</td>\n",
" <td>1.21190</td>\n",
" <td>1.21228</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-30 00:00:00</th>\n",
" <td>1.21228</td>\n",
" <td>1.21321</td>\n",
" <td>1.21218</td>\n",
" <td>1.21288</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-04-30 01:00:00</th>\n",
" <td>1.21288</td>\n",
" <td>1.21343</td>\n",
" <td>1.21216</td>\n",
" <td>1.21334</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" AskOpen AskHigh AskLow AskClose\n",
"2018-04-29 21:00:00 1.21249 1.21311 1.21248 1.21289\n",
"2018-04-29 22:00:00 1.21289 1.21291 1.21203 1.21217\n",
"2018-04-29 23:00:00 1.21217 1.21230 1.21190 1.21228\n",
"2018-04-30 00:00:00 1.21228 1.21321 1.21218 1.21288\n",
"2018-04-30 01:00:00 1.21288 1.21343 1.21216 1.21334"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data[data.columns[4:]].head()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"data['MidClose'] = data[['BidClose', 'AskClose']].mean(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"data['SMA1'] = data['MidClose'].rolling(30).mean()\n",
"data['SMA2'] = data['MidClose'].rolling(100).mean()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"data[['MidClose', 'SMA1', 'SMA2']].plot(figsize=(10, 6));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Connecting to the API"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"import fxcmpy"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'1.1.28'"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fxcmpy.__version__"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"api = fxcmpy.fxcmpy(config_file='../fxcm.cfg') # adjust path/filename"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"instruments = api.get_instruments()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['EUR/USD', 'XAU/USD', 'GBP/USD', 'UK100', 'USDOLLAR', 'XAG/USD', 'GER30', 'FRA40', 'USD/CNH', 'EUR/JPY', 'USD/JPY', 'CHN50', 'GBP/JPY', 'AUD/JPY', 'CHF/JPY', 'USD/CHF', 'GBP/CHF', 'AUD/USD', 'EUR/AUD', 'EUR/CHF', 'EUR/CAD', 'EUR/GBP', 'AUD/CAD', 'NZD/USD', 'USD/CAD', 'CAD/JPY', 'GBP/AUD', 'NZD/JPY', 'US30', 'GBP/CAD', 'SOYF', 'GBP/NZD', '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', 'AUS200', 'ESP35', 'HKG33', 'JPN225', 'NAS100', 'SPX500', 'Copper', 'EUSTX50', 'USOil', 'UKOil', 'NGAS', 'Bund']\n"
]
}
],
"source": [
"print(instruments)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Retrieving Historical Data"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"start = dt.datetime(2017, 1, 1) \n",
"end = dt.datetime(2018, 1, 1)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"candles = api.get_candles('EUR/USD', period='D1',\n",
" start=start, stop=end)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"DatetimeIndex: 309 entries, 2017-01-03 22:00:00 to 2018-01-01 22:00:00\n",
"Data columns (total 9 columns):\n",
"bidopen 309 non-null float64\n",
"bidclose 309 non-null float64\n",
"bidhigh 309 non-null float64\n",
"bidlow 309 non-null float64\n",
"askopen 309 non-null float64\n",
"askclose 309 non-null float64\n",
"askhigh 309 non-null float64\n",
"asklow 309 non-null float64\n",
"tickqty 309 non-null int64\n",
"dtypes: float64(8), int64(1)\n",
"memory usage: 24.1 KB\n"
]
}
],
"source": [
"candles.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The parameter `period` must be one of `m1, m5, m15, m30, H1, H2, H3, H4, H6, H8, D1, W1` or `M1`."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"candles = api.get_candles('EUR/USD', period='m1', number=250)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"DatetimeIndex: 250 entries, 2018-09-20 06:48:00 to 2018-09-20 10:57:00\n",
"Data columns (total 9 columns):\n",
"bidopen 250 non-null float64\n",
"bidclose 250 non-null float64\n",
"bidhigh 250 non-null float64\n",
"bidlow 250 non-null float64\n",
"askopen 250 non-null float64\n",
"askclose 250 non-null float64\n",
"askhigh 250 non-null float64\n",
"asklow 250 non-null float64\n",
"tickqty 250 non-null int64\n",
"dtypes: float64(8), int64(1)\n",
"memory usage: 19.5 KB\n"
]
}
],
"source": [
"candles.info()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"candles['askclose'].plot(figsize=(10, 6));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Streaming Data"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"def output(data, dataframe):\n",
" print('%3d | %s | %s | %6.5f, %6.5f' \n",
" % (len(dataframe), data['Symbol'],\n",
" pd.to_datetime(int(data['Updated']), unit='ms'), \n",
" data['Rates'][0], data['Rates'][1]))"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 1 | EUR/USD | 2018-09-20 10:59:50.550000 | 1.17194, 1.17207\n",
" 2 | EUR/USD | 2018-09-20 10:59:50.986000 | 1.17196, 1.17208\n",
" 3 | EUR/USD | 2018-09-20 10:59:51.642000 | 1.17195, 1.17207\n",
" 4 | EUR/USD | 2018-09-20 10:59:52.024000 | 1.17195, 1.17208\n",
" 5 | EUR/USD | 2018-09-20 10:59:53.410000 | 1.17196, 1.17208\n",
" 6 | EUR/USD | 2018-09-20 10:59:54.276000 | 1.17195, 1.17208\n",
" 7 | EUR/USD | 2018-09-20 10:59:55.657000 | 1.17197, 1.17209\n",
" 8 | EUR/USD | 2018-09-20 10:59:56.611000 | 1.17196, 1.17209\n",
" 9 | EUR/USD | 2018-09-20 10:59:56.981000 | 1.17196, 1.17209\n",
" 10 | EUR/USD | 2018-09-20 10:59:57.657000 | 1.17197, 1.17210\n",
" 11 | EUR/USD | 2018-09-20 10:59:58.182000 | 1.17200, 1.17211\n",
" 12 | EUR/USD | 2018-09-20 10:59:58.680000 | 1.17202, 1.17213\n",
" 13 | EUR/USD | 2018-09-20 10:59:59.011000 | 1.17201, 1.17213\n",
" 14 | EUR/USD | 2018-09-20 10:59:59.356000 | 1.17201, 1.17213\n",
" 15 | EUR/USD | 2018-09-20 11:00:00.170000 | 1.17200, 1.17212\n",
" 16 | EUR/USD | 2018-09-20 11:00:00.986000 | 1.17197, 1.17209\n",
" 17 | EUR/USD | 2018-09-20 11:00:01.695000 | 1.17199, 1.17210\n",
" 18 | EUR/USD | 2018-09-20 11:00:02.183000 | 1.17197, 1.17210\n"
]
}
],
"source": [
"api.subscribe_market_data('EUR/USD', (output,))"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Bid 1.17197\n",
"Ask 1.17210\n",
"High 1.17214\n",
"Low 1.16682\n",
"Name: 2018-09-20 11:00:02.183000, dtype: float64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 19 | EUR/USD | 2018-09-20 11:00:02.696000 | 1.17197, 1.17209\n",
" 20 | EUR/USD | 2018-09-20 11:00:02.807000 | 1.17197, 1.17209\n",
" 21 | EUR/USD | 2018-09-20 11:00:03.705000 | 1.17197, 1.17208\n",
" 22 | EUR/USD | 2018-09-20 11:00:04.053000 | 1.17198, 1.17209\n",
" 23 | EUR/USD | 2018-09-20 11:00:04.608000 | 1.17198, 1.17211\n",
" 24 | EUR/USD | 2018-09-20 11:00:05.187000 | 1.17199, 1.17211\n",
" 25 | EUR/USD | 2018-09-20 11:00:05.646000 | 1.17200, 1.17212\n",
" 26 | EUR/USD | 2018-09-20 11:00:06.165000 | 1.17198, 1.17211\n",
" 27 | EUR/USD | 2018-09-20 11:00:06.497000 | 1.17198, 1.17210\n",
" 28 | EUR/USD | 2018-09-20 11:00:07.208000 | 1.17199, 1.17210\n",
" 29 | EUR/USD | 2018-09-20 11:00:07.521000 | 1.17196, 1.17208\n",
" 30 | EUR/USD | 2018-09-20 11:00:09.207000 | 1.17198, 1.17211\n",
" 31 | EUR/USD | 2018-09-20 11:00:09.496000 | 1.17199, 1.17211\n",
" 32 | EUR/USD | 2018-09-20 11:00:10.118000 | 1.17199, 1.17212\n",
" 33 | EUR/USD | 2018-09-20 11:00:10.705000 | 1.17196, 1.17209\n",
" 34 | EUR/USD | 2018-09-20 11:00:11.125000 | 1.17197, 1.17209\n"
]
}
],
"source": [
"api.get_last_price('EUR/USD')"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 35 | EUR/USD | 2018-09-20 11:00:11.581000 | 1.17196, 1.17208\n",
" 36 | EUR/USD | 2018-09-20 11:00:11.771000 | 1.17196, 1.17209\n"
]
}
],
"source": [
"api.unsubscribe_market_data('EUR/USD') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Placing Orders"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: []"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"api.get_open_positions()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"order = api.create_market_buy_order('EUR/USD', 10)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"sel = ['tradeId', 'amountK', 'currency',\n",
" 'grossPL', 'isBuy']"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tradeId</th>\n",
" <th>amountK</th>\n",
" <th>currency</th>\n",
" <th>grossPL</th>\n",
" <th>isBuy</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>130986397</td>\n",
" <td>10</td>\n",
" <td>EUR/USD</td>\n",
" <td>-1.28022</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tradeId amountK currency grossPL isBuy\n",
"0 130986397 10 EUR/USD -1.28022 True"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"api.get_open_positions()[sel]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"order = api.create_market_buy_order('EUR/USD', 5)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tradeId</th>\n",
" <th>amountK</th>\n",
" <th>currency</th>\n",
" <th>grossPL</th>\n",
" <th>isBuy</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>130986397</td>\n",
" <td>10</td>\n",
" <td>EUR/USD</td>\n",
" <td>-1.36558</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>130986410</td>\n",
" <td>5</td>\n",
" <td>EUR/USD</td>\n",
" <td>-0.46942</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tradeId amountK currency grossPL isBuy\n",
"0 130986397 10 EUR/USD -1.36558 True\n",
"1 130986410 5 EUR/USD -0.46942 True"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"api.get_open_positions()[sel]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"order = api.create_market_sell_order('EUR/USD', 7)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tradeId</th>\n",
" <th>amountK</th>\n",
" <th>currency</th>\n",
" <th>grossPL</th>\n",
" <th>isBuy</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>130986397</td>\n",
" <td>10</td>\n",
" <td>EUR/USD</td>\n",
" <td>-0.25602</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>130986410</td>\n",
" <td>5</td>\n",
" <td>EUR/USD</td>\n",
" <td>0.08534</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>130986416</td>\n",
" <td>7</td>\n",
" <td>EUR/USD</td>\n",
" <td>-1.07516</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tradeId amountK currency grossPL isBuy\n",
"0 130986397 10 EUR/USD -0.25602 True\n",
"1 130986410 5 EUR/USD 0.08534 True\n",
"2 130986416 7 EUR/USD -1.07516 False"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"api.get_open_positions()[sel]"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# api.close_all()"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"api.close_all_for_symbol('EUR/USD')"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: []"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"api.get_open_positions()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Account Information"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1090495"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"api.get_default_account()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>accountId</th>\n",
" <td>1090495</td>\n",
" </tr>\n",
" <tr>\n",
" <th>accountName</th>\n",
" <td>01090495</td>\n",
" </tr>\n",
" <tr>\n",
" <th>balance</th>\n",
" <td>4959.29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>dayPL</th>\n",
" <td>-1.28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>equity</th>\n",
" <td>4959.29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>grossPL</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>hedging</th>\n",
" <td>Y</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mc</th>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mcDate</th>\n",
" <td></td>\n",
" </tr>\n",
" <tr>\n",
" <th>ratePrecision</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>t</th>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>usableMargin</th>\n",
" <td>4959.29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>usableMargin3</th>\n",
" <td>4959.29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>usableMargin3Perc</th>\n",
" <td>100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>usableMarginPerc</th>\n",
" <td>100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>usdMr</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>usdMr3</th>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0\n",
"accountId 1090495\n",
"accountName 01090495\n",
"balance 4959.29\n",
"dayPL -1.28\n",
"equity 4959.29\n",
"grossPL 0\n",
"hedging Y\n",
"mc N\n",
"mcDate \n",
"ratePrecision 0\n",
"t 6\n",
"usableMargin 4959.29\n",
"usableMargin3 4959.29\n",
"usableMargin3Perc 100\n",
"usableMarginPerc 100\n",
"usdMr 0\n",
"usdMr3 0"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"api.get_accounts().T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"http://hilpisch.com/tpq_logo.png\" alt=\"The Python Quants\" width=\"35%\" align=\"right\" border=\"0\"><br>\n",
"\n",
"<a href=\"http://tpq.io\" target=\"_blank\">http://tpq.io</a> | <a href=\"http://twitter.com/dyjh\" target=\"_blank\">@dyjh</a> | <a href=\"mailto:training@tpq.io\">training@tpq.io</a>"
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
rm fxcm_*
gist -u b41d0e935128a65a611e87bcf3bff665 *
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment