winq python基本面选股例子

2021-09-15  本文已影响0人  昵称违法

一、选股的需求

二、选股常见方式

三、如何选择

四、winq选股的实现例子

连接服务器

#连接服务器
from WindPy import *
w.start(); #命令超时时间为 120 秒
print('连接状态:' ,w.isconnected())
w.start(); #命令超时时间设置成 60

获取A股列表

import datetime

#获取当前的日期
today_date = datetime.date.today().isoformat()  #str类型,iso格式:2020-01-01
print("当前时间为:",today_date)

#读取A股股票列表
a_stocks = w.wset("sectorconstituent", f"date={today_date};sectorId=a001010100000000", usedf=True)

#错误代码处理
err_code = a_stocks[0]
#print(f"err_code = {err_code}")
if err_code != 0:
    raise ValueError(f"读取A股股票列表,出错,错误代码:{err_code}")
    
a_stock_df = a_stocks[1]
"""
    格式:
    ===========a_stock_df:dataFrame=============
                        date    wind_code   sec_name
    -------------------------------------------------
    1   2020-02-25 00:00:00.005 000001.SZ   平安银行
    2   2020-02-25 00:00:00.005 000002.SZ   万科A
"""

a_stock_list = a_stock_df.wind_code.values.tolist()
print(f"读取的股票代码数量为:{len(a_stock_list)}")
#print(f"type of a_stock_list is {type(a_stock_list)}")
print("代码的格式如下:",a_stock_list[-1:])
today = '20210914'      #日期  年【----】月【--】日【--】 总计8个数字
sjnb_date = '20201231'  #审计年报的读入日期   '####1231'-该年年报读取日期,目前尚无2019年的年报审计意见,遂,读取上一年的年报审计意见

函数定义

import pandas as pd

#获取大股东累计质押数占持股数比例
def get_dagudong_zhiya_zhanbi(stock_code:str,deal_date:str):
    """
    功能:获取大股东累计质押数占持股数比例
    参数:
    stock_code:股票代码,包含市场后缀,可以是一只或者多只股票 eg. 一只 '002157.SZ'  多只  ['002157.SZ','600797.SH']
    deal_date:交易日期               eg.  '20191106'   
    
    return:df
    ==========================
               大股东质押占比
    002157.SZ   80.841848
    600797.SH   76.293443
    ==========================
    """
    dd = w.wss(stock_code, "share_pledgeda_pct_largestholder", f"tradeDate={deal_date}", usedf=True)
    df = dd[1]
    df.columns = ['大股东质押占比']
    df['大股东质押占比'] = df.apply(lambda r: 0 if r['大股东质押占比']==None else r['大股东质押占比'],axis = 1)   #单独查询一只股,占比为0时,返回None的处理
    df = df.fillna(0)                                                                                         #查询多只股,占比为0时,返回NaN 
    return df
    
    """
    #=========test code=============
    stock_code = ['002157.SZ','600797.SH']
    deal_date = '20191106'  

    mydf =get_dagudong_zhiya_zhanbi(stock_code,deal_date)
    mydf
    """
    
#获取财报的 [归属母公司的净利润]
def get_guishu_mugongsi_jinglirun(stock_code:str,deal_date:str):
    """
    功能:归属母公司的净利润
    参数:
    stock_code:股票代码,包含市场后缀,可以是一只或者多只股票 eg. 一只 '002157.SZ'  多只  ['002157.SZ','600797.SH']
    deal_date:交易日期               eg.  '20191106'
    **万矿是取每个季度最后一天作为报告期,如取2017年的四个定期报告数据,那报告期设置分别为 :一季报:2017-03-31,半年报:2017-06-30,三季报:2017-09-30,年报:2017-12-31
    
    return:df
    =============================
                归属母公司的净利润
     600352.SH      4.814994e+09
    ==============================
    """
    
    dd = w.wss(stock_code, "netprofit_ttm", f"tradeDate={deal_date}", usedf=True)
    df = dd[1]
    df.columns = ['归属母公司的净利润']   
    df['归属母公司的净利润'] = df['归属母公司的净利润'].astype('float')
    return df

    """    
    #===========test code=============
    stock_code = ['600352.SH','000001.SZ']
    deal_date = '20181231'
    my_df = get_guishu_mugongsi_jinglirun(stock_code,deal_date)
    display(my_df)
    """

#获取股票的上市日期
def get_shangshi_date(stockCodes):
    """
    功能:获取股票的上市日期
    参数:
    stockCodes:股票列表  ['000001.SZ','600000.SH']
    
    return:df,
    ===========================================
                    上市日期
        000001.SZ   1991-04-03 00:00:00.005
        600000.SH   1999-11-10 00:00:00.005
    ===========================================
    """
    
    dd = w.wss(stockCodes, "ipo_date", "", usedf=True)
    df = dd[1]
    df.columns = ['上市日期']
    return df

    """
    #==============test code===============
    stockCodes = ['000001.SZ','600000.SH']
    df = get_shangshi_date(stockCodes)
    df
    """

#得到某些股票的N日成交额
def get_amount_nDays(stockCodes:list,days:int,tradeDate:str):
    """
    功能:得到某些股票的N日成交额
    参数:
    stockCodes:要查询的股票列表
    days:N日成交额中的N,往前推的交易天数,days = 1 ,表示往前推一天,连同当天(tradeDate),则有两个交易日
    tradeDate:查询的日期
    
    return df
    ===========================
                N日成交额
    000001.SZ   3.669349e+10
    600000.SH   1.619291e+10
    ===========================     
    """
    dd = w.wss(stockCodes, "amt_nd", f"days=-{days};tradeDate={tradeDate}", usedf=True)
    df = dd[1]
    df.columns = ["N日成交额"]    
    
    return df

    """
    #========test code=====================
    stockCodes = ['000001.SZ','600000.SH']
    days = 20
    tradeDate = '20191111'
    df = get_amount_nDays(stockCodes,days,tradeDate)
    df
    """
    
#日期格式转换:timestamp_str '2019-01-08 00:00:00.005' to str '20190108'
def timestamp_2_str(timestamp_str_date):
    """
    功能:日期格式转换:timestamp_str '2019-01-08 00:00:00.005' to str '20190108'
    参数:
    timestamp_str_date:'2019-01-08 00:00:00.005'
    return:string,20190108
    """
    day1 = timestamp_str_date.split(' ')[0].split('-')    #'2019','01','08'
    day2 = f"{day1[0]}{day1[1]}{day1[2]}"  #'20190108'
    return day2

#日期用年数进行相减操作
import datetime
from dateutil.relativedelta import relativedelta

#给定日期减去指定年数后,返回一个新日期
def substract_date_years(mydate:str,years_to_substract:int):
    """
    功能:给定日期减去指定年数后,返回一个新日期
    参数:
    mydate:str日期  eg. '20190101'  '%Y%m%d'
    years_to_substract:int要减去的年数
    
    return:'%Y%m%d' '20180101' 
    备注:pandas矢量化操作有日期加减函数
    """
    d = datetime.datetime.strptime(f"{mydate}", '%Y%m%d')
    #print(d) # 2018-01-31 00:00:00
    new_date = (d - relativedelta(years=years_to_substract)).strftime('%Y%m%d')
    #print(new_date) # 20170131
    return new_date

#获取一个大盘交易日列表,作为交易日时间轴
def get_dapan_tradeday(dapan:str,begin_dapan_date:str,end_dapan_date:str):
    """
    功能:获取一个大盘交易日列表,作为交易日时间轴
    参数:
    dapan:大盘代码  eg. '000001.SH'#上证指数
    begin_dapan_date:起始日期
    end_dapan_date:结束日期    
    
    return:days , 交易日系列,string
    """
    
    dd =w.wsd(dapan, "close", begin_dapan_date, end_dapan_date, "Fill=Previous", usedf=True)
    df = dd[1]
    df['日期'] = df.index
    days = df['日期'].astype('str').values.tolist()
    return days

    """
    #=========test code=============
    dapan = '000001.SH'#上证指数
    begin_dapan_date = '2019-01-01'
    end_dapan_date = '2019-11-10'
    days =  get_dapan_tradeday(dapan,begin_dapan_date,end_dapan_date)    
    """
    
#审计意见类别
def get_shenjiyijian(stocks:list,date:str):   
    """
    功能:获取给定股票的某期财务审计意见
    参数:
    stocks:股票列表list
    date:报告期 str
    
    return:df    
    df的格式如下:
    -----------------------
             |审计意见类别
    -----------------------
    000001.SZ|标准无保留意见
    600000.SH|标准无保留意见
    -----------------------
    """
    dd = w.wss(stocks, "stmnote_audit_category", f"rptDate={date};zoneType=1", usedf=True)
    df = dd[1]
    df.columns = ['审计意见类别']
    return df
    """
    #==========test code==============
    stocks = ['600352.SH','000001.SZ']
    date = '20181231'
    DF = get_shenjiyijian(stocks,date)
    DF
    """

