Данные yfinance не отображаются с помощью mplfinance - PullRequest
2 голосов
/ 14 июля 2020

Я пытаюсь построить простые биржевые данные, используя yfinance и mplfinance, однако я продолжаю сталкиваться с проблемами с датами (я считаю). Это то, что у меня есть до сих пор.

Вот часть фрейма данных, который я использую.

Date       Open                High              Low                Close          Adj Close        Volume
2020-01-02 17.6299991607666   17.700000762939453 16.329999923706055 16.39999961853 16.39999961853  3668700
2020-01-03 16.350000381469727 16.729999542236328 15.8100004196167   16.01000022888 16.01000022888  2280600
2020-01-06 16.170000076293945 16.190000534057617 15.260000228881836 15.5           15.5            3035700
2020-01-07 15.619999885559082 15.670000076293945 15.199999809265137 15.32999992375 15.3299999      2038700
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import mplfinance as mpf
import talib
import yfinance as yf

stock = yf.download('MSFT', '2020-1-1','2020-07-07')
stock.index = pd.to_datetime(stock.index)
stock = stock[['Open', 'High', 'Low', 'Close', 'Volume']]

inputs = {
    'open': stock['Open'],
    'high': stock['High'],
    'low': stock['Low'],
    'close': stock['Close'],
    'volume': stock['Volume']
}

close = talib.SMA(stock['Close'])

from talib import MA_Type

upper, middle, lower = talib.BBANDS(close, matype=MA_Type.T3)

output = talib.MOM(close, timeperiod=5)

mpf.plot(stock)
plt.plot(upper)
plt.plot(middle)
plt.plot(lower)
plt.show()

Однако я продолжаю получать эту ошибку при построении графика. Не знаю, откуда "-36881.641"

ValueError: view limit minimum -36881.641796875 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units

1 Ответ

1 голос
/ 14 июля 2020

Прежде всего, вы не должны смешивать mpf.plot() и plt.plot(). Они не обязательно совместимы по способу обработки данных; и если вы их смешаете, результаты не будут определены.

Вместо этого вы должны использовать mpf.make_addplot(), чтобы добавить данные полосы Боллинджера к графику. См. этот учебник для ноутбуков с примерами .

Проблема, которую вы видите, вероятно, связана с тем, что mplfinance манипулирует осью даты, чтобы использовать целочисленный индекс под капотом во избежание отображения неторговых дней. Настройка show_nontrading=True может решить вашу проблему, но может и нет. Однако, безусловно, использование mpf.make_addplot(), как описано выше (я ожидаю), решит вашу проблему. Дай мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...