
C:\new_tdx\T0002\hq_cache(换成你的通达信目录)商品期货配资
block_gn.dat:通达信软件中的概念板块数据文件。该文件用于定义概念板块的代码和名称。每行包含一个概念板块的信息,格式为“概念板块代码, 概念板块名称”。例如,可能有一个概念板块定义为'GN001, 人工智能',表示该概念板块的代码为 GN001,名称为人工智能。
block_zs.dat:通达信软件中的指数板块数据文件。该文件用于定义指数板块的代码和名称。每行包含一个指数板块的信息,格式为“指数板块代码, 指数板块名称”。例如,可以有一个指数板块定义为'ZS001, 上证指数',表示该指数板块的代码为 ZS001,名称为上证指数。
block_fg.dat:通达信软件中的板块分类数据文件。该文件用于定义板块的分类信息。每行包含一个板块的分类信息,格式为“板块代码, 板块分类编号”。例如,可以有一行数据为'BK0001, 23',表示板块代码为 BK0001 的板块属于分类编号为 23 的板块分类。
tdxhy.cfg:通达信软件中的行业板块配置文件。该文件用于定义行业板块的代码和名称。每行包含一个行业板块的信息,格式为“行业板块代码, 行业板块名称”。例如,可能有一个行业板块定义为'BK0001, 电子信息',表示该行业板块的代码为 BK0001,名称为电子信息。
tdxzs3.cfg:通达信软件中的自定义板块配置文件。该文件用于定义自定义板块的代码、名称和包含的股票代码。每行包含一个自定义板块的信息,其中第一列是板块代码,第二列是板块名称,后续列是该板块包含的股票代码。例如,可以定义一个自定义板块为'BK0002, 热门概念, 000001, 000002, 000003',表示该自定义板块的代码为 BK0002,名称为热门概念,包含股票代码为 000001、000002 和 000003。
这些文件是通达信软件用于组织和管理板块信息的配置文件和数据文件。它们定义了不同类型的板块的代码、名称和包含的股票代码,帮助用户在软件中进行板块相关的分析和筛选操作。
图片商品期货配资
图片
import pandas as pdfrom struct import unpackPATH = 'C:/new_tdx/T0002/hq_cache/'def read_file(file_name, splits): ''' 读取文件 :param file_name: 文件路径 :param splits: 分隔符 | :return: ''' with open(file_name, 'r') as f: buf_lis = f.read().split('\n') return [x.split(splits) for x in buf_lis[:-1]]def get_block_file(block='gn'): ''' 获取通达信的板块数据 :param block: gn概念板块 fg板块分类zs指数板块 :return: ''' file_name = f'block_{block}.dat' with open(PATH + file_name, 'rb') as f: buff = f.read() head = unpack('<384sh', buff[:386]) blk = buff[386:] blocks = [blk[i * 2813:(i + 1) * 2813] for i in range(head[1])] bk_list = [] for bk in blocks: name = bk[:8].decode('gbk').strip('\x00') num, t = unpack('<2h', bk[9:13]) stks = bk[13:(12 + 7 * num)].decode('gbk').split('\x00') bk_list = bk_list + [[name, block, num, stks]] return pd.DataFrame(bk_list, columns=['name', 'tp', 'num', 'stocks'])def get_block_tdxzs3(block='hy'): ''' 获取通达信的自定义板块配置文件 :param block: :return: ''' buf_line = read_file(PATH+'tdxzs3.cfg', '|') mapping = {'hy': '2', 'dy': '3', 'gn': '4', 'fg': '5', 'sw': '12', 'zs': '6'} df = pd.DataFrame(buf_line, columns=['name', 'code', 'type', 't1', 't2', 'block']) dg = df.groupby(by='type') if (block == 'zs'): return dg temp = dg.get_group(mapping[block]).reset_index(drop=True) temp.drop(temp.columns[[2, 3, 4]], axis=1, inplace=True) return tempdef get_stock_tdxhy(): ''' 通达信软件中的行业板块 :return: ''' buf_line = read_file(PATH+'tdxhy.cfg', '|') buf_lis = [] for x in buf_line: buf_lis.append(x) df = pd.DataFrame(buf_lis, columns=['c0', 'code', 'block', 'c1', 'c2', 'c3']) df.drop(df.columns[[0, 3, 4, 5]], axis=1, inplace=True) df = df[(df['block'] != '')] # df = df[df.code.str.startswith(('sz','sh'))] df['block5'] = df['block'].str[0:5] return dfdef hy_block(blk='hy'): ''' 获取板块数据 :param blk: :return: ''' #获取行业数据 stock_list = get_stock_tdxhy() # 获取自定义 block_list = get_block_tdxzs3(blk) block_list = block_list.drop(block_list[block_list['name'].str.contains('TDX')].index) block_list['block5'] = block_list['block'].str[0:5] block_list['num'] = 0 block_list['stocks'] = '' for i in range(len(block_list)): block_key = block_list.iat[i, 2] if (len(block_key) == 5): data_i = stock_list[stock_list['block5'] == block_key] # 根据板块名称过滤 else: data_i = stock_list[stock_list['block'] == block_key] # 根据板块名称过滤 # 板块内进行排序填序号 data_i = data_i.sort_values(by=['code'], ascending=[True]) code_list = data_i['code'].tolist() block_list.iat[i, 4] = len(code_list) block_list.iat[i, 5] = str(code_list) return block_listif __name__ == '__main__': # blocks = ['gn', 'fg', 'zs'] # for item in blocks: # print(get_block_file(item)) # print(get_block_tdxzs3('hy')) # print(get_stock_tdxhy()) print(hy_block('hy')) 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。文章为作者独立观点,不代表联华证券_合规的配资服务公司_正规实盘配资服务观点