<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 板塊異動類 > 來源:https://uqer.io/community/share/54ccf06af9f06c276f651a5a 本代碼主要實現以下功能 + 由`DataAPI.EquIndustryGet`獲得每只個股的所屬行業,這里采用的是申萬二級分類; + 根據個股行業獲得所有行業的成分股 + 根據成分股的每天漲幅和市值,獲得主題的加權漲幅,將其排序,即得到每日漲跌幅最大的行業前十 + 根據成分股出現的漲跌停次數,獲得漲跌停比例最大的行業前十 + 根據成分股的換手率,獲得換手率最大和最小的行業前十 + 將每個行業所包含的個股,儲存到csv文件中,如果對某個行業感興趣,可以進一步查看其成分股 此處定義了一些函數,使得代碼功能更明確 ```py def GetIndInfo(universe,field): #獲得行業數據 num = 100 count_num = len(universe)/num if count_num>0: indus_df = pd.DataFrame({}) for i in range(count_num): sub_ind = DataAPI.EquIndustryGet(secID=universe[i*num:(i+1)*num],field=field) indus_df = pd.concat([indus_df,sub_ind]) sub_ind = DataAPI.EquIndustryGet(secID=universe[(i+1)*num:],field=field) indus_df = pd.concat([indus_df,sub_ind]) else: indus_df = DataAPI.EquIndustryGet(secID=universe,field=field) filed_new = ['secID']+field indus_df = indus_df[filed_new] return indus_df def GetMktInfo(secID,beginDate,endDate,field): #獲得市場行情數據 num = 50 count_num = len(secID)/num if count_num>0: MktInfo_df = pd.DataFrame({}) for i in range(count_num): sub_info = DataAPI.MktEqudGet(secID=secID[i*num:(i+1)*num],beginDate=beginDate,endDate=endDate,field=field) MktInfo_df = pd.concat([MktInfo_df,sub_info]) sub_info = DataAPI.MktEqudGet(secID=secID[(i+1)*num:],beginDate=beginDate,endDate=endDate,field=field) MktInfo_df = pd.concat([MktInfo_df,sub_info]) else: MktInfo_df = DataAPI.MktEqudGet(secID=secID,beginDate=beginDate,endDate=endDate,field=field) return MktInfo_df def CountTime(): today = datetime.today() cal_date = Date.fromDateTime(today) if cal.isBizDay(cal_date): #如果是交易日,則判斷當天是不是在15點前 today_str = today.strftime("%Y%m%d") time1=" 15:05:00" ben_time = datetime.strptime(today_str+time1,"%Y%m%d %H:%M:%S") if today>ben_time: date = today_str else: #如果當天不是交易日,則獲得前一個交易日 cal_wd = cal.adjustDate(cal_date,BizDayConvention.Preceding) #Date格式 dtime_wd = cal_wd.toDateTime() #datetime格式 date = dtime_wd.strftime("%Y%m%d") return date ``` 獲得個股的行情數據,并以此來計算主題的:漲幅、漲跌停比例、換手率 ```py from datetime import timedelta cal = Calendar('China.SSE') universe = set_universe('A') indus_df = GetIndInfo(universe=universe,field =['secShortName','industryName2']) cnt_date = CountTime() #獲得可用的時期 field_mkt = ['preClosePrice','openPrice','highestPrice','lowestPrice','closePrice','turnoverRate','marketValue'] MktInfo_df = GetMktInfo(secID=universe,beginDate=cnt_date,endDate=cnt_date,field=field_mkt) ind_inc_dic = {} #記錄行業的漲幅 ind_gb_dic = {} #記錄行業的漲跌停數目 ind_turn_dic = {} #記錄行業的換手率 ind_tknm_dic = {} #記錄行業包含的個股 grouped = indus_df.groupby('industryName2') for name,group in grouped: ind_tknm_dic[name] = list(group['secShortName']) stk_list = list(group['secID']) sub_mkt_info = MktInfo_df[MktInfo_df.secID.isin(stk_list)] #計算行業漲跌幅 sub_mkt_info['inc_rate'] = (sub_mkt_info['closePrice']-sub_mkt_info['preClosePrice'])/sub_mkt_info['preClosePrice'] #獲得每個個股的漲跌幅 ind_inc = (sub_mkt_info['inc_rate']*sub_mkt_info['marketValue']).sum()/sub_mkt_info['marketValue'].sum() #獲得行業的漲跌幅,利用市值加權平均值計算 ind_inc_dic[name] = ind_inc num_good = len(sub_mkt_info[((sub_mkt_info['closePrice']-sub_mkt_info['preClosePrice'])/sub_mkt_info['preClosePrice']).round(2)==0.1]) #漲停的個股 num_bad = len(sub_mkt_info[((sub_mkt_info['preClosePrice']-sub_mkt_info['closePrice'])/sub_mkt_info['preClosePrice']).round(2)==0.1]) #跌停的個股 ind_gb_dic[name] = (num_good-num_bad)*1.0/len(group) turnover = sub_mkt_info['turnoverRate'].mean() #計算行業的平均換手率 ind_turn_dic[name] = turnover ``` 以下是將結果進行展示 ```py ind_turn_pd = pd.DataFrame.from_dict(ind_turn_dic,orient='index') ind_turn_pd.rename(columns={0:u'換手率'},inplace=True) ind_turn_pd = ind_turn_pd.sort(columns=u'換手率',ascending=False) ind_turn_pd1 = ind_turn_pd.sort(columns=u'換手率',ascending=True) print cnt_date+'換手率最大的行業前十:' ind_turn_pd[0:10] 20150130換手率最大的行業前十: ``` | | 換手率 | | --- | --- | | 視聽器材 | 0.046510 | | 基礎建設 | 0.042633 | | 房屋建設 | 0.036725 | | 計算機應用 | 0.036130 | | 環保工程及服務 | 0.035021 | | 營銷傳播 | 0.034763 | | 畜禽養殖 | 0.034093 | | 電力 | 0.033552 | | 農業綜合 | 0.032450 | | 裝修裝飾 | 0.032230 | ```py print cnt_date+'換手率最小的行業前十:' ind_turn_pd1[0:10] 20150130換手率最小的行業前十: ``` | | 換手率 | | --- | --- | | 石油開采 | 0.000900 | | 銀行 | 0.008894 | | 機場 | 0.009800 | | 航空運輸 | 0.010020 | | 飼料 | 0.010518 | | 高速公路 | 0.010583 | | 汽車整車 | 0.011491 | | 煤炭開采 | 0.011964 | | 其他交運設備 | 0.012071 | | 餐飲 | 0.012150 | ```py ind_gb_pd = pd.DataFrame.from_dict(ind_gb_dic,orient='index') ind_gb_pd.rename(columns={0:u'漲跌停比例'},inplace=True) ind_gb_pd = ind_gb_pd.sort(columns=u'漲跌停比例',ascending=False) ind_gb_pd1 = ind_gb_pd.sort(columns=u'漲跌停比例',ascending=True) print cnt_date+'漲停比例最大的行業前十:' ind_gb_pd[0:10] 20150130漲停比例最大的行業前十: ``` | | 漲跌停比例 | | --- | --- | | 視聽器材 | 0.200000 | | 貿易 | 0.086957 | | 物流 | 0.055556 | | 專業工程 | 0.055556 | | 互聯網傳媒 | 0.045455 | | 塑料 | 0.045455 | | 房地產開發 | 0.029630 | | 電力 | 0.017241 | | 家用輕工 | 0.000000 | | 保險 | 0.000000 | ```py print cnt_date+'跌停比例最大的行業前十:' ind_gb_pd1[0:10] 20150130跌停比例最大的行業前十: ``` | | 漲跌停比例 | | --- | --- | | 旅游綜合 | -0.066667 | | 計算機設備 | -0.051282 | | 電子制造 | -0.032258 | | 光學光電子 | -0.024390 | | 中藥 | -0.017857 | | 化學制品 | -0.006993 | | 專用設備 | 0.000000 | | 航運 | 0.000000 | | 農業綜合 | 0.000000 | | 采掘服務 | 0.000000 | ```py ind_inc_pd = pd.DataFrame.from_dict(ind_inc_dic,orient='index') ind_inc_pd = ind_inc_pd.sort(columns=0,ascending=False) ind_inc_pd.rename(columns={0:u'漲跌幅'},inplace=True) ind_inc_pd1 = ind_inc_pd.sort(columns=u'漲跌幅') print cnt_date+'漲幅最大的行業前十:' ind_inc_pd[0:10] ``` | | 漲跌幅 | | --- | --- | | 視聽器材 | 0.036822 | | 燃氣 | 0.018286 | | 種植業 | 0.015623 | | 房地產開發 | 0.006603 | | 農業綜合 | 0.005786 | | 水務 | 0.005265 | | 餐飲 | 0.004425 | | 動物保健 | 0.004262 | | 飲料制造 | 0.003649 | | 汽車服務 | 0.003630 | ```py print cnt_date+'跌幅最大的行業前十:' ind_inc_pd1[:10] 20150130跌幅最大的行業前十: ``` | | 漲跌幅 | | --- | --- | | 運輸設備 | -0.071812 | | 基礎建設 | -0.049886 | | 多元金融 | -0.041817 | | 鐵路運輸 | -0.040228 | | 保險 | -0.036876 | | 房屋建設 | -0.035251 | | 計算機應用 | -0.032599 | | 石油開采 | -0.028381 | | 林業 | -0.028153 | | 航空運輸 | -0.025830 | 將行業包含的個股信息儲存到csv文件中,可以進行更細致的查看行業信息 ```py ind_tk_pd = pd.DataFrame({}) for ind_nm,tk_list in ind_tknm_dic.items(): sub_pd = pd.DataFrame(tk_list) sub_pd[u'行業名稱'] = ind_nm ind_tk_pd = pd.concat([ind_tk_pd,sub_pd]) ind_tk_pd.rename(columns={0:u'成分股'},inplace=True) ind_tk_pd = ind_tk_pd.loc[:,[u'行業名稱',u'成分股']] ind_tk_pd.to_csv('ind_tk.csv',encoding='GBK',index=False) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看