Устаревший API REST OANDA - PullRequest
       70

Устаревший API REST OANDA

3 голосов
/ 17 июня 2020

В качестве средства изучения самых основ алгоритмов c торговли и OANDA я нашел учебник о том, как сделать очень базовый торговый алгоритм c практика "алгоритми c трейдинга. Единственная проблема заключается в том, что в учебнике используется REST API v1 OANDA, тогда как теперь в нем используется REST API v20.

Модуль Python oandapyV20, похоже, заменил oandapy, и похоже, что есть методы которые устарели в новейшем модуле. Например, в строке № 7 учебного пособия используется метод под названием get_history, который, по-видимому, полностью устарел, насколько я могу судить.

Мой вопрос: что я могу сделать, чтобы заменить метод get_history, в частности, и есть ли какие-либо другие разделы кода в учебнике, которые может увидеть кто-то, кто знаком с OANDA v20 REST API, которые также будут проблематичными / нуждаются в полной переработке?

Ответы [ 2 ]

1 голос
/ 30 июня 2020

Редактировать : Я нашел пример кода здесь , который может быть полезен:

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, но, надеюсь, это поможет!

Edit # 2 : Итак, я дошел до этого, но в этой документации используются i Python и %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')

Не стесняйтесь пробежать.

0 голосов
/ 26 июня 2020

Я полагаю, вы ищете Исторический инструмент через candles

...