ST股票处理

#st处理的函数

#获取ST字典
def get_st_dict(df_st,st_start_date,st_end_date)->dict:   
    #df_st = pd.read_excel(file_path,converters={'代码':str})
    df_st['操作日期'] = pd.to_datetime(df_st['操作日期'])
    #display(df_st)
    
    #整理成字典 
    st_dict = {}
    for name,df in df_st.groupby(['代码']):
        #print(name)
        df = df.sort_values(['操作日期'])
        df.index = range(len(df))
        #display(df)
        df_tmp = get_st_info(df,st_start_date,st_end_date)
        #display(df_tmp)
        st_dict[name] = df_tmp
    print("停牌字典处理完毕!")
    
    return st_dict
    
    #====测试代码====
    file_path = 'C:/缓存数据/ST状态合并表.xls'
    df_st_dict = get_st_dict(file_path) 
    df_st_dict['600163']


#获取st的信息
def get_st_info(df,st_start_date,st_end_date)->pd.DataFrame:
    """
    注意事项:中间用到两个日期常量,需要设定
    df:ST合并表:实施ST 和 撤销ST
    st_start_date:2020-01-01
    st_end_date:2020-12-31
    
    """
    lenth_df = len(df)
    status_list = []
    for idx in range(len(df)):
        #print(idx)
        op = df.at[idx,'操作']
        op_date = df.at[idx,'操作日期']

        #1、实施及撤销操作前后的状态处理
        if op == '实施':
            #print('实施')
            #----实施前----
            status_before_op = "正常"
            if '*ST'in df.at[idx,'操作前简称']:
                #print(f"操作前为:*ST")
                status_before_op = "*ST"
            else:
                if 'ST' in df.at[idx,'操作前简称']:
                    #print(f"操作前为:ST")
                    status_before_op = "ST"               

            #----实施后----    
            status_after_op = "正常"
            if '*ST'in df.at[idx,'操作后简称']:
                #print(f"操作后为:*ST")
                status_after_op = "*ST"
            else:
                if 'ST' in df.at[idx,'操作后简称']:
                    #print(f"操作后为:ST")
                    status_after_op = "ST"
            if '退' in df.at[idx,'操作后简称']:
                #print(f"操作后为:退")
                status_after_op = "退"

        elif op == '撤销':
            #print("撤销")
            #----撤销前---- 
            status_before_op = "正常"
            if '*ST'in df.at[idx,'操作前简称']:
                #print(f"操作前为:*ST")
                status_before_op = "*ST"
            else:
                if 'ST' in df.at[idx,'操作前简称']:
                    #print(f"操作前为:ST")
                    status_before_op = "ST"
            if '退' in df.at[idx,'操作前简称']:
                #print(f"操作后为:退")
                status_before_op = "退"

            #----撤销后----
            status_after_op = "正常"
            if '*ST'in df.at[idx,'操作后简称']:
                #print(f"操作后为:*ST")
                status_after_op = "*ST"
            else:
                if 'ST' in df.at[idx,'操作后简称']:
                    #print(f"操作后为:ST")
                    status_after_op = "ST"
            if '退' in df.at[idx,'操作后简称']:
                #print(f"操作后为:退")
                status_after_op = "退"  

        #2、状态对应的时间段处理
        if idx == 0:  #当前为第一条记录   
            #增加一段:起始日期到当前日期的状态
            start_date_1 = pd.to_datetime(st_start_date)
            end_date_1 = op_date - pd.DateOffset(days = 1)
            status_cur_1 = status_before_op
            status_list.append([start_date_1,end_date_1,status_cur_1])

            #当前日期及之后的状态处理
            start_date_2 = op_date        
            if idx < lenth_df - 1:   #不是最后一条记录,日期取下一次操作的日期
                end_date_2 = op_date = df.at[idx + 1,'操作日期']  
                end_date_2 = end_date_2 - pd.DateOffset(days = 1)
            elif idx == lenth_df - 1: #确定是最后一条记录,日期取2019-12-31
                end_date_2 = pd.to_datetime(st_end_date)
            status_cur_2 = status_after_op
            status_list.append([start_date_2,end_date_2,status_cur_2])        
            #print(f"op = {op},op_date = {op_date}  status_before_op = {status_before_op} status_after_op = {status_after_op} ")   
        elif idx > 0: #当前为第一条记录 
            #当前日期及之后的状态处理
            start_date_2 = op_date
            if idx < lenth_df - 1:   #不是最后一条记录,日期取下一次操作的日期
                end_date_2 = df.at[idx + 1,'操作日期']  
                end_date_2 = end_date_2 - pd.DateOffset(days = 1)
            elif idx == lenth_df - 1: #确定是最后一条记录,日期取2019-12-31
                end_date_2 = pd.to_datetime(st_start_date)
            status_cur_2 = status_after_op
            status_list.append([start_date_2,end_date_2,status_cur_2])        
            #print(f"op = {op},op_date = {op_date}  status_before_op = {status_before_op} status_after_op = {status_after_op} ") 

    df_tmp = pd.DataFrame(status_list)
    df_tmp.columns = ['起始日期','结束日期','状态']
    df_tmp
    return df_tmp


