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