Python股票量化交易到入门实战03

发布日期:2021-01-30 08:357 文章来源:友链网 点击:

通过对于plt的表现我们可以了解到plt能够实现我们很多东西,比如数据可视化,比如对于关键点位置进行说明,比如对于区间进行显示,比如对于柱状图的书写,都可以让我们更加形象具体精准的发现数据信息以及表达的意思。

其实对于plt库中或者其他库中我们一定要懂得几个道理:

理论其实不难,难的是如何去进行布局,通过合理的布局和标记使得自己的意思能够清晰的表达出来,从这点来讲,我们可以从自己的实际简单业务来培养,或者通过他人的案例来参考和学习,调整自身的思路都是不错的。

看书只是给我们一个更加专业系统的搜索提供帮助,也是为我们在搭建新的业务需要的时候提供一种思路,通过基础去启迪我们的思维,不要怕错,不要怕难,毕竟能够遇到的问题基本上百度上面都有。

要勇于开拓思维,举一反三。

是以为文。

5.2.6直方图的绘制【用于绘制正态分布等】

import pandas as pd
import numpy as np
import time
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']# 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号

fig=plt.figure(figsize=(12,8))
ax=fig.add_subplot(111)

ax.hist(np.random.normal(loc=0,scale=1,size=1000),bins=50,density=False,color='r')
#这里要注意一点的是,ax.hist只接受一条数据,不能接受多条数据。
ax.set_xlabel('样本值',fontsize=15)
ax.set_ylabel('频数',fontsize=15)

ax.set_title('正态分布直方图',fontsize=25)

plt.show()
Python股票量化交易到入门实战03

 

5.2.7K线图的绘制:

以上两个案例我们可以搭建成交量的展示,还有就是涨跌幅的展示,现在我们将通过candlestics2_ochl()函数进行K线绘制。

import pandas as pd
import numpy as np
import time
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']# 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
fig=plt.figure(figsize=(8,6))
ax=fig.add_subplot(111)
#导入数据,数据预处理
df=pd.read_csv('sh600000.csv')
df['date']=pd.to_datetime(df['date'])
df=df.sort_values(by='date')
#截取数据,数据太长无法显示
df=df[-20:]
df=df.reset_index(drop=True)



#引入新函数
import  mpl_finance as mpf
#书本用的list格式,笔者尝试用了一下series,这样子可以减少格式的转换。
mpf.candlestick2_ohlc(ax,df['open'],df['high'],df['low'],df['close'],width=0.5,
                     colorup='r',colordown='g')
#推导式,格式化时间
data_index=[p.strftime("%Y-%m-%d ") for p in df['date']]
#长度
ax.set_xlim(0,10)
#间隔
ax.set_xticks(np.arange(0,10))
#接收list格式,一个参数。
ax.set_xticklabels(data_index,rotation=45)
ax.set_xlabel('日期',fontsize=5)
ax.set_ylabel('价格',fontsize=15)
ax.set_title('日k线图',fontsize=15)

plt.show()

Python股票量化交易到入门实战03

浦发银行的走势

5.3图形对象属性参数的调节

5.4多子图对象的创建和布局:

这里我们来将个股的数据进行可视化,任务为展示浦发银行的K线图走势,均线走势以及成交量。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import mplfinance as mpf
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = 'SimHei'


#导入数据
df=pd.read_csv('sh600000.csv')
df['date']=pd.to_datetime(df['date'],format='%Y-%m-%d')
df=df.sort_values(by='date')
# df.index=df.pop('date')
df=df.set_index('date')
df=df['2017':'2019']#设计成这个样子,就可以进行封装,调参,测试了。

df=df[[ 'open', 'high', 'low', 'close','volume']]
#因为,mpf会自动识别这五个参数,所以为了防止报错,就取这几个数,防止报错。

#设置参数
my_color = mpf.make_marketcolors(up='red',#上涨时为红色
                                 down='green',#下跌时为绿色
                                 edge='i',#隐藏k线边缘
                                 volume='in',#成交量用同样的颜色
                                 inherit=True)
#设置网格
my_style = mpf.make_mpf_style(gridaxis='both',#设置网格
                           gridstyle='-.',
                           y_on_right=True,
                            marketcolors=my_color)

#生成3条均线
df["sma5"] = df["close"].rolling(5).mean()
df["sma10"] = df["close"].rolling(10).mean()
df["sma30"] = df["close"].rolling(30).mean()
#精确小数点,提高计算精度
df=df.round(2)
#初始化信号
df['sign']=0

#生成信号
for i in range(1,len(df)):
    if df.sma5.iloc[i]>df.sma10.iloc[i] and df.sma5.iloc[i-1]<df.sma10.iloc[i-1]:
        df.sign.iloc[i]=1
    if df.sma5.iloc[i]<df.sma10.iloc[i] and df.sma5.iloc[i - 1]>df.sma10.iloc[i - 1]:
        df.sign.iloc[i] =-1
#生成买点位置
df['buysign']=df[df['sign']>0]['sign']
#生成卖点位置
df['sellsign']=df[df['sign']<0]['sign']
#将均线,买点,卖点信号设置好,然后准备传参
add_plot=[mpf.make_addplot(df[['sma5','sma10']]),
          mpf.make_addplot(df['buysign'],scatter=True,markersize=80,marker='^',color='r'),
          mpf.make_addplot(df['sellsign'],scatter=True,markersize=80,marker='v',color='g')]
#接受设置好的参数
mpf.plot(df,type='candle',
         addplot=add_plot,
         style=my_style,
         volume=True,#展示成交量副图
         figratio=(2,1),#设置图片大小
         figscale=5)

效果图:

Python股票量化交易到入门实战03

 

Python股票量化交易到入门实战03

 

感悟: