<p><strong>编辑</strong>:我发现一些可能有用的示例代码<a href="https://oanda-api-v20.readthedocs.io/en/latest/endpoints/instruments/instrumentlist.html" rel="nofollow noreferrer">here</a>:</p>
<pre><code>import oandapyV20
>>> import oandapyV20.endpoints.instruments as instruments
>>> client = oandapyV20.API(access_token=...)
>>> params = ...
>>> r = instruments.InstrumentsCandles(instrument="DE30_EUR",
>>> params=params)
>>> client.request(r)
>>> print r.response
</code></pre>
<p>因此,我将对本教程进行如下编辑:</p>
<pre><code>import oandapyV20
import oandapyV20.endpoints.instruments as instruments
oanda = oandapyV20.API(access_token=...)
params = {'start': '2016-12-08',
'end': '2016-12-10',
'granularity': 'M1'}
data = instruments.InstrumentsCandles(instrument='EUR_USD', params=params)
oanda.request(data)
print(data.response)
</code></pre>
<p>由于我没有要测试的令牌,我不确定新api需要哪些参数,但希望这能有所帮助</p>
<p><strong>编辑#2</strong>:
到目前为止,我已经了解了这一点,但是本文档使用了我不熟悉的<em>iPython</em>和<code>%matplotlib inline</code>。我不太可能把一切都做好,但这就是我的工作</p>
<pre><code>import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import oandapyV20
import oandapyV20.endpoints.pricing as pricing
import seaborn as sns; sns.set()
TOKEN = #<oauth_token>
IDENT = #<accountID>
oanda = oandapyV20.API(access_token=TOKEN)
params = {
'instruments': 'EUR_USD,EUR_JPY',
'since': '2016-12-10',
'granularity': 'M1'
}
data = pricing.PricingInfo(accountID=IDENT, params=params)
oanda.request(data)
df = pd.DataFrame(data.response['prices']).set_index('time')
df['closeoutAsk'].astype(float)
df['returns'] = np.log(float(df['closeoutAsk'][1]) / float(df['closeoutAsk'].shift(1)[1]))
cols = []
for momentum in [15, 30, 60, 120]:
col = f'position_{momentum}'
df[col] = np.sign(df['returns'].rolling(momentum).mean())
cols.append(col)
strats = ['returns']
for col in cols:
strat = f'strategy_{col.split("_")[1]}'
df[strat] = df[col].shift(1) * df['returns']
strats.append(strat)
ts = df[strats]
ts = ts.cumsum()
plt.figure(); ts.plot(); plt.legend(loc='best')
</code></pre>
<p>你可以自由地试一下</p>