Skip to content

Instantly share code, notes, and snippets.

@benjaminchodroff
Created March 7, 2017 03:05
Show Gist options
  • Save benjaminchodroff/133e9913b37bff5d414bb8e6b71d0141 to your computer and use it in GitHub Desktop.
Save benjaminchodroff/133e9913b37bff5d414bb8e6b71d0141 to your computer and use it in GitHub Desktop.
OANDA v20 API with Time Series Momentum Strategy
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import configparser\n",
"\n",
"# v20 OANDA API - 3rd party\n",
"import json\n",
"from oandapyV20 import API # the client\n",
"import oandapyV20.endpoints.trades as trades\n",
"\n",
"config = configparser.ConfigParser()\n",
"config.read('oanda.cfg')\n",
"\n",
"client = API(access_token=config['oanda']['access_token'])"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"DatetimeIndex: 2702 entries, 2016-12-07 23:00:00 to 2016-12-09 21:59:00\n",
"Data columns (total 1 columns):\n",
"closeAsk 2702 non-null float64\n",
"dtypes: float64(1)\n",
"memory usage: 42.2 KB\n"
]
}
],
"source": [
"import pandas as pd\n",
"import datetime\n",
"from dateutil import parser\n",
"import oandapyV20.endpoints.instruments as instruments\n",
"\n",
"# The v20 api handles from times a little differently - be careful of the timezone\n",
"params={\"from\": parser.parse(\"2016-12-07 18:00:00 EDT\").strftime('%s'),\n",
" \"to\": parser.parse(\"2016-12-10 00:000:00 EDT\").strftime('%s'),\n",
" \"granularity\":'M1',\n",
" \"price\":'A'}\n",
"r = instruments.InstrumentsCandles(instrument=\"EUR_USD\",params=params)\n",
"data = client.request(r)\n",
"results= [{\"time\":x['time'],\"closeAsk\":float(x['ask']['c'])} for x in data['candles']]\n",
"df = pd.DataFrame(results).set_index('time')\n",
"\n",
"df.index = pd.DatetimeIndex(df.index)\n",
"\n",
"df.info()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"df['returns'] = np.log(df['closeAsk'] / df['closeAsk'].shift(1))\n",
"\n",
"cols = []\n",
"\n",
"for momentum in [15, 30, 60, 120]:\n",
" col = 'position_%s' % momentum\n",
" df[col] = np.sign(df['returns'].rolling(momentum).mean())\n",
" cols.append(col)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1170222e8>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nCA1iMpnaW4QGsfXnl52d3d4iNIitR1fauny2/v0T72/zEO9v01AtWrRoUXsL0RZ88skn7Nixg+7d\nu+Po6IgkSSgUivYWC4Bz587x6quvcvr0aZRKJQEBAZhMJpuRLz09nSVLlrBz504MBgMREREolbYz\n3jt37hyvvPIK27dvx8vLi4CAgPYWyYJz586xZMkSUlJSUCgU+Pv7t7dIFti6fCDe3+Yg3t/mYWvv\nh+3851oJg8EAQFZWFmfOnOHAgQMANvNCZWVlsWzZMgYNGkRYWBhPPPEEgM28VBcvXuSNN95g5MiR\nTJs2jVWrVpGVldXeYsno9Xr+9a9/MXnyZJ5++mnKy8vbWyQL8vPzeeeddxg0aBBdu3blrbfeIikp\nyWZG7bYun3h/m4d4f5uHLb4ftvHNagXy8vIA0Gg0SJKEXq8nMjKSixcvkpaWhl6vb1f5cnNzAfOX\nNjk5menTp3PLLbfQv39/UlNT21U2gIKCAvnv+fPnuf322xk4cCABAQGcOnWqnaWDwsJCAIqKikhM\nTMTe3p4lS5awadMmli9fTn5+frvKV/0/NBgMpKWl8ac//YnY2FjGjBnDr7/+ysWLF9tVvurvX0VF\nBefOnbM5+cT72zzE+9s8bPn9ve7M44cPH2bZsmVs374dtVqNm5sbSqWS7Oxs7r33Xr788ku+++47\n/P39CQ0NbTf5duzYgVKppHfv3uTm5rJ+/XreeustVCoVR44cQalUEhwcjEqlajPZqk2Oq1evJikp\niR49euDr60vv3r3x9vamrKyMLVu2cOedd+Lk5NRmclmT79ixY3Tr1g03NzfS09PZt28fL7zwAqNH\nj+a3337DaDQSFRXV5jOyw4cP8/rrr7NlyxZSU1Px8/NDr9eTl5dHdHQ0wcHBbNq0iYiICHx9fdtU\ntmr5qr9/KpUKHx8fCgoKbE4+8f5ePeL9bT62/v7CdTjTXrt2LTfffDOzZs3i6NGjrFu3Dr1ez/bt\n23n33XdJS0ujS5cueHl5tbt8iYmJrFq1imeeeQatVssdd9zB2rVrGTNmDHv27GlzE5tCoUCSJH7+\n+WcSEhJITEwEoEePHgBs374djUaDr68veXl5bT4avlK+pKQkAEJCQjh48CBVVVV4eXnRr18/fv/9\n9zZ/fiaTiX//+9/cdtttLFu2DHt7e+Lj4wkLCyMpKYns7Gx8fHwIDAxk48aNbSpbNdXfvwceeIDj\n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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11962c9b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import seaborn as sns; sns.set()\n",
"\n",
"strats = ['returns']\n",
"\n",
"for col in cols:\n",
" strat = 'strategy_%s' % col.split('_')[1] \n",
" df[strat] = df[col].shift(1) * df['returns']\n",
" strats.append(strat)\n",
"\n",
"df[strats].dropna().cumsum().apply(np.exp).plot()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from oandapyV20.endpoints.pricing import PricingStream\n",
"import oandapyV20.endpoints.orders as orders\n",
"from oandapyV20.contrib.requests import MarketOrderRequest\n",
"from oandapyV20.exceptions import V20Error, StreamTerminated\n",
" \n",
"class MomentumTrader(PricingStream): \n",
" def __init__(self, momentum, *args, **kwargs): \n",
" PricingStream.__init__(self, *args, **kwargs)\n",
" self.ticks = 0 \n",
" self.position = 0\n",
" self.df = pd.DataFrame()\n",
" self.momentum = momentum\n",
" self.units = 100000\n",
" self.connected = False\n",
" self.client = API(access_token=config['oanda']['access_token'])\n",
" def create_order(self, units):\n",
" order = orders.OrderCreate(accountID=config['oanda']['account_id'], data=MarketOrderRequest(instrument=\"EUR_USD\", units=units).data)\n",
" response = self.client.request(order)\n",
" print('\\t', response)\n",
" def on_success(self, data):\n",
" self.ticks += 1\n",
" print(\"ticks=\",self.ticks)\n",
" # print(self.ticks, end=', ')\n",
" # appends the new tick data to the DataFrame object\n",
" self.df = self.df.append(pd.DataFrame([{'time': data['time'],'closeoutAsk':data['closeoutAsk']}],\n",
" index=[data[\"time\"]]))\n",
" # transforms the time information to a DatetimeIndex object\n",
" self.df.index = pd.DatetimeIndex(self.df[\"time\"])\n",
" \n",
" # Convert items back to numeric (Why, OANDA, why are you returning strings?)\n",
" self.df['closeoutAsk'] = pd.to_numeric(self.df[\"closeoutAsk\"],errors='ignore')\n",
" # resamples the data set to a new, homogeneous interval\n",
" dfr = self.df.resample('5s').last().bfill()\n",
" # calculates the log returns\n",
" dfr['returns'] = np.log(dfr['closeoutAsk'] / dfr['closeoutAsk'].shift(1)) \n",
" # derives the positioning according to the momentum strategy\n",
" dfr['position'] = np.sign(dfr['returns'].rolling( \n",
" self.momentum).mean())\n",
" print(\"position=\",dfr['position'].ix[-1])\n",
" if dfr['position'].ix[-1] == 1:\n",
" print(\"go long\")\n",
" if self.position == 0:\n",
" self.create_order(self.units)\n",
" elif self.position == -1:\n",
" self.create_order(self.units * 2)\n",
" self.position = 1\n",
" elif dfr['position'].ix[-1] == -1:\n",
" print(\"go short\")\n",
" if self.position == 0:\n",
" self.create_order(-self.units)\n",
" elif self.position == 1:\n",
" self.create_order(-self.units * 2)\n",
" self.position = -1\n",
" if self.ticks == 25000:\n",
" print(\"close out the position\")\n",
" if self.position == 1:\n",
" self.create_order(-self.units)\n",
" elif self.position == -1:\n",
" self.create_order(self.units)\n",
" self.disconnect()\n",
" def disconnect(self):\n",
" self.connected=False\n",
" def rates(self, account_id, instruments, **params):\n",
" self.connected = True\n",
" params = params or {}\n",
" ignore_heartbeat = None\n",
" if \"ignore_heartbeat\" in params:\n",
" ignore_heartbeat = params['ignore_heartbeat']\n",
" while self.connected:\n",
" response = self.client.request(self)\n",
" for tick in response:\n",
" if not self.connected:\n",
" break\n",
" if not (ignore_heartbeat and tick[\"type\"]==\"HEARTBEAT\"):\n",
" print(tick)\n",
" self.on_success(tick)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Set momentum to be the number of previous 5 second intervals to calculate against\n",
"# For two hours, momentum = 120 * 5 = 600\n",
"# I am using momentum = 6 to speed things up (but it is a terrible prediction!)\n",
"mt = MomentumTrader(momentum=6,accountID=config['oanda']['account_id'],params={\"instruments\": \"EUR_USD\"})"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'type': 'PRICE', 'time': '2017-03-07T02:33:45.528790510Z', 'bids': [{'price': '1.05836', 'liquidity': 10000000.0}, {'price': '1.05834', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05849', 'liquidity': 10000000.0}, {'price': '1.05851', 'liquidity': 10000000.0}], 'closeoutBid': '1.05832', 'closeoutAsk': '1.05853', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 1\n",
"position= nan\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:34:31.539294195Z', 'bids': [{'price': '1.05832', 'liquidity': 10000000.0}, {'price': '1.05830', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05845', 'liquidity': 10000000.0}, {'price': '1.05847', 'liquidity': 10000000.0}], 'closeoutBid': '1.05828', 'closeoutAsk': '1.05849', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 2\n",
"position= 0.0\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:34:49.416958320Z', 'bids': [{'price': '1.05833', 'liquidity': 10000000.0}, {'price': '1.05831', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05845', 'liquidity': 10000000.0}, {'price': '1.05847', 'liquidity': 10000000.0}], 'closeoutBid': '1.05829', 'closeoutAsk': '1.05849', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 3\n",
"position= 0.0\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:35:56.832000180Z', 'bids': [{'price': '1.05834', 'liquidity': 10000000.0}, {'price': '1.05832', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05848', 'liquidity': 10000000.0}, {'price': '1.05850', 'liquidity': 10000000.0}], 'closeoutBid': '1.05830', 'closeoutAsk': '1.05852', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 4\n",
"position= 0.0\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:35:56.937770543Z', 'bids': [{'price': '1.05836', 'liquidity': 10000000.0}, {'price': '1.05834', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05849', 'liquidity': 10000000.0}, {'price': '1.05851', 'liquidity': 10000000.0}], 'closeoutBid': '1.05832', 'closeoutAsk': '1.05853', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 5\n",
"position= 0.0\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:36:31.660969675Z', 'bids': [{'price': '1.05832', 'liquidity': 10000000.0}, {'price': '1.05830', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05846', 'liquidity': 10000000.0}, {'price': '1.05848', 'liquidity': 10000000.0}], 'closeoutBid': '1.05828', 'closeoutAsk': '1.05850', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 6\n",
"position= 0.0\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:36:32.728770415Z', 'bids': [{'price': '1.05833', 'liquidity': 10000000.0}, {'price': '1.05831', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05846', 'liquidity': 10000000.0}, {'price': '1.05848', 'liquidity': 10000000.0}], 'closeoutBid': '1.05829', 'closeoutAsk': '1.05850', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 7\n",
"position= 0.0\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:36:33.131340803Z', 'bids': [{'price': '1.05838', 'liquidity': 10000000.0}, {'price': '1.05836', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05852', 'liquidity': 10000000.0}, {'price': '1.05854', 'liquidity': 10000000.0}], 'closeoutBid': '1.05834', 'closeoutAsk': '1.05856', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 8\n",
"position= 0.0\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:36:56.856640643Z', 'bids': [{'price': '1.05846', 'liquidity': 10000000.0}, {'price': '1.05844', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05859', 'liquidity': 10000000.0}, {'price': '1.05861', 'liquidity': 10000000.0}], 'closeoutBid': '1.05842', 'closeoutAsk': '1.05863', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 9\n",
"position= 1.0\n",
"go long\n",
"\t {'orderCreateTransaction': {'type': 'MARKET_ORDER', 'instrument': 'EUR_USD', 'units': '100000', 'timeInForce': 'FOK', 'positionFill': 'DEFAULT', 'reason': 'CLIENT_ORDER', 'id': '1733', 'userID': 5417463, 'accountID': '101-001-5417463-001', 'batchID': '1733', 'time': '2017-03-07T02:36:57.981701604Z'}, 'orderFillTransaction': {'type': 'ORDER_FILL', 'orderID': '1733', 'instrument': 'EUR_USD', 'units': '100000', 'price': '1.05858', 'pl': '0.0000', 'financing': '0.0000', 'accountBalance': '99795.8866', 'reason': 'MARKET_ORDER', 'tradeOpened': {'tradeID': '1734', 'units': '100000'}, 'id': '1734', 'userID': 5417463, 'accountID': '101-001-5417463-001', 'batchID': '1733', 'time': '2017-03-07T02:36:57.981701604Z'}, 'relatedTransactionIDs': ['1733', '1734'], 'lastTransactionID': '1734'}\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:36:57.519508339Z', 'bids': [{'price': '1.05844', 'liquidity': 10000000.0}, {'price': '1.05842', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05858', 'liquidity': 10000000.0}, {'price': '1.05860', 'liquidity': 10000000.0}], 'closeoutBid': '1.05840', 'closeoutAsk': '1.05862', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 10\n",
"position= 1.0\n",
"go long\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:36:57.981701604Z', 'bids': [{'price': '1.05844', 'liquidity': 10000000.0}, {'price': '1.05842', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05858', 'liquidity': 9900000.0}, {'price': '1.05860', 'liquidity': 10000000.0}], 'closeoutBid': '1.05840', 'closeoutAsk': '1.05862', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 11\n",
"position= 1.0\n",
"go long\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:36:58.481701604Z', 'bids': [{'price': '1.05844', 'liquidity': 10000000.0}, {'price': '1.05842', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05858', 'liquidity': 10000000.0}, {'price': '1.05860', 'liquidity': 10000000.0}], 'closeoutBid': '1.05840', 'closeoutAsk': '1.05862', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 12\n",
"position= 1.0\n",
"go long\n",
"{'type': 'PRICE', 'time': '2017-03-07T02:37:02.029224156Z', 'bids': [{'price': '1.05848', 'liquidity': 10000000.0}, {'price': '1.05846', 'liquidity': 10000000.0}], 'asks': [{'price': '1.05861', 'liquidity': 10000000.0}, {'price': '1.05863', 'liquidity': 10000000.0}], 'closeoutBid': '1.05844', 'closeoutAsk': '1.05865', 'status': 'tradeable', 'tradeable': True, 'instrument': 'EUR_USD'}\n",
"ticks= 13\n",
"position= 1.0\n",
"go long\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-12-89e759b82116>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrates\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maccount_id\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'oanda'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'account_id'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minstruments\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"EUR_USD\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mignore_heartbeat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-6-0413955cf88f>\u001b[0m in \u001b[0;36mrates\u001b[0;34m(self, account_id, instruments, **params)\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnected\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 71\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mtick\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 72\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnected\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/oandapyV20/oandapyV20.py\u001b[0m in \u001b[0;36m__stream_request\u001b[0;34m(self, method, url, request_args, headers)\u001b[0m\n\u001b[1;32m 255\u001b[0m headers=headers, stream=True)\n\u001b[1;32m 256\u001b[0m \u001b[0mlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miter_lines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mITER_LINES_CHUNKSIZE\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 257\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 258\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 259\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"utf-8\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/requests/models.py\u001b[0m in \u001b[0;36miter_lines\u001b[0;34m(self, chunk_size, decode_unicode, delimiter)\u001b[0m\n\u001b[1;32m 745\u001b[0m \u001b[0mpending\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 746\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 747\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mchunk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miter_content\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchunk_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mchunk_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecode_unicode\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdecode_unicode\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 748\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 749\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpending\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/requests/models.py\u001b[0m in \u001b[0;36mgenerate\u001b[0;34m()\u001b[0m\n\u001b[1;32m 701\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraw\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'stream'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 703\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mchunk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstream\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchunk_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 704\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 705\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mProtocolError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/requests/packages/urllib3/response.py\u001b[0m in \u001b[0;36mstream\u001b[0;34m(self, amt, decode_content)\u001b[0m\n\u001b[1;32m 426\u001b[0m \"\"\"\n\u001b[1;32m 427\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunked\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msupports_chunked_reads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 428\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_chunked\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mamt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecode_content\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdecode_content\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 429\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 430\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/requests/packages/urllib3/response.py\u001b[0m in \u001b[0;36mread_chunked\u001b[0;34m(self, amt, decode_content)\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_error_catcher\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 589\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 590\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_update_chunk_length\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 591\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunk_left\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 592\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/requests/packages/urllib3/response.py\u001b[0m in \u001b[0;36m_update_chunk_length\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunk_left\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_fp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0mline\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mb';'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mreadinto\u001b[0;34m(self, b)\u001b[0m\n\u001b[1;32m 584\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 586\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 587\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 588\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_timeout_occurred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/requests/packages/urllib3/contrib/pyopenssl.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 254\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 256\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnection\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecv_into\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 257\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOpenSSL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSysCallError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 258\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msuppress_ragged_eofs\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'Unexpected EOF'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/benjamin.chodroff/anaconda3/anaconda/lib/python3.6/site-packages/OpenSSL/SSL.py\u001b[0m in \u001b[0;36mrecv_into\u001b[0;34m(self, buffer, nbytes, flags)\u001b[0m\n\u001b[1;32m 1332\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_lib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL_peek\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1334\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_lib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSSL_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbuf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1335\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_raise_ssl_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ssl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1336\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"mt.rates(account_id=config['oanda']['account_id'], instruments=\"EUR_USD\", ignore_heartbeat=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment