tushare pro接口_利用tushare实现板块(概念)强度评估

本文介绍了一种利用tushare pro接口对股市板块强度进行评估的方法,结合日线行情、概念股数据,计算概念总涨幅和龙头平均涨幅,并提供代码实现。通过概念强度评估,有助于追踪热点和复盘。
摘要由CSDN通过智能技术生成

转载请注明出处!!!

在股市中,板块(概念)轮动是一个很常见又重要的现象,如果当天所买的股票位于当天启动的板块中,那其收盘的表现大概率也不会太差。那么取研究板块轮动,其中有一点我认为是要首先对板块有一个评估或者说是打分,但对板块强度评估并没有一套成型的方法。本代码基于tushare的日线行情、概念股分类、概念股列表、每日涨跌停统计四个接口,以及参考DevilYuan股票量化系统(该github仓库由于DMCA版权问题已不可用)中对热点进行评估的算法,对收盘的股票进行概念强度评估,以供追踪热点及复盘参考

首先我们需要将当天的日线行情、概念股分类、概念股列表、每日涨跌停统计四个接口的数据拿到。

由于获取每个概念对应的股票列表的时间会较长,且变动不大,因此可以隔一段时间再更新一次保存在本地的json文件中,其他的股票代码对应的概念、概念对应的中文名字也以字典的形式存在json中,方便调用,当下载了这些数据后,将download改为False便不会每次执行程序都下载这些数据,直接从本地加载。

import pandas as pd  
from tqdm import tqdm  
import tushare as ts  
import time  
from datetime import datetime  
import numpy as np  
import json  
token='*****************************************'  
# 请更换为自己的token  
ts.set_token(token)  
pro = ts.pro_api()  
  
# today = datetime.today().strftime('%Y%m%d')  
today = '20201203'  
next_day = '20201204'  
download = True # 当需要更新概念-股票代码字典、股票代码-概念字典、概念-中文名称字典时,将其改为True  
concept_discount_num = 6 # 当概念股票数少于6,则需要打折热点强度  
  
# 当日行情  
hq_df = pro.daily(trade_date=today)  
# 涨停榜  
limit_df = pro.limit_list(trade_date=today)  
# 当日概念列表  
concept_df = pro.concept()  
      
concept2code_dict = {}  
code2concept_dict = {}  
concept_name_dict = {}  
  
if download == False:  
    # 下载每个概念对应的股票列表,不一定每天更新,一可段时间更新一次  
    # 生成概念对应股票列表字典  
    print('Generate concept2code')  
    for ts in tqdm(concept_df.code.to_list()):  
        for _ in range(3):  
            try:  
                code_df = pro.concept_detail(id=ts, fields='ts_code')  
            except:  
                print('retry')  
            else:  
                code_list = code_df.ts_code.to_list()  
                concept2code_dict[ts] = code_list  
                time.sleep(0.5)  
                break  
#     with open("concept2code.json","r") as f:  
#         concept2code_dict=json.load(f)  
          
    print('Generate code2concept')  
    # 生成股票代码对应概念字典  
    for ts_code in tqdm(hq_df.ts_code):  
    #     print(1)  
        code2concept_dict[ts_code] = []  
        for k,v in concept2code_dict.items():  
            if ts_code in v:  
                code2concept_dict[ts_code].append(k)    
  
    print('Generate concept_name_dict')  
    # 生成概念对应中文名字典  
    concept_name_dict = concept_df.groupby('code')['name'].apply(lambda x:x.iat[0]).to_dict()  
    # 将上述字典存入json文件以备后用  
    with open("concept2code.json","w") as f:  
        json.dump(concept2code_dict,f)  
  
    with open("code2concept.json","w") as f:  
        json.dump(code2concept_dict,f)  
  
    with open("concept_name_dict.json","w") as f:  
        json.dump(concept_name_dict,f)  
else:  
    # d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值