def get_tick_data(self, symbol, date, expire=60 * 24 * 365 * 10): """ 获取一支股票一天的tick数据保存到本地 -------- symbol: string,股票代码 date: string,1900-01-01 """ if not os.path.exists(CT.TICK_DIR): os.makedirs(CT.TICK_DIR) if not os.path.exists(CT.TICK_DIR + symbol): os.makedirs(CT.TICK_DIR + symbol) file_path = CT.TICK_DIR + symbol + '/' + date expired = date_time.check_file_expired(file_path, expire) if expired: d = ts.get_tick_data(symbol, date) #过掉当天没数据的 if len(d) > 10: d.to_csv(file_path) else: d = pd.read_csv(file_path) #过掉当天没数据的 if len(d) > 10: return d else: return ''
def get_tick_data(self, symbol, date, expire=60*24*365*10): """ 获取一支股票一天的tick数据保存到本地 -------- symbol: string,股票代码 date: string,1900-01-01 """ if not os.path.exists(CT.TICK_DIR): os.makedirs(CT.TICK_DIR) if not os.path.exists(CT.TICK_DIR + symbol): os.makedirs(CT.TICK_DIR + symbol) file_path = CT.TICK_DIR + symbol + '/' + date expired = date_time.check_file_expired(file_path, expire) if expired or not os.path.exists(file_path): d = ts.get_tick_data(symbol, date) #过掉当天没数据的 if d is None or len(d) < 10: return None d.to_csv(file_path, sep='\t') if not os.path.exists(file_path): return None d = pd.read_csv(file_path, sep='\t', index_col=1) #过掉当天没数据的 if d is None or len(d) < 10: return None return d
def get_stock_basics(self, expire=60*6): """ 获取沪深上市公司基本情况 :param expire: 本地数据失效时间(分),超过时间更新本地数据,强制更新传0 @result: code,代码 name,名称 industry,所属行业 area,地区 pe,市盈率 outstanding,流通股本 totals,总股本(万) totalAssets,总资产(万) liquidAssets,流动资产 fixedAssets,固定资产 reserved,公积金 reservedPerShare,每股公积金 eps,每股收益 bvps,每股净资 pb,市净率 timeToMarket,上市日期 """ if not os.path.exists(CT.BASICS_DIR): os.makedirs(CT.BASICS_DIR) basics_file_path = CT.BASICS_DIR + './basics.csv' expired = date_time.check_file_expired(basics_file_path, expire) if expired or not os.path.exists(basics_file_path): d = ts.get_stock_basics() d = d.sort_index() #d.to_csv(CT.BASICS_DIR + './basics.csv', sep='\t', index=True) d.to_csv(CT.BASICS_DIR + './basics.csv', sep='\t') all_stock_symbol = open(CT.BASICS_DIR + './symbols.csv', 'w') stock_symbol = [] for symbol in d['name'].index: stock_symbol.append(symbol + '\n') all_stock_symbol.writelines(stock_symbol) all_stock_symbol.close() #return d d = pd.read_csv(basics_file_path, sep='\t', index_col=0) #d = pd.read_csv(basics_file_path) return d
def get_hsgt_his(self, days=30, market_type=1, expire=60 * 6): """ 得到沪股通、深股通 历史资金数据 资金单位百万 """ if not os.path.exists(CT.HSGT_DIR): os.makedirs(CT.HSGT_DIR) file_path = CT.HSGT_DIR + 'hsgt_his_%d_%d' % (days, market_type) expired = date_time.check_file_expired(file_path, expire) if expired or not os.path.exists(file_path): hsgt_his_detail = self._request(self.hsgt_his_api % (market_type, days)) hsgt_his_result = json.loads(hsgt_his_detail) date = [] zjlr = [] jme = [] mrcje = [] mccje = [] for v in hsgt_his_result: date.append(v['DetailDate'][:10]) zjlr.append(v['DRZJLR']) jme.append(v['DRCJJME']) mrcje.append(v['MRCJE']) mccje.append(v['MCCJE']) data = { 'date': date, 'zjlr': zjlr, 'jme': jme, 'mrcje': mrcje, 'mccje': mccje } d = pd.DataFrame(data, columns=['date', 'zjlr', 'jme', 'mrcje', 'mccje']) d.to_csv(file_path, sep='\t', index=False) if not os.path.exists(file_path): return None d = pd.read_csv(file_path, sep='\t', index_col='date') return d
def get_h_data(self, symbol, expire=60): """ 获取一支股票所有历史数据保存到本地 """ if not os.path.exists(CT.HIS_DIR): os.makedirs(CT.HIS_DIR) file_path = CT.HIS_DIR + symbol expired = date_time.check_file_expired(file_path, expire) if expired: today = date_time.get_today_str() d = ts.get_h_data(symbol, autype=None, start=CT.START, end=today, drop_factor=False) d.to_csv(CT.HIS_DIR + symbol) return d else: d = pd.read_csv(file_path) return d
def get_h_data(self, symbol, expire=60*6): """ 获取一支股票所有历史数据保存到本地 """ if not os.path.exists(CT.HIS_DIR): os.makedirs(CT.HIS_DIR) file_path = CT.HIS_DIR + symbol expired = date_time.check_file_expired(file_path, expire) if expired or not os.path.exists(file_path): today = date_time.get_today_str() d = ts.get_h_data(symbol, autype=None, start=CT.START, end=today, drop_factor=False) #index = [] #for i in list(d.index): # index.append(date_time.date_to_str(i)) #d = d.reindex(index, method='ffill') if d is None: return d d.to_csv(CT.HIS_DIR + symbol, sep='\t') #return d if not os.path.exists(file_path): return None d = pd.read_csv(file_path, sep='\t', index_col=0) return d
def get_hsgt_top(self, date_str, expire=60 * 24 * 30): """ 得到沪股通、深股通 十大成交股 """ if not os.path.exists(CT.HSGT_DIR): os.makedirs(CT.HSGT_DIR) file_path = CT.HSGT_DIR + date_str expired = date_time.check_file_expired(file_path, expire) if expired or not os.path.exists(file_path): hgt_top_detail = self._request(self.hsgt_top_api % ('HGT', date_str, 1)) hgt_grep_result = self.hsgt_top_format.finditer(hgt_top_detail) hgt_top_result = [] for stock_match_object in hgt_grep_result: groups = stock_match_object.groups() hgt_top_result = json.loads(groups[0]) sgt_top_result = [] sgt_top_detail = self._request(self.hsgt_top_api % ('SGT', date_str, 3)) sgt_grep_result = self.hsgt_top_format.finditer(sgt_top_detail) for stock_match_object in sgt_grep_result: groups = stock_match_object.groups() sgt_top_result = json.loads(groups[0]) code = [] name = [] change = [] jme = [] mrje = [] mcje = [] cjje = [] ratio = [] market = [] if hgt_top_result: for v in hgt_top_result: code.append(v['Code']) name.append(v['Name'].encode('utf-8')) change.append(v['ChangePercent']) if v['HGTJME'] == '-': v['HGTJME'] = 0 if v['HGTMRJE'] == '-': v['HGTMRJE'] = 0 if v['HGTMCJE'] == '-': v['HGTMCJE'] = 0 if v['HGTCJJE'] == '-': v['HGTCJJE'] = 0.1 / (2 ^ 64 - 1) jme.append(v['HGTJME']) mrje.append(v['HGTMRJE']) mcje.append(v['HGTMCJE']) cjje.append(v['HGTCJJE']) ratio.append(v['HGTMRJE'] / v['HGTCJJE']) market.append(1) if sgt_top_result: for v in sgt_top_result: code.append(v['Code']) name.append(v['Name'].encode('utf-8')) change.append(v['ChangePercent']) jme.append(v['SGTJME']) mrje.append(v['SGTMRJE']) mcje.append(v['SGTMCJE']) cjje.append(v['SGTCJJE']) ratio.append(v['SGTMRJE'] / v['SGTCJJE']) market.append(3) data = { 'code': code, 'name': name, 'change': change, 'jme': jme, 'mrje': mrje, 'mcje': mcje, 'cjje': cjje, 'ratio': ratio, 'market': market } #d = pd.DataFrame(data, index=code, columns=['name', 'jme', 'mrje', 'mcje', 'cjje', 'market']) d = pd.DataFrame(data, columns=[ 'code', 'name', 'change', 'jme', 'mrje', 'mcje', 'cjje', 'ratio', 'market' ]) #d.to_csv(file_path, sep='\t') d.to_csv(file_path, sep='\t', index=False) if not os.path.exists(file_path): return pd.DataFrame() #d = pd.read_csv(file_path, sep='\t', index_col=0) d = pd.read_csv(file_path, sep='\t', index_col='code') code = [] for c in d.index: code.append("{:0>6d}".format(c)) name = list(d['name']) change = list(d['change']) jme = list(d['jme']) mrje = list(d['mrje']) mcje = list(d['mcje']) cjje = list(d['cjje']) ratio = list(d['ratio']) market = list(d['market']) data = { 'code': code, 'name': name, 'change': change, 'jme': jme, 'mrje': mrje, 'mcje': mcje, 'cjje': cjje, 'ratio': ratio, 'market': market } d = pd.DataFrame(data, index=code, columns=[ 'code', 'name', 'change', 'jme', 'mrje', 'mcje', 'cjje', 'ratio', 'market' ]) return d