Pandas的DataFrame基础操作巩固  绘制股票均线 金叉和死叉

Pandas的DataFrame基础操作巩固 绘制股票均线 金叉和死叉

计算股票历史数据的5日均线和30日均线

什么是均线?

对于每一个交易日,都可以计算出前N天移动的平均值,然后把这些移动平均值连起来,成为一条线,就叫做N日移动平均线。移动平均线常用线有5天、10天、30天、60天、120天和240天的指标。

  • 5天和10天的是短线操作的参照指标,称作日均线指标。
  • 30天和60天的是中期均线指标,称作季均线指标。
  • 120天和240天的是长期均线指标,称作年均线指标。
均线计算:MA=(C1+C2+C3+C4+…+Cn)/ N C:某日收盘件 N:移动平均周期(天数)

这里的数据还是通过tushare模块获取的。你不需要理解太多,计算均值在pandas中有固定的方法。这里还是先读取本地的数据:

import pandas as pd
from pandas import Series,DataFrame
import numpy as np

df=pd.read_csv('./k_code.csv')  #读取本地的数据
df.drop(labels=['ma10','ma20','v_ma5','v_ma10','v_ma20','ma5'],axis=1,inplace=True)  # 删掉无用的列
df.drop(labels=['price_change','p_change'],axis=1,inplace=True) # 删掉无用的列
df['date']=pd.to_datetime(df['date']) # 将date列转换为时间序列
df.set_index(df['date'],inplace=True) # 设定行索引
df.drop(labels='date',axis=1,inplace=True) # 删掉date列

                open	high	close	low	volume
date			
————————————————————————————————————————————————————————		
2020-05-08	1317.00	1338.00	1314.61	1308.51	29078.68
2020-05-07	1299.40	1314.99	1312.00	1293.00	27934.74
2020-05-06	1251.00	1300.00	1300.00	1250.00	35834.81
2020-04-30	1271.00	1285.01	1265.70	1258.88	24660.87
2020-04-29	1277.80	1288.10	1274.90	1258.00	23444.06
...	...	...	...	...	...

计算5日均值

# 计算5日均值
md5=df['close'].rolling(5).mean()  # 只有第五天才会有均值
date
2020-05-08         NaN
2020-05-07         NaN
2020-05-06         NaN
2020-04-30         NaN
2020-04-29    1293.442
                ...   
Name: close, Length: 607, dtype: float64

计算30日均值

md30=df['close'].rolling(30).mean() # 只有第30天才会有均值
date
2020-05-08           NaN
2020-05-07           NaN
2020-05-06           NaN
2020-04-30           NaN
2020-04-29           NaN
                 ...    
2017-11-14    656.950000
2017-11-13    656.943000
2017-11-10    656.777000
2017-11-09    655.723667
2017-11-08    654.570333
Name: close, Length: 607, dtype: float64

借助matplotlib模块绘制均值:

import matplotlib.pyplot as plt
# plt.plot(md5) # 绘制5日均线
# plt.plot(md30) # 绘制30日均线

# 为了能够看出差别,切一下数据
# plt.plot(md5[50:150]) # 绘制5日均线
# plt.plot(md30[50:150]) # 绘制30日均线

# 添加信息
plt.xlabel('data') # x轴信息均值
plt.ylabel('mean_close') # y轴信息为均值

plt.plot(md5[50:150],label='md5') # 绘制5日均线
plt.plot(md30[50:150],label='md30') # 绘制30日均线
plt.legend()

效果

Pandas的DataFrame基础操作巩固  绘制股票均线 金叉和死叉

金叉和死叉

分享到 :

发表评论

登录... 后才能评论