OANDA不推荐的RESTAPI

2024-05-19 01:35:33 发布

您现在位置:Python中文网/ 问答频道 /正文

作为学习算法交易和OANDA的基础知识的一种手段,我发现a tutorial关于如何制作一个非常基本的交易算法来“实践”算法交易。唯一的问题是教程使用了OANDA的v1 REST API,而现在它使用的是v20 REST API

Python模块oandapyV20似乎已经取代了oandapy,而且在最新的模块中似乎有一些方法已经被弃用。例如,在本教程的第7行,它使用了一个名为get_history的方法,从我所知道的情况来看,这个方法现在似乎完全不受欢迎

我的问题是,我可以做些什么来替换get_history方法,特别是教程中是否有熟悉OANDAV20RESTAPI的人可能会看到的代码的其他部分也会有问题/需要完全重新编写


Tags: 模块方法算法restapiget手段教程
2条回答

编辑:我发现一些可能有用的示例代码here

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

因此,我将对本教程进行如下编辑:

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)

由于我没有要测试的令牌,我不确定新api需要哪些参数,但希望这能有所帮助

编辑#2: 到目前为止,我已经了解了这一点,但是本文档使用了我不熟悉的iPython%matplotlib inline。我不太可能把一切都做好,但这就是我的工作

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')

你可以自由地试一下

我相信您正在通过candles寻找History instrument

相关问题 更多 >

    热门问题