依赖库:
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 ts
if 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 600519
为了绘制股票周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 ts
if 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 600519
为了绘制股票月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 ts
if 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 600519