# .1、设置【起始日期】和【终止日期】
def get_st(last_3years_date,today_date):
    """
    
    """
    # 生成ST信息

    # .2、读取【实施ST】
    dd = w.wset("carryoutspecialtreatment", f"startdate={last_3years_date};enddate={today_date}", usedf=True)
    df = dd[1]
    do_st_df = df[["wind_code","implementation_date","name_before","name_after"]]
    do_st_df.columns=['代码','操作日期','操作前简称','操作后简称']
    do_st_df['操作'] = '实施'
    do_st_df.index = do_st_df.index + do_st_df['操作']
    #print(do_st_df.head(2))

    # .3、读取【撤销ST】
    dd = w.wset("cancelspecialtreatment",f"startdate={last_3years_date};enddate={today_date}", usedf=True)
    df = dd[1]
    undo_st_df = df[["wind_code","implementation_date","name_before","name_after"]]
    undo_st_df.columns=['代码','操作日期','操作前简称','操作后简称']
    undo_st_df['操作'] = '撤销'
    undo_st_df.index = undo_st_df.index + undo_st_df['操作']
    #print(undo_st_df.head(2))

    # .4、双表合并
    st_df = pd.DataFrame()
    st_df = st_df.append(do_st_df).append(undo_st_df)
    #print(f"{len(do_st_df)},{len(undo_st_df)}")
    #print(len(st_df))

    # .5、计算st信息
    st_dict = get_st_dict(st_df,last_3years_date,today_date)  #{last_3years_date};enddate={today_date}"

    #print(len(st_dict))
    #print(list(st_dict.keys())[0])
    #display(st_dict["000010.SZ"])
    
    return st_dict

#判断筛选出来的股票集合,在指定的日期,它们是否在停牌字典里,并且当前处于停牌状态
def get_st_stocks(st_dict:dict,select_stocks:set,check_date:str)->set:
    keys_set = set(st_dict.keys())
    #print(len(keys_set))
    common_set = select_stocks & keys_set
    #print(len(common_set))
    
    common_set
    res_set = set()
    for item in common_set:
        #display(st_dict[item])
        df = st_dict[item]
        df1 = df.query("(起始日期 <= @check_date <= 结束日期) & (状态 != '正常')")
        if len(df1) >=1:
            #print("处于停牌状态")
            res_set.add(item)
        else:
            #print("处于正常状态")
            pass
            
    return res_set  

main流程

#获取A股列表    API--WSD日期序列 -- 直接拉清单
all_stocks = a_stock_list

print("指定的截止日期为today = ",today)
beginDate = substract_date_years(today,3)      #得到今天往前推3年的日期,作为上市日期起始判断值 


# 1、选取符合上市日期的股票列表
df = get_shangshi_date(all_stocks)             #获取上市日期df
beginDate = pd.to_datetime(beginDate)
df = df.query("上市日期 <= @beginDate")
select_stocks = df.index.tolist()
print("上市日期筛选后的股票",len(select_stocks))

# 2、 近21个交易日成交额大于63亿
df = get_amount_nDays(select_stocks,20,today)
df = df.query("N日成交额>= 6300000000")         #近21日成交额总计大于63亿       
select_stocks = df.index.tolist()              #更新股票列表
print("近21个交易日成交额大于63亿",len(select_stocks))


# 3、第一大股东质押率小于80%
df = get_dagudong_zhiya_zhanbi(select_stocks,today)   
df = df.query("大股东质押占比 < 80")
#display(df)
select_stocks = df.index.tolist()              #更新股票列表
print("第一大股东质押率小于80%",len(select_stocks))


# 4、归属母公司净利润判断 
"""
在1月1日-8月30日之间的,选用上一年度报告净利润;
在9月1日-10月31日之间的,选用当年半年报数据*2;
在11月1日-12月31日的,选用本年度3季报数据*4/3
"""
month = pd.to_datetime(today).month
year = pd.to_datetime(today).year
if 1 <= month <= 8:              #在1月1日-8月30日之间的,选用上一年度报告净利润;
    last_year = year - 1
    last_year_nianbao_date = f"{last_year}1231"
    df = get_guishu_mugongsi_jinglirun(select_stocks,last_year_nianbao_date)    
