Python.Почему я не могу получить подсвечник? - PullRequest
0 голосов
/ 25 сентября 2018

У меня проблема при написании кода на Python.Задача состоит в том, чтобы рисовать свечи, используя данные финансовых тиков.Прежде всего, я сделал четыре новых столбца: от «Bid», «Ask» до «Open», «High», «Low», «Close» (потому что свеча требует таких столбцов).Хорошо, теперь я исправил некоторые вещи, и теперь я застрял с новыми проблемами.Приведенное ниже предложение является одной из множества различных ошибок, которые я не понимаю:

ValueError: Cannot convert -1 to a date. This often happens if non-datetime 
values are passed to an axis that expects datetime objects.

Когда я пытаюсь напечатать особенно Date_Time, я получаю это:

Date_Time
2016-05-02 00:00:00   NaN
2016-05-02 00:10:00   NaN
2016-05-02 00:20:00   NaN
2016-05-02 00:30:00   NaN
2016-05-02 00:40:00   NaN
Freq: 10T, Name: Date_Time, dtype: float64

У меня нетИдея, как я пришел в NaN.

Это мой код:

import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
from mpl_finance import candlestick_ohlc
import matplotlib.dates as dates
data_pd = pd.read_csv('EURUSD-2016-05.csv', names=['Symbol', 'Date_Time', 'Bid', 'Ask'])
data_pd.head()
format = '%Y%m%d %H:%M:%S'
data_pd['Date_Time'] = pd.to_datetime(data_pd['Date_Time'], format = format)
data_pd = data_pd.set_index(data_pd['Date_Time'])
data_pd = data_pd.drop(columns=['Symbol'])

data_ask = data_pd['Ask'].resample('10Min').ohlc()

data_ask = data_ask.reindex(columns= ['Date_Time', 'open', 'high', 'low', 'close'])

ohlc = data_ask[['Date_Time','open','high','low','close']]
f1, ax = plt.subplots(figsize = (10,5))

ax.xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d %H:%M:%S'))
candlestick_ohlc(ax, ohlc.values, width=.6, colorup='green', colordown='red')

plt.show()

Мои данные выглядят так:

EUR/USD,20160502 00:00:00.033,1.14607,1.14613
EUR/USD,20160502 00:00:00.149,1.14607,1.14613
EUR/USD,20160502 00:00:00.237,1.14607,1.1461
EUR/USD,20160502 00:00:00.332,1.14605,1.1461

Вот ссылка, где вы можете получить мои данные:

https://pepperstone.com/uk/client-resources/historical-tick-data

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

1 Ответ

0 голосов
/ 26 сентября 2018

При повторной выборке data_pd['Ask'],

data_ask = data_pd['Ask'].resample('10Min').ohlc()

вы возвращаете эти столбцы: ['open', 'high', 'low', 'close'], и время (повторная выборка) становится индексом.

В результате при переиндексации,

data_ask.reindex(columns=['Date_Time', 'open', 'high', 'low', 'close'])

, поскольку столбец Date_Time не существует, операция переиндексации возвращает столбец пропущенных значений.

Что может помочь в следующем:

data_ask.reset_index()

Этопревратит индекс обратно в столбец, если это то, что вам нужно.


Редактировать : На основании приведенного выше объяснения вычисление ohlc как таковое должно работать:

data_ask = data_pd['Ask'].resample('10Min').ohlc()
ohlc = data_ask.reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...