python 计算走势角度
- 2019 年 11 月 1 日
- 筆記
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44580977/article/details/102215439
使用tushare 获取所有上市股票, 通过daily函数获取股票信息, 再使用np.rad2deg()方法转换为角度值
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