python - Yfinance 数据未使用 mplfinance 绘制

标签 python pandas matplotlib yfinance mplfinance

我正在尝试使用 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

最佳答案

首先,您不应该混合 mpf.plot()plt.plot()。它们处理数据的方式不一定兼容;如果你混合它们,结果是不确定的。

您应该使用 mpf.make_addplot() 将布林线数据添加到图中。请参阅this notebook tutorial for examples .

您看到的问题可能与 mplfinance 操纵日期轴以在幕后使用整数索引以避免显示非交易日这一事实有关。设置 show_nontrading=True 可能可以解决您的问题,但也可能不会。但是,如上所述(我希望)使用 mpf.make_addplot() 肯定会解决您的问题。让我知道。

关于python - Yfinance 数据未使用 mplfinance 绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62886537/

相关文章:

python - 使用嵌套的 'for' 语句加速 Python 'if' 循环

python - 为 x 的两个值插值一个峰值 - Python

python - 如何将选定列的值存储在单独的行中?

python - 使用 matplotlib 时,LaTeX 方程不会在 google Colaboratory 中呈现

matplotlib - 如何根据分类输入变量可视化(绘制)回归输出?

python - matplotlib 图打开但 matplotlib 窗口 "not responding"

python - 在 Python 中提取一些 HTML 标记值

python - SQLAlchemy 插入忽略

python - 如何从 pandas 数据框中获取同一行(前一列)的前一个值?

python - 使用范围数据集返回 2 秒的累积和