【python】数据分析学习——tushare(使用 jupyter notebook)

获取数据—— 股票代码:000001.SZ

                       时间:从 2017-07-20 到 2020-07-20

import tushare as ts
import pandas_datareader as pda
import matplotlib.pyplot as plt
import numpy as np

pro = ts.pro_api('********') 
df = pro.daily(ts_code='000001.SZ', start_date='20170720', end_date='20200720')

#数据按日期正序排序,并设置日期为索引
df = df.set_index('trade_date')
df = df.sort_index()
df

 

df['close'].plot(figsize = (15,7))

 计算MA均线指标参数:5、10、50、120天

df['MA5'] = df['close'].rolling(5).mean()
df['MA10'] = df['close'].rolling(10).mean()
df['MA50'] = df['close'].rolling(50).mean()
df['MA120'] = df['close'].rolling(120).mean()
df
df[['close','MA5','MA10','MA50','MA120']].plot(figsize = (15,7))
plt.grid(True)

#去掉空值
data = df[['close','MA5','MA10','MA50','MA120']].dropna()
data['MA5-MA10'] = data['MA5']-data['MA10']
data['MA10-MA50'] = data['MA10']-data['MA50']
data['MA5_10-MA10_50'] = data['MA5-MA10']-data['MA10-MA50']
data.describe()

根据上面的数据分析给出SD,后期再不断调整。

SD = -0.6

#生成交易信号
data['signal'] = np.where(data['MA5_10-MA10_50']> SD,1,0)
data['signal'] = np.where(data['MA5_10-MA10_50']< -SD,-1,data['signal'])
data
#计算收益率 算数收益率 对数收益率
data['return'] = (data['close']-data['close'].shift(1))/data['close'].shift(1)

#累积收益率
data['stra_re'] = data['signal'].shift(1) * data['return']

data[['return','stra_re']].cumsum().plot(figsize = (15,7))
plt.grid(True)

data['stra_sum'] = data['stra_re'].cumsum()
print(data['stra_sum'].describe())

根据如上数据,应该是没有亏损且能够获利。

 

 

 

 

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值