依赖库:
pip install tushare
pip install pandas
pip install matplotlib
pip install mplfinance
参阅接口文档:周线行情 , 月线行情
为了获取股票 周线数据 weekly 、月线数据 monthly ,编写 get_week_month.py 如下
# coding: utf-8
""" 获取股票 周K线数据、月K线数据 """
import os
import sys
import pandas as pd
import tushare as tsif len(sys.argv) ==2:code = sys.argv[1]
else:print('usage: python get_week_month.py stockcode ')sys.exit(1)if len(code) !=6:print('stock code length: 6')sys.exit(2)if code < '600000':s_code = code +'.SZ'
else:s_code = code +'.SH'# 初始化pro接口
pro = ts.pro_api('your token')# 获取周K线数据
df = pro.weekly(ts_code=s_code, start_date='20190101')if df.empty :print(" df is empty ")sys.exit(2)df = df.sort_values(by='trade_date')
#df = df.reset_index(drop=True)
# 为了与旧版的 tushare 保持一致性,修改列名
df.rename(columns={'trade_date':'date','vol':'volume'}, inplace=True)path = './data/'
file1 = 'w'+code+'.csv'
df.to_csv(path + file1, index=False)
print(file1)# 获取月K线数据
df = pro.monthly(ts_code=s_code, start_date='20190101')if df.empty :print(" df is empty ")sys.exit(2)df = df.sort_values(by='trade_date')
#df = df.reset_index(drop=True)
# 为了与旧版的 tushare 保持一致性,修改列名
df.rename(columns={'trade_date':'date','vol':'volume'}, inplace=True)path = './data/'
file2 = 'm'+code+'.csv'
df.to_csv(path + file2, index=False)
print(file2)
运行 python get_week_month.py 601225
为了绘制股票周K线图,编写 mpf_week.py 如下
# coding: utf-8
""" 绘制股票周K线图 """
import os, sys
import datetime
import matplotlib.pyplot as plt
import mplfinance as mpf
import pandas as pd
#import tushare as tsif len(sys.argv) ==2:scode = sys.argv[1]
else:print('usage: python mpf_week.py scode ')sys.exit(1)if len(scode) !=6:print('stock code length: 6')sys.exit(2)path = './data/'
f1 = 'w'+ scode +'.csv'
df = pd.read_csv(path+f1, parse_dates=True, index_col=1 )
#print(df.head())
df = df[ df.index >'20230101']
print(df.tail())
if len(df) <10:print(" len(df) <10 ")sys.exit(2)#df.index = pd.to_datetime(df.date)
#print(mpf.available_styles())
title = scode+' week'
mpf.plot(df, style='charles', mav=(5,10,20,30), volume=True, title=title)
# 线图
#mpf.plot(df, type='line', mav=(5,10,20), title=title)
# OHLC图
#mpf.plot(df, type='ohlc', mav=(5,10,20), title=title)
# 烛台图, K线图
mpf.plot(df, type='candle', mav=(5,10,25,50), volume=True, title=title)
# 砖形图( Renko chart)是一种只使用价格变动构建的图表
#mpf.plot(df, type='renko', mav=(5,10,20), title=title)
# 点数图,简称 P&F图,它在不考虑时间流逝的情况下绘制资产的价格走势
#mpf.plot(df, type='pnf',pnf_params=dict(box_size=0.03),style='starsandstripes', title=title)
运行 python mpf_week.py 601225
为了绘制股票月K线图,编写 mpf_month.py 如下
# coding: utf-8
""" 绘制股票月K线图 """
import os, sys
import datetime
import matplotlib.pyplot as plt
import mplfinance as mpf
import pandas as pd
#import tushare as tsif len(sys.argv) ==2:scode = sys.argv[1]
else:print('usage: python mpf_month.py scode ')sys.exit(1)if len(scode) !=6:print('stock code length: 6')sys.exit(2)path = './data/'
f1 = 'm'+ scode +'.csv'
df = pd.read_csv(path+f1, parse_dates=True, index_col=1 )
#print(df.head())
df = df[ df.index >'20190101']
print(df.tail())
if len(df) <10:print(" len(df) <10 ")sys.exit(2)#df.index = pd.to_datetime(df.date)
#print(mpf.available_styles())
title = scode+' month'
mpf.plot(df, style='charles', mav=(5,10,20,30), volume=True, title=title)
# 线图
#mpf.plot(df, type='line', mav=(5,10,20), title=title)
# OHLC图
#mpf.plot(df, type='ohlc', mav=(5,10,20), title=title)
# 烛台图, K线图
mpf.plot(df, type='candle', mav=(6,12,24,36), volume=True, title=title)
# 砖形图( Renko chart)是一种只使用价格变动构建的图表
#mpf.plot(df, type='renko', mav=(5,10,20), title=title)
# 点数图,简称 P&F图,它在不考虑时间流逝的情况下绘制资产的价格走势
#mpf.plot(df, type='pnf',pnf_params=dict(box_size=0.03),style='starsandstripes', title=title)
运行 python mpf_month.py 601225