日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用tushare获取股票数据并计算历史概念板块的平均涨跌幅

發布時間:2023/12/14 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用tushare获取股票数据并计算历史概念板块的平均涨跌幅 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

概述

前提準備

編碼

?


?

?


概述

有些板塊的漲跌可能會有周期性,比如某個時間段某個板塊大概率會上漲,為了研究這個內容,我們需要去查詢某段時間間隔的板塊平均漲跌幅,這里我單獨計算漲幅和跌幅。

但是這個數據不能通過行情軟件查詢,所以可以使用tushare提供的數據接口進行處理。

備注:因為權限問題,所以調用這個封裝接口后,調用需要花費的時間很多,需要暫停一分鐘調用五個板塊的數據。

同時筆者并不擅長使用python,所以代碼會寫得很簡單,同時有詳細的注解,方便大家參考,感謝支持。

前提準備

需要去https://waditu.com/注冊賬號,申請專用的appkey,才能進行調用哦,

這里主要調用了兩個接口

同花順板塊指數:用來獲取板塊指數代碼

同花順板塊指數行情:通過上面的指數代碼獲取板塊數據。

編碼

首先導入模塊

?

import tushare as ts #導入模塊 from flask import Flask,render_template,request #導入模塊 import time import jsonts.set_token('你的key') pro = ts.pro_api()

然后這里調用同花順板塊指數接口,獲取板塊代碼和名稱封裝到字典中

#板塊列表 block_list = pro.ths_index()#概念板塊列表 block_list_code={} #key:代碼 val:板塊名稱 #最終數據 list_obj = []#獲取行 for i in range(0,len(block_list)):if block_list.loc[i,'exchange']=='A':#查詢A股block_list_code[block_list.loc[i,'ts_code']]=block_list.loc[i,'name']dic_keys = list(block_list_code.keys()) #板塊代碼 dic_vals = list(block_list_code.values()) #板塊名稱

?

然后用上面的數據獲取數據,同時處理計算平均漲跌幅

#權限限制,每分鐘查詢五個板塊的漲跌信息 for i in range(0,len(block_list_code)):up_sum = 0 #單個板塊的總漲幅down_sum = 0 #單個板塊的總跌幅up_ave = 0 #單個板塊的平均漲幅down_ave = 0 #單個板塊的平均跌幅count = 0 #漲的個數#查詢板塊行情df_daily = pro.ths_daily(ts_code=dic_keys[i], start_date=start_date, end_date=end_date, fields='ts_code,trade_date,open,close,high,low,pct_change')#求平均漲幅和跌幅for x in range(0,len(df_daily)):#判斷有漲跌幅,不然會出錯,None和Int不能運算if df_daily.loc[x,'pct_change'] != None:if df_daily.loc[x,'pct_change']>0:#上漲up_sum += df_daily.loc[x,'pct_change'] #累加漲幅count += 1else:down_sum += df_daily.loc[x,'pct_change']#累加跌幅#求平均漲幅if count==0:up_ave=0else:up_ave = round(up_sum/count,4) #求平均跌幅if (len(df_daily)-count)==0:down_ave=0else:down_ave = round(down_sum/(len(df_daily)-count),4) #為了省事用字典代替對象保存我們需要的數據obj_dic = {'name':dic_vals[i],'code':dic_keys[i],'up_ave':str(up_ave)+"%",'down_ave':str(down_ave)+"%"}list_obj.append(obj_dic)#取模暫停if (i+1)%5 == 0:time.sleep(62) #暫停62秒 #根據漲幅排序 list_obj2 = sorted(list_obj,key = lambda e:e.__getitem__('up_ave'),reverse=True)

最后我是封裝到了flask中,然后可以查詢一下2019-2-11到2019-2-28日,也就是2019年春節過后哪些板塊漲得比較好。

@app.route("/get_plate_ave",methods = ["GET"]) def get_plate_ave():start_date = request.args.get("start_date")end_date = request.args.get("end_date")#板塊列表block_list = pro.ths_index()#概念板塊列表block_list_code={} #key:代碼 val:板塊名稱#最終數據list_obj = []#獲取行for i in range(0,len(block_list)):if block_list.loc[i,'exchange']=='A':#查詢A股block_list_code[block_list.loc[i,'ts_code']]=block_list.loc[i,'name']dic_keys = list(block_list_code.keys()) #板塊代碼dic_vals = list(block_list_code.values()) #板塊名稱#權限限制,每分鐘查詢五個板塊的漲跌信息for i in range(0,len(block_list_code)):up_sum = 0 #單個板塊的總漲幅down_sum = 0 #單個板塊的總跌幅up_ave = 0 #單個板塊的平均漲幅down_ave = 0 #單個板塊的平均跌幅count = 0 #漲的個數#查詢板塊行情df_daily = pro.ths_daily(ts_code=dic_keys[i], start_date=start_date, end_date=end_date, fields='ts_code,trade_date,open,close,high,low,pct_change')#求平均漲幅和跌幅for x in range(0,len(df_daily)):#判斷有漲跌幅,不然會出錯,None和Int不能運算if df_daily.loc[x,'pct_change'] != None:if df_daily.loc[x,'pct_change']>0:#上漲up_sum += df_daily.loc[x,'pct_change'] #累加漲幅count += 1else:down_sum += df_daily.loc[x,'pct_change']#累加跌幅#求平均漲幅if count==0:up_ave=0else:up_ave = round(up_sum/count,4) #求平均跌幅if (len(df_daily)-count)==0:down_ave=0else:down_ave = round(down_sum/(len(df_daily)-count),4) #為了省事用字典代替對象保存我們需要的數據obj_dic = {'name':dic_vals[i],'code':dic_keys[i],'up_ave':str(up_ave)+"%",'down_ave':str(down_ave)+"%"}list_obj.append(obj_dic)#取模暫停if (i+1)%5 == 0:time.sleep(62) #暫停62秒#根據漲幅排序list_obj2 = sorted(list_obj,key = lambda e:e.__getitem__('up_ave'),reverse=True)return json.dumps(list_obj2,ensure_ascii=False)

?

?

?

總結

以上是生活随笔為你收集整理的使用tushare获取股票数据并计算历史概念板块的平均涨跌幅的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。