elif 9 <= month <= 10:
    this_year_banNianBao_date = f"{year}0630"
    df = get_guishu_mugongsi_jinglirun(select_stocks,this_year_banNianBao_date)
    df['归属母公司的净利润'] = df.eval("归属母公司的净利润 * 2")

elif 11 <= month <= 12:    
    this_year_quarter3_date = f"{year}0930"
    df = get_guishu_mugongsi_jinglirun(select_stocks,this_year_quarter3_date)
    df['归属母公司的净利润'] = df.eval("归属母公司的净利润 * 4/3")

df = df.query("归属母公司的净利润 >= 50000000 ")  #文档显示为1亿
select_stocks = df.index.tolist()
print("归属母公司的净利润:",len(select_stocks))


# 5、审核意见处理:排除“标准无保留意见”之外的其它股票
sjyj_df:pd.DataFrame = get_shenjiyijian(select_stocks,'20181231')  #获取审计意见df
df2 = sjyj_df.query("审计意见类别 !='标准无保留意见' ")              #筛选非标意见的股票
feibiao_stocks_set = set(df2.index)                                #非标准意见的股票集合
final_select_stocks = set(select_stocks) - feibiao_stocks_set      #最终选股股票 = 排除了非标意见的股票 
print(f"万矿选股结束,选出的股票数量为:{len(final_select_stocks)}")


# 6、ST信息获取
last_3years_date = substract_date_years(today_date.replace("-",""),3) 
st_dict = get_st(last_3years_date,today_date)
print(f"ST信息获取,共获取停牌股票数量:{len(st_dict)}")

# 7、刨除ST的股票
st_set = get_st_stocks(st_dict,final_select_stocks,today)
final_select_stocks  = final_select_stocks - st_set
print(f"ST停牌的股票:{len(st_set)}")
print(f"最终选出的股票只数:{len(final_select_stocks)}")

运行结果

指定的截止日期为today = 20210914
上市日期筛选后的股票 3496
近21个交易日成交额大于x亿 941
第一大股东质押率小于80% 900
归属母公司的净利润: 823
万矿选股结束,选出的股票数量为:817
停牌字典处理完毕!
ST信息获取,共获取停牌股票数量:836
ST停牌的股票:1
最终选出的股票只数:816

