Anaconda Navigator (Anaconda3)
Jupyter
所用到库
import mplfinance as mpf
import tushare as ts
import pandas as pd
import numpy as np
import datetime
import talib as tb
token='您的token'
ts.set_token(token)
pro=ts.pro_api()
def get_stock(num):
stock=num
#设置查询时间————一个月
today = datetime.datetime.today()
startday=today+datetime.timedelta(days=-365)
today = today.strftime('%Y%m%d')
startday =startday.strftime('%Y%m%d')
#获取股票数据
stock_df = pro.daily(ts_code=stock, start_date=startday,end_date=today)
#将trade_date转换为时间格式
stock_df['trade_date'] = pd.to_datetime(stock_df['trade_date'])
#倒序排列 iloc[::-1]
stock_df=stock_df.iloc[::-1]
#将列vol改为volume
stock_df=stock_df.rename(columns={'vol':'volume'})
#保存为csv文件,不保存索引
stock_df.to_csv('%s.csv'%stock,index=False)
#读取csv文件,将trade_date作为行索引
stock_df=pd.read_csv('%s.csv'%stock,index_col=1)
#将索引转为时间格式
stock_df.index = pd.to_datetime(stock_df.index)
return stock_df
stock_df = get_stock('000543.SZ')
stock_df.head()
MACD
#MACD
macd, macdsignal, macdhist = tb.MACD(stock_df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
macd=pd.DataFrame(macd,columns=['0'])
macdsignal=pd.DataFrame(macdsignal,columns=['0'])
macdhist=pd.DataFrame(macdhist,columns=['0'])
MACD在应用上应先行计算出快速(一般选12日)移动平均值与慢速(一般选26日)移动平均值。以这两个数值作为测量两者(快速与慢速线)间的“差离值”依据。所谓“差离值”(DIF),即12日EMA数值减去26日EMA数值。因此,在持续的涨势中,12日EMA在26日EMA之上。其间的正差离值(+DIF)会愈来愈大。反之在跌势中,差离值可能变负(-DIF),此时是绝对值愈来愈大。至于行情开始回转,正或负差离值要缩小到一定的程度,才真正是行情反转的信号。MACD的反转信号界定为“差离值”的9日移动平均值(9日DIF)。
KDJ
#KDJ
slowk, slowd =tb.STOCH(stock_df['high'], stock_df['low'],stock_df['close'], fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
slowk=pd.DataFrame(slowk,columns=['0'])
slowd=pd.DataFrame(slowd,columns=['0'])
slowj=3*slowk['0'] -2*slowd['0']
slowj=pd.DataFrame(slowj,columns=['0'])
随机指标KDJ一般是用于股票分析的统计体系,根据统计学原理,通过一个特定的周期(常为9日、9周等)内出现过的最高价、最低价及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值RSV,然后根据平滑移动平均线的方法来计算K值、D值与J值,并绘成曲线图来研判股票走势。
RSI
#RSI
rsi=tb.RSI(stock_df.open, timeperiod=12)
rsi=pd.DataFrame(rsi_df,columns=['0'])
相对强弱指标RSI是根据一定时期内上涨点数和下跌点数之和的比率制作出的一种技术曲线。能够反映出市场在一定时期内的景气程度。
#设置mplfinance的蜡烛颜色
#up为阳线颜色
#down为阴线颜色
my_color = mpf.make_marketcolors(
up='darkslateblue',
down='limegreen',
edge='inherit',
wick='inherit',
volume='inherit'
)
# 设置图形风格
# figcolor:设置图表的背景色
# y_on_right:设置y轴位置是否在右
# gridaxis:设置网格线位置
# gridstyle:设置网格线线型
# gridcolor:设置网格线颜色
my_style = mpf.make_mpf_style(
marketcolors=my_color,
figcolor='#EEEEEE',
y_on_right=False,
gridaxis='both',
gridstyle='-.',
gridcolor='#E1E1E1'
)
# 设置基本参数
# type:绘制图形的类型,有candle, renko, ohlc, line等
# 此处选择candle,即K线图
# mav(moving average):均线类型,此处设置5,10,30日线
# volume:布尔类型,设置是否显示成交量,默认False
# title:设置标题
# y_label:设置纵轴主标题
# y_label_lower:设置成交量图一栏的标题
# figratio:设置图形纵横比
# figscale:设置图形尺寸(数值越大图像质量越高)
#datetime_format:设置日期显示格式
#xrotation:设置x坐标的转角度
kwargs = dict(
type='candle',
mav=(5,10,30),
volume=True,
title='%s'%(stock_df.iloc[0,0]),
ylabel='Price',
ylabel_lower='Volume',
figratio=(1200/72,480/60),
figscale=3,
datetime_format='%Y-%m-%d',
xrotation=0
)
#设置配图
add_plot = [
mpf.make_addplot(macdhist.tail(60),type='bar',panel=2,ylabel='MACD',color='darkslateblue'),
mpf.make_addplot(macd.tail(60),panel=2,color='orangered'),
mpf.make_addplot(macdsignal.tail(60),panel=2,color='limegreen'),
mpf.make_addplot(rsi.tail(60),panel=3,ylabel='RSI'),
mpf.make_addplot(slowk.tail(60),panel=4,color='darkslateblue',ylabel='KDJ'),
mpf.make_addplot(slowd.tail(60),panel=4,color='limegreen'),
mpf.make_addplot(slowj.tail(60),panel=4,color='orangered')
]
mpf.plot(stock_df.tail(60),**kwargs,addplot=add_plot,style=my_style)
import mplfinance as mpf
import tushare as ts
import pandas as pd
import numpy as np
import datetime
import talib as tb
%matplotlib qt5
token='722a97e6b7907534837b7dab985a012166179358cc659fe061231317'
ts.set_token(token)
pro=ts.pro_api()
def get_stock(num):
stock=num
#设置查询时间————一个月
today = datetime.datetime.today()
startday=today+datetime.timedelta(days=-365)
today = today.strftime('%Y%m%d')
startday =startday.strftime('%Y%m%d')
#获取股票数据
stock_df = pro.daily(ts_code=stock, start_date=startday,end_date=today)
#将trade_date转换为时间格式
stock_df['trade_date'] = pd.to_datetime(stock_df['trade_date'])
#倒序排列 iloc[::-1]
stock_df=stock_df.iloc[::-1]
#将列vol改为volume
stock_df=stock_df.rename(columns={'vol':'volume'})
#保存为csv文件,不保存索引
stock_df.to_csv('%s.csv'%stock,index=False)
#读取csv文件,将trade_date作为行索引
stock_df=pd.read_csv('%s.csv'%stock,index_col=1)
#将索引转为时间格式
stock_df.index = pd.to_datetime(stock_df.index)
return stock_df
stock_df = get_stock('000543.SZ')
#设置mplfinance的蜡烛颜色
#up为阳线颜色
#down为阴线颜色
my_color = mpf.make_marketcolors(
up='darkslateblue',
down='limegreen',
edge='inherit',
wick='inherit',
volume='inherit'
)
# 设置图形风格
# figcolor:设置图表的背景色
# y_on_right:设置y轴位置是否在右
# gridaxis:设置网格线位置
# gridstyle:设置网格线线型
# gridcolor:设置网格线颜色
my_style = mpf.make_mpf_style(
marketcolors=my_color,
figcolor='#EEEEEE',
y_on_right=False,
gridaxis='both',
gridstyle='-.',
gridcolor='#E1E1E1'
)
# 设置基本参数
# type:绘制图形的类型,有candle, renko, ohlc, line等
# 此处选择candle,即K线图
# mav(moving average):均线类型,此处设置5,10,30日线
# volume:布尔类型,设置是否显示成交量,默认False
# title:设置标题
# y_label:设置纵轴主标题
# y_label_lower:设置成交量图一栏的标题
# figratio:设置图形纵横比
# figscale:设置图形尺寸(数值越大图像质量越高)
#datetime_format:设置日期显示格式
#xrotation:设置x坐标的转角度
kwargs = dict(
type='candle',
mav=(5,10,30),
volume=True,
title='%s'%(stock_df.iloc[0,0]),
ylabel='Price',
ylabel_lower='Volume',
figratio=(1200/72,480/60),
figscale=3,
datetime_format='%Y-%m-%d',
xrotation=0
)
#RSI
rsi=tb.RSI(stock_df.open, timeperiod=12)
rsi=pd.DataFrame(rsi_df,columns=['0'])
#MACD
macd, macdsignal, macdhist = tb.MACD(stock_df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
macd=pd.DataFrame(macd,columns=['0'])
macdsignal=pd.DataFrame(macdsignal,columns=['0'])
macdhist=pd.DataFrame(macdhist,columns=['0'])
#KDJ
slowk, slowd =tb.STOCH(stock_df['high'], stock_df['low'],stock_df['close'], fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
slowk=pd.DataFrame(slowk,columns=['0'])
slowd=pd.DataFrame(slowd,columns=['0'])
slowj=3*slowk['0'] -2*slowd['0']
slowj=pd.DataFrame(slowj,columns=['0'])
#设置配图
add_plot = [
mpf.make_addplot(macdhist.tail(60),type='bar',panel=2,ylabel='MACD',color='darkslateblue'),
mpf.make_addplot(macd.tail(60),panel=2,color='orangered'),
mpf.make_addplot(macdsignal.tail(60),panel=2,color='limegreen'),
mpf.make_addplot(rsi.tail(60),panel=3,ylabel='RSI'),
mpf.make_addplot(slowk.tail(60),panel=4,color='darkslateblue',ylabel='KDJ'),
mpf.make_addplot(slowd.tail(60),panel=4,color='limegreen'),
mpf.make_addplot(slowj.tail(60),panel=4,color='orangered')
]
mpf.plot(stock_df.tail(60),**kwargs,addplot=add_plot,style=my_style)
附matplotlib配色表matplotlib颜色表 - FINTHON
创作不易,码代码也不易,感谢鼓励!!