久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    python獲取通達信風(fēng)格、板塊概念、板塊指數(shù)、行業(yè)、自定義板塊

     Jeremy_蒼 2025-07-02 發(fā)布于安徽

    C:\new_tdx\T0002\hq_cache(換成你的通達信目錄)

    • block_gn.dat:通達信軟件中的概念板塊數(shù)據(jù)文件。該文件用于定義概念板塊的代碼和名稱。每行包含一個概念板塊的信息,格式為“概念板塊代碼, 概念板塊名稱”。例如,可能有一個概念板塊定義為'GN001, 人工智能',表示該概念板塊的代碼為 GN001,名稱為人工智能。

    • block_zs.dat:通達信軟件中的指數(shù)板塊數(shù)據(jù)文件。該文件用于定義指數(shù)板塊的代碼和名稱。每行包含一個指數(shù)板塊的信息,格式為“指數(shù)板塊代碼, 指數(shù)板塊名稱”。例如,可以有一個指數(shù)板塊定義為'ZS001, 上證指數(shù)',表示該指數(shù)板塊的代碼為 ZS001,名稱為上證指數(shù)。

    • block_fg.dat:通達信軟件中的板塊分類數(shù)據(jù)文件。該文件用于定義板塊的分類信息。每行包含一個板塊的分類信息,格式為“板塊代碼, 板塊分類編號”。例如,可以有一行數(shù)據(jù)為'BK0001, 23',表示板塊代碼為 BK0001 的板塊屬于分類編號為 23 的板塊分類。

    • tdxhy.cfg:通達信軟件中的行業(yè)板塊配置文件。該文件用于定義行業(yè)板塊的代碼和名稱。每行包含一個行業(yè)板塊的信息,格式為“行業(yè)板塊代碼, 行業(yè)板塊名稱”。例如,可能有一個行業(yè)板塊定義為'BK0001, 電子信息',表示該行業(yè)板塊的代碼為 BK0001,名稱為電子信息。

    • tdxzs3.cfg:通達信軟件中的自定義板塊配置文件。該文件用于定義自定義板塊的代碼、名稱和包含的股票代碼。每行包含一個自定義板塊的信息,其中第一列是板塊代碼,第二列是板塊名稱,后續(xù)列是該板塊包含的股票代碼。例如,可以定義一個自定義板塊為'BK0002, 熱門概念, 000001, 000002, 000003',表示該自定義板塊的代碼為 BK0002,名稱為熱門概念,包含股票代碼為 000001、000002 和 000003。

    這些文件是通達信軟件用于組織和管理板塊信息的配置文件和數(shù)據(jù)文件。它們定義了不同類型的板塊的代碼、名稱和包含的股票代碼,幫助用戶在軟件中進行板塊相關(guān)的分析和篩選操作。

    圖片

    圖片

    import pandas as pd
    from struct import unpack
    PATH = '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'):
      '''
      獲取通達信的板塊數(shù)據(jù)
      :param block: gn概念板塊 fg板塊分類zs指數(shù)板塊
      :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 temp

    def get_stock_tdxhy():
      '''
      通達信軟件中的行業(yè)板塊
      :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 df

    def hy_block(blk='hy'):
      '''
      獲取板塊數(shù)據(jù)
      :param blk:
      :return:
      '''
      #獲取行業(yè)數(shù)據(jù)
      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] # 根據(jù)板塊名稱過濾
          else:
              data_i = stock_list[stock_list['block'] == block_key] # 根據(jù)板塊名稱過濾
          # 板塊內(nèi)進行排序填序號
          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_list

    if __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'))

      本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
      轉(zhuǎn)藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 国产综合久久亚洲综合| 亚洲国产在一区二区三区| 精品乱码一区二区三四五区| 精品国产丝袜自在线拍国语| 熟妇人妻一区二区三区四区| 亚洲av成人免费在线| 免费看成人毛片无码视频| 宅男在线永久免费观看网| 亚洲欧美综合人成在线| 久久WWW免费人成一看片| 四川丰满少妇无套内谢| 正在播放国产剧情亂倫| 国产在线观看播放av| 又黄又硬又湿又刺激视频免费| 激情综合色综合啪啪开心| 色天天天综合网色天天| 国产综合AV一区二区三区无码| 精品日韩亚洲AV无码| 欧美乱码伦视频免费| 中文字幕在线亚洲日韩6页| www久久只有这里有精品| 亚洲欧美卡通另类丝袜美腿| 国产精品一区二区AV| 欧美老熟妇乱子伦牲交视频| 大地资源免费视频观看| 老色鬼永久精品网站| av中文字幕国产精品| 人妻少妇精品无码专区动漫| 亚洲色大成网站WWW永久麻豆| 亚洲另类精品无码专区 | 国产精成人品日日拍夜夜| 无遮挡H肉动漫在线观看| 亚洲综合精品成人| 日本阿v片在线播放免费| 国产萌白酱喷水视频在线观看| 少妇无套内谢免费视频| 久久久久亚洲AV成人网人人软件| 国偷自产一区二区三区在线视频| 99久久无码私人网站| 国产美女裸体无遮挡免费视频| 国产亚洲AV电影院之毛片|