1

我最近不得不从 Yahoo Finance 网站实际下载一个 CSV 文件(NG.L 股票),因为我不能再直接从 Yahoo 提取数据,而我的原始财务 Python 脚本没有问题。

我的程序几乎可以运行并显示我的 NG.L 股票图表,但图表底部的日期完全错误。他们应该只显示我的 NG.L CSV 文件中从02/06/202109/07/2021的日期。

相反,我的图表显示日期 23/01/2021 到 19/11/2021,这很奇怪。是否有快速代码修复,因为我只希望从我的 CSV 文件中显示和提取日期。

NG.L Python 代码:

import matplotlib.pyplot as plt
from mplfinance.original_flavor import candlestick_ohlc
import pandas as pd
import matplotlib.dates as mpl_dates
import datetime as dt

plt.style.use('ggplot')

# Extracting Data for plotting
data = pd.read_csv('NG.L.csv')
ohlc = data.loc[:, ['Date', 'Open', 'High', 'Low', 'Close', ]]
ohlc['Date'] = pd.to_datetime(ohlc['Date'])
ohlc['Date'] = ohlc['Date'].apply(mpl_dates.date2num)
ohlc = ohlc.astype(float)

# Creating Subplots
fig, ax = plt.subplots()
candlestick_ohlc(ax, ohlc.values, width=0.8, colorup='green', colordown='red', alpha=0.8)

# Setting labels & titles
ax.set_xlabel('TIMELINE of NG.L')
ax.set_ylabel('PRICE IN GBP POUND STERLING')
fig.suptitle('NATIONAL GRID PLC - 2 JUNE 2021 - 9 JULY 2021')

# Formatting Date
date_format = mpl_dates.DateFormatter('%d-%m-%Y')
ax.xaxis.set_major_formatter(date_format)
fig.autofmt_xdate()
fig.tight_layout()
plt.show()

NG.L 股票图表:

在此处输入图像描述

NG.L CSV 文件

在此处输入图像描述

4

1 回答 1

0

我下载了 csv 文件,并将上面的代码复制到我机器上的 .py 文件中,然后简单地运行它,得到以下结果。在我看来很好。您安装了哪个版本的 mplfinance?

在此处输入图像描述

另请注意,如果您直接查看 csv 文件,日期的格式是什么?

dino@DINO:~/code/mplfinance/examples/scratch_pad$ head NG.L.csv
Date,Open,High,Low,Close,Adj Close,Volume
2021-06-01,938.799988,957.755981,938.799988,950.099976,918.291504,5162873
2021-06-02,950.500000,965.599976,948.500000,960.599976,928.439941,9110791
2021-06-03,937.099976,937.099976,909.099976,921.299988,921.299988,9609182
2021-06-04,921.700012,927.799988,912.700012,914.299988,914.299988,7607690
2021-06-07,918.900024,919.229980,913.000000,916.000000,916.000000,5240943
2021-06-08,919.099976,926.200012,914.239990,914.700012,914.700012,12657157
2021-06-09,913.599976,916.299988,909.799988,913.000000,913.000000,6334877
2021-06-10,918.099976,925.000000,911.900024,914.000000,914.000000,7530470
2021-06-11,915.799988,921.809998,914.400024,918.599976,918.599976,8630006

您可能需要考虑使用的mpfinance API。你可以用更少的代码完成同样的事情:

import mplfinance as mpf
import pandas as pd

# Extracting Data for plotting
data = pd.read_csv('NG.L.csv',index_col=0,parse_dates=True)

mpf.plot(data,type='candle',style='yahoo',
         ylabel='PRICE IN GBP POUND STERLING',
         title='NATIONAL GRID PLC - 2 JUNE 2021 - 9 JULY 2021',
         datetime_format='%d-%m-%Y')

全面披露:我是 mplfinance 库的维护者。目前,旧 API 仍然可以通过from mplfinance.original_flavor导入使用,对于那些习惯了它的人来说,但我仍然尝试鼓励人们使用旨在更简单的新 API。

于 2021-07-12T15:47:49.497 回答