首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OANDA不推荐REST API

OANDA不推荐REST API
EN

Stack Overflow用户
提问于 2020-06-16 23:08:33
回答 2查看 532关注 0票数 3

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

Python模块oandapyV20似乎已经取代了oandapy,而且在最新的模块中,似乎有些方法已经过时了。例如,在本教程的第7行中,它使用了一个名为get_history的方法,据我所知,这似乎是完全不推荐的。

我的问题是,我能做些什么来替换get_history方法,尤其是在本教程中,是否还有其他一些熟悉OANDA v20 REST的人可能会看到也会出现问题/需要完全重新处理的代码部分?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-30 03:44:49

编辑:我找到了一些可能有用的示例代码这里

代码语言:javascript
复制
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

因此,我将按以下方式编辑本教程:

代码语言:javascript
复制
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。我不太可能把这一切都做好,但这就是我现在的处境。

代码语言:javascript
复制
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')

你可以随便跑一趟。

票数 1
EN

Stack Overflow用户

发布于 2020-06-26 02:51:56

我相信你是通过历史仪器 candles来找的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62418935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档