发布日期:2024-09-12 22:42 点击次数:126
在量化计较中,每每需要取得近似最新的股票代码表等磋磨的股票信息。天然不错网罗上不错很容易取得这些信息,但当处于离线或网罗景色欠安状态时,咱们不错从诸如《走漏信金融末端》之类的腹地数据中取得此类信息。 后头的一系列杂文,齐是纪录若何从腹地走漏信软件中取得磋磨的股票信息。
(一) 读取股票代码数据文献 一般走漏信的股票代码文献,位于'走漏信软件的安设目次/T0002/hq_cache/'下。由 shm.tnf 和 szm.tnf 两个文献分辩保存沪市和深市的股票代码信息。其中包括了在相应市集上的通盘来回家具的代码和称呼(股票AB,指数,基金等)。每个文献中的信息要求向上2万。
文献圭臬 数据文献是二进制字节圭臬,由文献头和数据体组成。
-- 文献头:包含 50 个Byte,其中 [ 0:40] -> 40个Byte,IPv4地址,纪录软件临了登陆的行情主站IP地址,不及的字节由'\x00'填充,以'\x01''放胆; [40:42] -> 2个Byte,端标语; [42:46] -> 4个Byte,日历(YYYYMMDD); [46:50] -> 4个Byte,本事(Hmmss);
-- 数据体:每个股票信息纪录在 314 个Byte的数据块内,其中 [ 0: 6] -> 6个Byte,股票代码; [23:41] -> 18个Byte,股票称呼,不及的字节由'\x00'填充; [276:280] -> 4个Byte,昨收盘价; [285:293] -> 4个Byte,股票称呼拼音字头
这个数据块内,其他位置有一些数据,比如 [86:90] 4个Byte不知谈是什么含义,[76:78] 2个Byte永久齐是'\xcbB',或者是暗意 200Byte?之后非凡据。
Python 代码
点击梭巡代码# -*- coding: utf-8 -*- ''' Created on Sat Apr 2 17:04:16 2022 读取腹地走漏信股票文献 d:/new_tdx/T0002/hq_cache/shm.tnf,,szm.tnf :文献头(<40sH2I) 50字节,IP-40字节,端标语-2字节,日历-4字节,本事-4字节 :股票或指数代码 314字节 @author: starleex ''' import struct import pandas as pd def get_stock_name_shm(mkt ='sz'): file = f'd:/new_tdx/T0002/hq_cache/{mkt}m.tnf' with open(file,'rb') as f : buff = f.read() data = buff[50:] l = len(data) // 314 fx =lambda x : str(x,encoding='gbk').strip('\x00') sm = {'sz':('00','30'),'sh':('60','68')} stocks =[] for x in [data[i*314 :(i 1)*314] for i in range(l)] : code = fx(x[:6]) if code.startswith(sm[mkt]) : name = fx(x[23:41]) lclose =round(struct.unpack('<f',x[276:280])[0],2) attr = fx(x[285:293]) stocks =[ [code,name,lclose,attr] ] data_head = buff[:50] return data_head,stocks if __name__ == '__main__': d,s = get_stock_name_shm() df = pd.DataFrame(s,columns=['代码','称呼','前收盘','简码']) # hd = struct.unpack('<40sH2I', d) # print(hd)本站仅提供存储工作,通盘骨子均由用户发布,如发现存害或侵权骨子,请点击举报。