DataFrame基础操作巩固——股票分析(二)

需求二:双均线策略制定

任务一:计算该股票历史数据的5日均线和60日均线

  • 什么是均线?
  • 对于每一个交易日,都可以计算出前N天的移动平均值,然后把这些移动平均值连起来,成为一条线,就叫做N日移动平均线。移动平均线常用线有5天、10天、30天、60天、120天和240天的指标。
  • 5天和10天的是短线操作的参照指标,称作日均线指标;
  • 30天和60天的是中期均线指标,称作季均线指标;
  • 120天和240天的是长期均线指标,称作年均线指标。
  • 均线计算方法:MA=(C1+C2+C3+...+Cn)/N,C:某日收盘价 N:移动平均周期

1、处理数据

import pandas as pd
df=pd.read_csv('./maotai.csv').drop(labels='Unnamed: 0.1',axis=1)
df
#将date列转为时间序列且其作为源数据的行索引
df['date']=pd.to_datetime(df['date'])
df.set_index('date',inplace=True)
df.head()

 2、计算均线

  • rolling(),pandas里面滚动选择数据,rolling(2)是连续计算和,x1+x2,x2+x3,x3+x4
ma5=df['close'].rolling(5).mean()
ma30=df['close'].rolling(30).mean()

3、画图

  • %matplotlib inline可以在ipython编译器里面直接使用,功能是可以内嵌画图,并且可以省略掉plt.show()这一步。
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(ma5[50:80])
plt.plot(ma30[50:80])

 任务二:分析输出所有金叉日期和死叉日期

  • 股票分析技术中的金叉和死叉,可以简单解释为:
  • 分析指标中的两根线,一根为短时间内的指标线,另一根为较长时间的指标线。
  • 如果短时间的指标线方向拐头向上,并且穿过了较长时间的指标线,这种状况叫“金叉”。
  • 如果短时间的指标线方向拐头向下,并且穿过了较长时间的指标线,这种状况叫“死叉”。
  • 一般情况下,出现金叉后,操作趋向买入;死叉则卖出。当然,金叉和死叉只是分析指标之一,要和其他很多指标配合使用,才能增加操作的准确性。

 如上图白色的线是短期均线,黄色的线是中期均线,第一个交叉点,白色的线是向上拐,则说明这个点金叉,可以买入与。交点左边中期均值大于短期均值,交点右边中期均值小于短期均值。

Q1:如果我从2010年1月1日开始,初始资金为100000元,金叉尽量买入,死叉全部卖出,则到今天为止,我的炒股收益率如何?

思考:如果s1=ma5<ma30,s2=ma5>ma30,满足S1是TRUE,满足S2是FALSE,那么金叉对于s1就是T到F,死叉就是F到T,但这个对于s2不适用,因为s1和s2判断对错是相反的所以要统一起来。我们用到了逻辑与非。

图片如果还是看不懂我们可以整理一下表格

#空值不能比较大小,所以找30个数据往后的数据
ma5=ma5[30:]
ma30=ma30[30:]
s1=ma5<ma30
s2=ma5>ma30

 1、判断金叉

gloden_ex = ~(s1 | s2.shift(1))        #False代表金叉
gloden_date = df.loc[gloden_ex].index
gloden_date
Int64Index([ 120,  190,  301,  330,  386,  412,  428,  442,  502,  593,
            ...
            4531, 4565, 4581, 4681, 4690, 4711, 4795, 4836, 4925, 4962],
           dtype='int64', length=104)

2、判断死叉

df=df[30:]
death_ex=s1&s2.shift(1)#判断死叉条件
death_ex##返回的是布尔值
df.loc[death_ex]##死叉对应行数据

 

death_date=df.loc[death_ex].index
death_date
Int64Index([ 135,  215,  317,  365,  391,  426,  432,  457,  591,  638,
            ...
            4554, 4574, 4657, 4689, 4701, 4733, 4823, 4867, 4948, 4996],
           dtype='int64', length=104)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值