def get_cb_historical_from_ttjj(code): if code.startswith("SH") or code.startswith("SZ"): code = code[2:] params = { "type": "RPTA_WEB_KZZ_LS", "sty": "ALL", "source": "WEB", "p": "1", "ps": "8000", "st": "date", "sr": "1", "filter": "(zcode={code})".format(code=code), } url = "http://datacenter.eastmoney.com/api/data/get" data = [] r = rget_json(url, params=params) data.extend(r["result"]["data"]) if int(r["result"]["pages"]) > 1: for i in range(2, int(r["result"]["pages"]) + 1): params["p"] = str(i) r = rget_json(url, params=params) data.extend(r["result"]["data"]) df = pd.DataFrame(data) df["date"] = pd.to_datetime(df["DATE"]) df["bond_value"] = df["PUREBONDVALUE"] df["swap_value"] = df["SWAPVALUE"] df["close"] = df["FCLOSE"] return df[["date", "close", "bond_value", "swap_value"]]
def get_sz_status(category="cb", date=None): if not date: date = today_obj().strftime("%Y%m%d") date = date.replace("/", "").replace("-", "") date = date[:4] + "-" + date[4:6] + "-" + date[6:] url = "http://www.szse.cn/api/report/ShowReport/data?" if category in ["cb", "kzz"]: url += "SHOWTYPE=JSON&CATALOGID=1277&TABKEY=tab1&txtDate={date}".format( date=date) r = rget_json(url) df = pd.DataFrame(r[0]["data"]) if len(df) == 0: return pcode = re.compile(r".*&DM=([\d]*)&.*") pname = re.compile(r"^([^&]*)&.*") df["证券代码"] = df["kzjcurl"].apply( lambda s: re.match(pcode, s).groups()[0]) df["证券简称"] = df["kzjcurl"].apply( lambda s: re.match(pname, s).groups()[0]) df["上市日期"] = pd.to_datetime(df["ssrq"]) df["发行量"] = df["fxlnew"] df["换股价格"] = df["kzjg"] df["未转股数量"] = df["kzsl"] df["未转股比例"] = df["kzbl"] df["转股截止日期"] = pd.to_datetime(df["kzzzrq"]) df = df[[ "证券代码", "证券简称", "上市日期", "发行量", "换股价格", "未转股数量", "未转股比例", "转股截止日期" ]] return df
def get_sz_fs(code): url = "http://www.szse.cn/api/report/ShowReport/data?SHOWTYPE=JSON&\ CATALOGID=1945_LOF&txtQueryKeyAndJC={code}".format( code=code ) r = rget_json(url) return _float(r[0]["data"][0]["dqgm"]) * 1e4
def get_history( code, prefix="SH", count=365, token="a664afb60c7036c7947578ac1a5860c4cfb6b3b5" ): url = "https://stock.xueqiu.com/v5/stock/chart/kline.json?symbol={prefix}{code}&begin={tomorrow}&period=day&type=before&count=-{count}" data = rget_json( url.format( code=code, prefix=prefix, tomorrow=int(tomorrow_ts() * 1000), count=count ), cookies={"xq_a_token": token}, headers={"user-agent": "Mozilla/5.0"}, ) return data
def get_xueqiu_rt(code, token="a664afb60c7036c7947578ac1a5860c4cfb6b3b5"): url = "https://stock.xueqiu.com/v5/stock/quote.json?symbol={code}&extend=detail" r = rget_json( url.format(code=code), cookies={"xq_a_token": token}, headers={"user-agent": "Mozilla/5.0"}, ) n = r["data"]["quote"]["name"] q = r["data"]["quote"]["current"] q_ext = r["data"]["quote"].get("current_ext", None) percent = r["data"]["quote"]["percent"] currency = r["data"]["quote"]["currency"] return { "name": n, "current": _float(q), "percent": _float(percent), "current_ext": _float(q_ext) if q_ext else None, "currency": currency, }
def get_sh_status(category="cb", date=None): url = "http://query.sse.com.cn/commonQuery.do?jsonCallBack=&" if category in ["cb", "kzz"]: url += "isPagination=false&sqlId=COMMON_BOND_KZZFLZ_ALL&KZZ=1" elif category in ["fund", "fs"]: if not date: date = today_obj().strftime("%Y%m%d") date = date.replace("/", "").replace("-", "") url += "&sqlId=COMMON_SSE_FUND_LOF_SCALE_CX_S&pageHelp.pageSize=10000&FILEDATE={date}".format( date=date) else: raise ParserFailure("unrecoginzed category %s" % category) r = rget_json( url, headers={ "user-agent": "Mozilla/5.0", "Host": "query.sse.com.cn", "Referer": "http://www.sse.com.cn/market/bonddata/data/convertible/", }, ) return pd.DataFrame(r["result"])
def get_ttjj_suggestions(keyword): url = "http://fundsuggest.eastmoney.com/FundSearch/api/FundSearchAPI.ashx?callback=&m=1&key={key}".format( key=keyword) r = rget_json(url) return r["Datas"]