{'000001.SZ',
'000002.SZ',
'000009.SZ',
'000012.SZ',
'000027.SZ',
'000039.SZ',
'000050.SZ',
'000060.SZ',
'000063.SZ',
'000066.SZ',
'000100.SZ',
'000155.SZ',
'000157.SZ',
'000158.SZ',
'000166.SZ',
'000301.SZ',
'000333.SZ',
'000338.SZ',
'000400.SZ',
'000401.SZ',
'000422.SZ',
'000425.SZ',
'000488.SZ',
'000507.SZ',
'000516.SZ',
'000519.SZ',
'000528.SZ',
'000538.SZ',
'000547.SZ',
'000559.SZ',
'000568.SZ',
'000576.SZ',
'000581.SZ',
'000591.SZ',
'000596.SZ',
'000612.SZ',
'000623.SZ',
'000625.SZ',
'000629.SZ',
'000630.SZ',
'000635.SZ',
'000636.SZ',
'000651.SZ',
'000655.SZ',
'000657.SZ',
'000661.SZ',
'000672.SZ',
'000681.SZ',
'000686.SZ',
'000698.SZ',
'000703.SZ',
'000709.SZ',
'000717.SZ',
'000725.SZ',
'000728.SZ',
'000731.SZ',
'000733.SZ',
'000738.SZ',
'000739.SZ',
'000750.SZ',
'000751.SZ',
'000758.SZ',
'000761.SZ',
'000768.SZ',
'000776.SZ',
'000778.SZ',
'000783.SZ',
'000786.SZ',
'000789.SZ',
'000791.SZ',
'000799.SZ',
'000800.SZ',
'000807.SZ',
'000818.SZ',
'000821.SZ',
'000825.SZ',
'000829.SZ',
'000830.SZ',
'000831.SZ',
'000833.SZ',
'000837.SZ',
'000848.SZ',
'000858.SZ',
'000860.SZ',
'000862.SZ',
'000875.SZ',
'000876.SZ',
'000877.SZ',
'000878.SZ',
'000883.SZ',
'000887.SZ',
'000893.SZ',
'000895.SZ',
'000898.SZ',
'000902.SZ',
'000923.SZ',
'000932.SZ',
'000933.SZ',
'000935.SZ',
'000938.SZ',
'000949.SZ',
'000960.SZ',
'000962.SZ',
'000963.SZ',
'000966.SZ',
'000968.SZ',
'000969.SZ',
'000970.SZ',
'000975.SZ',
'000977.SZ',
'000983.SZ',
'000988.SZ',
'000990.SZ',
'000997.SZ',
'000998.SZ',
'001979.SZ',
'002001.SZ',
'002004.SZ',
'002007.SZ',
'002008.SZ',
'002009.SZ',
'002010.SZ',
'002013.SZ',
'002023.SZ',
'002025.SZ',
'002026.SZ',
'002027.SZ',
'002028.SZ',
'002030.SZ',
'002036.SZ',
'002041.SZ',
'002044.SZ',
'002048.SZ',
'002049.SZ',
'002050.SZ',
'002056.SZ',
'002057.SZ',
'002060.SZ',
'002064.SZ',
'002068.SZ',
'002074.SZ',
'002075.SZ',
'002078.SZ',
'002079.SZ',
'002080.SZ',
'002091.SZ',
'002092.SZ',
'002097.SZ',
'002108.SZ',
'002110.SZ',
'002120.SZ',
'002123.SZ',
'002125.SZ',
'002127.SZ',
'002128.SZ',
'002129.SZ',
'002130.SZ',
'002131.SZ',
'002132.SZ',
'002135.SZ',
'002136.SZ',
'002138.SZ',
'002139.SZ',
'002140.SZ',
'002142.SZ',
'002145.SZ',
'002149.SZ',
'002151.SZ',
'002155.SZ',
'002156.SZ',
'002169.SZ',
'002170.SZ',
'002171.SZ',
'002176.SZ',
'002179.SZ',
'002180.SZ',
'002182.SZ',
'002183.SZ',
'002184.SZ',
'002185.SZ',
'002191.SZ',
'002192.SZ',
'002201.SZ',
'002202.SZ',
'002206.SZ',
'002214.SZ',
'002218.SZ',
'002221.SZ',
'002223.SZ',
'002230.SZ',
'002233.SZ',
'002236.SZ',
'002237.SZ',
'002240.SZ',
'002241.SZ',
'002245.SZ',
'002249.SZ',
'002254.SZ',
'002258.SZ',
'002266.SZ',
'002270.SZ',
'002271.SZ',
'002273.SZ',
'002274.SZ',
'002283.SZ',
'002285.SZ',
'002286.SZ',
'002288.SZ',
'002291.SZ',
'002297.SZ',
'002300.SZ',
'002304.SZ',
'002311.SZ',
'002312.SZ',
'002318.SZ',
'002326.SZ',
'002335.SZ',
'002340.SZ',
'002346.SZ',
'002350.SZ',
'002352.SZ',
'002353.SZ',
'002368.SZ',
'002371.SZ',
'002378.SZ',
'002382.SZ',
'002384.SZ',
'002385.SZ',
'002386.SZ',
'002389.SZ',
'002396.SZ',
'002402.SZ',
'002407.SZ',
'002409.SZ',
'002410.SZ',
'002413.SZ',
'002414.SZ',
'002415.SZ',
'002428.SZ',
'002436.SZ',
'002442.SZ',
'002453.SZ',
'002455.SZ',
'002459.SZ',
'002460.SZ',
'002465.SZ',
'002472.SZ',
'002475.SZ',
'002487.SZ',
'002493.SZ',
'002497.SZ',
'002498.SZ',
'002507.SZ',
'002508.SZ',
'002511.SZ',
'002518.SZ',
'002520.SZ',
'002531.SZ',
'002532.SZ',
'002533.SZ',
'002539.SZ',
'002555.SZ',
'002559.SZ',
'002568.SZ',
'002585.SZ',
'002594.SZ',
'002597.SZ',
'002598.SZ',
'002600.SZ',
'002601.SZ',
'002607.SZ',
'002611.SZ',
'002612.SZ',
'002617.SZ',
'002624.SZ',
'002636.SZ',
'002645.SZ',
'002648.SZ',
'002673.SZ',
'002709.SZ',
'002714.SZ',
'002733.SZ',
'002736.SZ',
'002738.SZ',
'002741.SZ',
'002745.SZ',
'002747.SZ',
'002756.SZ',
'002759.SZ',
'002791.SZ',
'002797.SZ',
'002812.SZ',
'002821.SZ',
'002837.SZ',
'002850.SZ',
'002895.SZ',
'002897.SZ',
'002920.SZ',
'002922.SZ',
'002926.SZ',
'300001.SZ',
'300002.SZ',
'300003.SZ',
'300007.SZ',
'300012.SZ',
'300014.SZ',
'300015.SZ',
'300017.SZ',
'300019.SZ',
'300031.SZ',
'300033.SZ',
'300034.SZ',
'300035.SZ',
'300036.SZ',
'300037.SZ',
'300040.SZ',
'300041.SZ',
'300059.SZ',
'300065.SZ',
'300070.SZ',
'300073.SZ',
'300079.SZ',
'300082.SZ',
'300087.SZ',
'300088.SZ',
'300091.SZ',
'300099.SZ',
'300101.SZ',
'300113.SZ',
'300115.SZ',
'300118.SZ',
'300122.SZ',
'300124.SZ',
'300127.SZ',
'300129.SZ',
'300131.SZ',
'300136.SZ',
'300142.SZ',
'300146.SZ',
'300171.SZ',
'300173.SZ',
'300177.SZ',
'300179.SZ',
'300183.SZ',
'300185.SZ',
'300188.SZ',
'300203.SZ',
'300207.SZ',
'300212.SZ',
'300221.SZ',
'300223.SZ',
'300224.SZ',
'300227.SZ',
'300228.SZ',
'300229.SZ',
'300236.SZ',
'300241.SZ',
'300260.SZ',
'300263.SZ',
'300265.SZ',
'300271.SZ',
'300274.SZ',
'300285.SZ',
'300294.SZ',
'300302.SZ',
'300303.SZ',
'300311.SZ',
'300316.SZ',
'300319.SZ',
'300320.SZ',
'300323.SZ',
'300327.SZ',
'300329.SZ',
'300339.SZ',
'300342.SZ',
'300346.SZ',
'300347.SZ',
'300350.SZ',
'300358.SZ',
'300369.SZ',
'300373.SZ',
'300376.SZ',
'300377.SZ',
'300378.SZ',
'300379.SZ',
'300382.SZ',
'300390.SZ',
'300393.SZ',
'300395.SZ',
'300408.SZ',
'300409.SZ',
'300413.SZ',
'300418.SZ',
'300428.SZ',
'300432.SZ',
'300433.SZ',
'300435.SZ',
'300438.SZ',
'300441.SZ',
'300443.SZ',
'300450.SZ',
'300454.SZ',
'300456.SZ',
'300457.SZ',
'300458.SZ',
'300460.SZ',
'300474.SZ',
'300476.SZ',
'300483.SZ',
'300487.SZ',
'300488.SZ',
'300490.SZ',
'300496.SZ',
'300497.SZ',
'300500.SZ',
'300502.SZ',
'300503.SZ',
'300508.SZ',
'300527.SZ',
'300529.SZ',
'300558.SZ',
'300567.SZ',
'300568.SZ',
'300569.SZ',
'300576.SZ',
'300581.SZ',
'300582.SZ',
'300590.SZ',
'300593.SZ',
'300595.SZ',
'300598.SZ',
'300601.SZ',
'300604.SZ',
'300607.SZ',
'300610.SZ',
'300613.SZ',
'300618.SZ',
'300623.SZ',
'300629.SZ',
'300631.SZ',
'300648.SZ',
'300655.SZ',
'300657.SZ',
'300661.SZ',
'300663.SZ',
'300671.SZ',
'300672.SZ',
'300677.SZ',
'300679.SZ',
'300693.SZ',
'300696.SZ',
'300699.SZ',
'300708.SZ',
'300712.SZ',
'300719.SZ',
'300724.SZ',
'300725.SZ',
'300726.SZ',
'300727.SZ',
'300737.SZ',
'300747.SZ',
'300750.SZ',
'600000.SH',
'600006.SH',
'600008.SH',
'600010.SH',
'600011.SH',
'600016.SH',
'600018.SH',
'600019.SH',
'600021.SH',
'600022.SH',
'600023.SH',
'600025.SH',
'600027.SH',
'600028.SH',
'600030.SH',
'600031.SH',
'600036.SH',
'600038.SH',
'600039.SH',
'600048.SH',
'600050.SH',
'600055.SH',
'600061.SH',
'600063.SH',
'600066.SH',
'600072.SH',
'600075.SH',
'600079.SH',
'600085.SH',
'600089.SH',
'600095.SH',
'600096.SH',
'600104.SH',
'600109.SH',
'600110.SH',
'600111.SH',
'600116.SH',
'600118.SH',
'600123.SH',
'600126.SH',
'600132.SH',
'600141.SH',
'600143.SH',
'600150.SH',
'600151.SH',
'600160.SH',
'600161.SH',
'600163.SH',
'600166.SH',
'600171.SH',
'600176.SH',
'600183.SH',
'600185.SH',
'600188.SH',
'600196.SH',
'600197.SH',
'600199.SH',
'600206.SH',
'600210.SH',
'600216.SH',
'600218.SH',
'600219.SH',
'600223.SH',
'600230.SH',
'600251.SH',
'600256.SH',
'600259.SH',
'600268.SH',
'600273.SH',
'600276.SH',
'600282.SH',
'600295.SH',
'600297.SH',
'600298.SH',
'600307.SH',
'600308.SH',
'600309.SH',
'600312.SH',
'600316.SH',
'600328.SH',
'600330.SH',
'600332.SH',
'600338.SH',
'600346.SH',
'600348.SH',
'600352.SH',
'600360.SH',
'600361.SH',
'600362.SH',
'600363.SH',
'600366.SH',
'600367.SH',
'600369.SH',
'600372.SH',
'600379.SH',
'600383.SH',
'600389.SH',
'600392.SH',
'600395.SH',
'600406.SH',
'600409.SH',
'600418.SH',
'600426.SH',
'600428.SH',
'600435.SH',
'600436.SH',
'600438.SH',
'600456.SH',
'600459.SH',
'600460.SH',
'600470.SH',
'600481.SH',
'600482.SH',
'600483.SH',
'600487.SH',
'600489.SH',
'600497.SH',
'600499.SH',
'600500.SH',
'600507.SH',
'600509.SH',
'600516.SH',
'600517.SH',
'600519.SH',
'600522.SH',
'600529.SH',
'600531.SH',
'600536.SH',
'600546.SH',
'600547.SH',
'600549.SH',
'600552.SH',
'600559.SH',
'600563.SH',
'600567.SH',
'600569.SH',
'600577.SH',
'600580.SH',
'600581.SH',
'600582.SH',
'600584.SH',
'600585.SH',
'600586.SH',
'600587.SH',
'600588.SH',
'600590.SH',
'600596.SH',
'600600.SH',
'600618.SH',
'600621.SH',
'600623.SH',
'600641.SH',
'600660.SH',
'600667.SH',
'600673.SH',
'600685.SH',
'600688.SH',
'600690.SH',
'600691.SH',
'600699.SH',
'600702.SH',
'600703.SH',
'600704.SH',
'600707.SH',
'600711.SH',
'600720.SH',
'600727.SH',
'600732.SH',
'600737.SH',
'600739.SH',
'600740.SH',
'600741.SH',
'600745.SH',
'600746.SH',
'600755.SH',
'600760.SH',
'600763.SH',
'600765.SH',
'600773.SH',
'600779.SH',
'600782.SH',
'600795.SH',
'600801.SH',
'600803.SH',
'600808.SH',
'600809.SH',
'600810.SH',
'600837.SH',
'600845.SH',
'600859.SH',
'600862.SH',
'600863.SH',
'600872.SH',
'600873.SH',
'600875.SH',
'600879.SH',
'600882.SH',
'600884.SH',
'600885.SH',
'600887.SH',
'600888.SH',
'600893.SH',
'600900.SH',
'600909.SH',
'600919.SH',
'600926.SH',
'600958.SH',
'600961.SH',
'600963.SH',
'600966.SH',
'600970.SH',
'600985.SH',
'600988.SH',
'600993.SH',
'600997.SH',
'600999.SH',
'601001.SH',
'601005.SH',
'601009.SH',
'601011.SH',
'601012.SH',
'601015.SH',
'601016.SH',
'601058.SH',
'601066.SH',
'601088.SH',
'601100.SH',
'601101.SH',
'601106.SH',
'601108.SH',
'601117.SH',
'601126.SH',
'601138.SH',
'601139.SH',
'601166.SH',
'601168.SH',
'601169.SH',
'601179.SH',
'601186.SH',
'601198.SH',
'601211.SH',
'601216.SH',
'601222.SH',
'601225.SH',
'601233.SH',
'601238.SH',
'601288.SH',
'601311.SH',
'601318.SH',
'601328.SH',
'601336.SH',
'601369.SH',
'60......

上一篇下一篇

猜你喜欢

热点阅读