前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 计算走势角度

python 计算走势角度

作者头像
多凡
发布2019-11-01 09:26:39
1.2K0
发布2019-11-01 09:26:39
举报
文章被收录于专栏:sringboot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/102215439

使用tushare 获取所有上市股票, 通过daily函数获取股票信息, 再使用np.rad2deg()方法转换为角度值

代码语言:javascript
复制
import tushare as ts
token='......'
#初始化pro接口
pro = ts.pro_api(token)
#查询当前所有正常上市交易的股票列表
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
print(data.head())
"""
     ts_code  symbol  name area industry list_date
0  000001.SZ  000001  平安银行   深圳       银行  19910403
1  000002.SZ  000002   万科A   深圳     全国地产  19910129
2  000004.SZ  000004  国农科技   深圳     生物制药  19910114
3  000005.SZ  000005  世纪星源   深圳     环境保护  19901210
4  000006.SZ  000006  深振业A   深圳     区域地产  19920427
"""
print(list(data.ts_code)[:20])#只打印20个股票代码
"""
['000001.SZ', '000002.SZ', '000004.SZ', '000005.SZ', '000006.SZ', '000007.SZ', '000008.SZ', '000009.SZ', '000010.SZ', '000011.SZ', '000012.SZ', '000014.SZ', '000016.SZ', '000017.SZ', '000018.SZ', '000019.SZ', '000020.SZ', '000021.SZ', '000023.SZ', '000025.SZ']
"""
code_data = pro.daily(ts_code=code, start_date=start, end_date=end)
code_data.fillna(method='bfill', inplace=True) # 后一个数据填充NAN1
code_data.index = pd.to_datetime(code_data.trade_date)
code_data.sort_index(inplace=True)
code_data.drop(axis=1, columns='trade_date',inplace=True)

# 计算走势角度 , 就是斜率对应的度数
def stocks_data_to_deg(stocklist,start,end):
    deg_data={}
    for code in stocklist:
        code_data = pro.daily(ts_code=code, start_date=start, end_date=end)
        code_data.fillna(method='bfill', inplace=True) # 后一个数据填充NAN1
        code_data.index = pd.to_datetime(code_data.trade_date)
        code_data.sort_index(inplace=True)
        code_data.drop(axis=1, columns='trade_date',inplace=True)
        print(code_data.head())
        print(code_data.info())
        try:
            y_arr = code_data.close.values
            x_arr = np.arange(0, len(y_arr))
            x_b_arr = sm.add_constant(x_arr)  # 添加常数列1
            model = regression.linear_model.OLS(y_arr, x_b_arr).fit()  # 使用OLS做拟合
            rad = model.params[1]  # y = kx + b :params[1] = k
            deg_data[code] = np.rad2deg(rad)  # 弧度转换为角度
        except:
            pass
    return deg_data

all_data = stocks_data_to_deg(list(data.ts_code),'20181001','20190401')
print(all_data)
#截取部分数据
"""
{'000001.SZ': 1.0748324272579852, '000002.SZ': 3.39547471012723, '000004.SZ': 1.5199149426182201, '000005.SZ': 0.48470466772102005, '000006.SZ': 0.6827509040282749, '000007.SZ': -0.2520083986815976, '000008.SZ': 0.2210732091541942, '000009.SZ': 1.0666473158989738, '000010.SZ': -0.5253119599667251, '000011.SZ': 0.8463307217664522, '000012.SZ': 0.6486313122116967, '000014.SZ': 1.163285490089819, '000016.SZ': 0.7006226825688889, '000017.SZ': 0.4274007275784671, '000018.SZ': 0.3153512046323943, '000019.SZ': 0.17441713367513342, '000020.SZ': 0.9886561800484499, '000021.SZ': 1.6740796902283464, '000023.SZ': 2.61835428690094, '000025.SZ': 2.5748214089900228}
"""
print(all_data['000002.SZ'])
#3.39547471012723
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档