Попытка использовать Oanda в Python - PullRequest
0 голосов
/ 17 января 2019

Я следую этому уроку парней и сталкиваюсь с некоторыми проблемами с ним. https://www.oreilly.com/learning/algorithmic-trading-in-less-than-100-lines-of-python-code

Когда я запускаю код, это вызывает у меня эту проблему, и я могу понять, что с ним не так, так же как и код, который есть у парня.

 RuntimeWarning: invalid value encountered in sign df[col] = np.sign(df['returns'].rolling(momentum).mean())

Это также не построение графического кадра. На самом деле я не очень разбираюсь в данных, но, насколько я могу судить, все выглядит правильно.

Вот то, что у меня есть, это первая часть урока для ребят.

import configparser
import oandapy as opy
import pandas as pd
import numpy as np
import matplotlib

config = configparser.ConfigParser()
config.read('Config/oanda.cfg')

oanda = opy.API(environment='practice',
            access_token=config['oanda']['access_token'])

# Read in the data
data = oanda.get_history(instrument='EUR_USD',  # our instrument
                     start='2016-12-08',  # start data
                     end='2016-12-10',  # end date
                     granularity='M1')  # minute bars

df = pd.DataFrame(data['candles']).set_index('time')

df.index = pd.DatetimeIndex(df.index)

# df.info()

df['returns'] = np.log(df['closeAsk'] / df['closeAsk'].shift(1))

cols = []

for momentum in [15, 30, 60, 120]:
    col = 'position_%s' % momentum
    df[col] = np.sign(df['returns'].rolling(momentum).mean())
    cols.append(col)

import seaborn as sns; sns.set()
strats = ['returns']

for col in cols:
    strat = 'strategy_%s' % col.split('_')[1]
    df[strat] = df[col].shift(1) * df['returns']
    strats.append(strat)

df[strats].dropna().cumsum().apply(np.exp).plot()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...