(文件路径自己改一下)

import tushare as ts
import numpy as np
import seaborn as sns
import matplotlib
# matplotlib.use('qt4agg')
import matplotlib.pyplot as plt
import datetime

'''
import matplotlib
matplotlib.use('tkagg')
import matplotlib.pyplot as plt
'''
import pandas as pd
import mpl_finance as mpf
from matplotlib.pylab import date2num
from mpl_finance import candlestick_ochl
import matplotlib.dates as mdates
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']    # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False      # 解决保存图像是负号'-'显示为方块的问题
pro = ts.pro_api()
start_date = '20190101'
end_date = '20230207'
ts_code = '000977.SZ'

stock_dat = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)
stock_dat.to_csv("D:/量化/量化(程序)/机器学习/stock_dat.csv", index=False)
stock_dat = stock_dat.reindex(columns=['trade_date', 'ts_code', 'open', 'high', 'low', 'close', 'pre_close',
                                               'change', 'pct_chg', 'vol', 'amount'])
data = stock_dat
# 修改第一行的日期格式
data.timestamp = pd.to_datetime(data.trade_date, format='%Y-%m-%d')
# 将第一行设置为时间索引格式
data.index = data.timestamp
# data.drop('trade_date', axis=1, inplace=True)
data.drop('ts_code', axis=1, inplace=True)
# print(data)

data['Date'] = list(map(lambda x: mdates.date2num(datetime.datetime.strptime(x, '%Y%m%d')), data.trade_date.tolist()))
data.drop('trade_date', axis=1, inplace=True)
print(data)

# 3、绘制K线图
# 提取绘图数据
ohlc = data[['Date', 'open', 'high', 'low', 'close']]
f1, ax = plt.subplots(figsize=(12, 6))                        # 创建图片
mpf.candlestick_ohlc(ax, ohlc.values.tolist(), width=.7
                 , colorup='red', colordown='green')           # 使用candlestick_ohlc绘图
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))  # 设置横轴日期格式
plt.xticks(rotation=30)                                        # 日期显示的旋转角度
plt.title(ts_code, fontsize = 14)                            # 设置图片标题
plt.xlabel('日期', fontsize = 14)                               # 设置横轴标题
plt.ylabel('价格(元)', fontsize = 14)                          # 设置纵轴标题
plt.show()
Logo

专业量化交易与投资者大本营

更多推荐