def get_day_all(date=None): """ 获取每日收盘行情 Parameters: ------------- date:交易日期,格式:YYYY-MM-DD Return: ------------- DataFrame code 代码, name 名称, p_change 涨幅%, price 现价, change 涨跌, open 今开, high 最高, low 最低, preprice 昨收, pe 市盈(动), volratio 量比, turnover 换手%, range 振幅%%, volume 总量, selling 内盘, buying 外盘, amount 总金额, totals 总股本(万), industry 细分行业, area 地区, floats 流通股本(万), fvalues 流通市值, abvalues AB股总市值, avgprice 均价, strength 强弱度%, activity 活跃度, avgturnover 笔换手, attack 攻击波%, interval3 近3月涨幅 ,interval 近6月涨幅 """ wdate = du.last_tddate() if date is None else date wdate = wdate.replace('-', '') if wdate < '20170614': return None datepre = '' if date is None else wdate[0:4] + wdate[4:6] + '/' df = pd.read_csv(ct.ALL_DAY_FILE%(datepre, \ 'hq' if date is None else wdate), \ dtype={'code':'object'}) return df
def get_stock_basics(date=None): """ 获取沪深上市公司基本情况 Parameters date:日期YYYY-MM-DD,默认为上一个交易日,目前只能提供2016-08-09之后的历史数 据 Return -------- DataFrame code,代码 name,名称 industry,细分行业 area,地区 pe,市盈率 outstanding,流通股本 totals,总股本(万) totalAssets,总资产(万) liquidAssets,流动资产 fixedAssets,固定资产 reserved,公积金 reservedPerShare,每股公积金 eps,每股收益 bvps,每股净资 pb,市净率 timeToMarket,上市日期 """ wdate = du.last_tddate() if date is None else date wdate = wdate.replace('-', '') if wdate < '20160809': return None datepre = '' if date is None else wdate[0:4] + wdate[4:6] + '/' #url='http://file.tushare.org/tsdata/all.csv' #request = Request(url) request = Request(ct.ALL_STOCK_BASICS_FILE % (datepre, '' if date is None else wdate)) text = urlopen(request, timeout=10).read() text = text.decode('GBK') text = text.replace('--', '') df = pd.read_csv(StringIO(text), dtype={'code': 'object'}) df = df.set_index('code') return df
def top_list(date=None, retry_count=3, pause=0.001): """ 获取每日龙虎榜列表 Parameters -------- date:string 明细数据日期 format:YYYY-MM-DD 如果为空,返回最近一个交易日的数据 retry_count : int, 默认 3 如遇网络等问题重复执行的次数 pause : int, 默认 0 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题 Return ------ DataFrame code:代码 name :名称 pchange:涨跌幅 amount:龙虎榜成交额(万) buy:买入额(万) bratio:占总成交比例 sell:卖出额(万) sratio :占总成交比例 reason:上榜原因 date :日期 """ if date is None: if du.get_hour() < 18: date = du.last_tddate() else: date = du.today() else: if (du.is_holiday(date)): return None for _ in range(retry_count): time.sleep(pause) try: request = Request( rv.LHB_URL % (ct.P_TYPE['http'], ct.DOMAINS['em'], date, date)) text = urlopen(request, timeout=10).read() text = text.decode('GBK') text = text.split('_1=')[1] text = eval( text, type('Dummy', (dict, ), dict(__getitem__=lambda s, n: n))()) text = json.dumps(text) text = json.loads(text) df = pd.DataFrame(text['data'], columns=rv.LHB_TMP_COLS) df.columns = rv.LHB_COLS df['buy'] = df['buy'].astype(float) df['sell'] = df['sell'].astype(float) df['amount'] = df['amount'].astype(float) df['Turnover'] = df['Turnover'].astype(float) df['bratio'] = df['buy'] / df['Turnover'] df['sratio'] = df['sell'] / df['Turnover'] df['bratio'] = df['bratio'].map(ct.FORMAT) df['sratio'] = df['sratio'].map(ct.FORMAT) df['date'] = date for col in ['amount', 'buy', 'sell']: df[col] = df[col].astype(float) df[col] = df[col] / 10000 df[col] = df[col].map(ct.FORMAT) df = df.drop('Turnover', axis=1) except: pass else: return df raise IOError(ct.NETWORK_URL_ERROR_MSG)
def top_list(date=None, retry_count=3, pause=0.001): """ 获取每日龙虎榜列表 Parameters -------- date:string 明细数据日期 format:YYYY-MM-DD 如果为空,返回最近一个交易日的数据 retry_count : int, 默认 3 如遇网络等问题重复执行的次数 pause : int, 默认 0 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题 Return ------ DataFrame code:代码 name :名称 pchange:涨跌幅 amount:龙虎榜成交额(万) buy:买入额(万) bratio:占总成交比例 sell:卖出额(万) sratio :占总成交比例 reason:上榜原因 date :日期 """ if date is None: if du.get_hour() < 18: date = du.last_tddate() else: date = du.today() else: if (du.is_holiday(date)): return None for _ in range(retry_count): time.sleep(pause) try: request = Request(rv.LHB_URL % (ct.P_TYPE['http'], ct.DOMAINS['em'], date)) text = urlopen(request, timeout=10).read() text = text.decode('GBK') html = lxml.html.parse(StringIO(text)) res = html.xpath("//table[@id=\"dt_1\"]") if ct.PY3: sarr = [etree.tostring(node).decode('utf-8') for node in res] else: sarr = [etree.tostring(node) for node in res] sarr = ''.join(sarr) df = pd.read_html(sarr)[0] df.columns = [i for i in range(1, 12)] df = df.apply(_f_rows, axis=1) df = df.fillna(method='ffill') df = df.drop([1, 4], axis=1) df.columns = rv.LHB_COLS df = df.drop_duplicates() df['code'] = df['code'].astype(int) df['code'] = df['code'].map(lambda x: str(x).zfill(6)) df['date'] = date except: pass else: return df raise IOError(ct.NETWORK_URL_ERROR_MSG)
def top_list(date = None, retry_count=3, pause=0.001): """ 获取每日龙虎榜列表 Parameters -------- date:string 明细数据日期 format:YYYY-MM-DD 如果为空,返回最近一个交易日的数据 retry_count : int, 默认 3 如遇网络等问题重复执行的次数 pause : int, 默认 0 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题 Return ------ DataFrame code:代码 name :名称 pchange:涨跌幅 amount:龙虎榜成交额(万) buy:买入额(万) bratio:占总成交比例 sell:卖出额(万) sratio :占总成交比例 reason:上榜原因 date :日期 """ if date is None: if du.get_hour() < 18: date = du.last_tddate() else: date = du.today() else: if(du.is_holiday(date)): return None for _ in range(retry_count): time.sleep(pause) try: request = Request(rv.LHB_URL%(ct.P_TYPE['http'], ct.DOMAINS['em'], date)) text = urlopen(request, timeout=10).read() text = text.decode('GBK') html = lxml.html.parse(StringIO(text)) res = html.xpath("//table[@id=\"dt_1\"]") if ct.PY3: sarr = [etree.tostring(node).decode('utf-8') for node in res] else: sarr = [etree.tostring(node) for node in res] sarr = ''.join(sarr) df = pd.read_html(sarr)[0] df.columns = [i for i in range(1,12)] df = df.apply(_f_rows, axis=1) df = df.fillna(method='ffill') df = df.drop([1, 4], axis=1) df.columns = rv.LHB_COLS df = df.drop_duplicates() df['code'] = df['code'].astype(int) df['code'] = df['code'].map(lambda x: str(x).zfill(6)) df['date'] = date except: pass else: return df raise IOError(ct.NETWORK_URL_ERROR_MSG)