Closed ifcheung2012 closed 2 years ago
如何通过接口获取一只股票当日的炸板次数和一段时间内的连板次数
这是一个获取某日涨停股信息的代码,你可以根据它实现你说的两个需求
import pandas as pd
import requests
from datetime import datetime
from jsonpath import jsonpath
def get_zt_stock_rank(date: str = None) -> pd.DataFrame:
"""
获取指定日期涨停股票行情
Parameters
----------
date : str
指定日期,默认为当前日期 格式形如 ``'20220506'``
Returns
-------
DataFrame
指定日期涨停股票行情
Fields
------
``['日期', '股票代码', '股票名称', '涨跌幅', '成交额', '封板资金', '流通市值', '最新价', '换手率','首次封板时间', '最后封板时间', '炸板次数', '连扳数', '所属行业']``
"""
if date is None:
date = datetime.today().strftime('%Y%m%d')
params = (
('ut', '7eea3edcaed734bea9cbfc24409ed989'),
('dpt', 'wz.ztzt'),
('Pageindex', '0'),
('pagesize', '10000'),
('sort', 'fbt:asc'),
('date', date),
)
response = requests.get(
'http://push2ex.eastmoney.com/getTopicZTPool', params=params, verify=False)
fields = {
'c': '股票代码',
'n': '股票名称',
'zdp': '涨跌幅',
'amount': '成交额',
'fund': '封板资金',
'ltsz': '流通市值',
'p': '最新价',
'hs': '换手率',
'fbt': '首次封板时间',
'lbt': '最后封板时间',
'zbc': '炸板次数',
'lbc': '连扳数',
'hybk': '所属行业'
}
items = jsonpath(response.json(), '$..pool[:]')
if not items:
df = pd.DataFrame(
columns=['日期']+list(fields.values())+['统计天数', '涨停次数'])
return df
df = pd.DataFrame(items)
extra_df: pd.DataFrame = pd.DataFrame.from_records(df['zttj']).rename(columns={
'days': '统计天数',
'ct': '涨停次数'
})
df: pd.DataFrame = pd.concat([df, extra_df], axis=1)
df: pd.DataFrame = df.rename(columns=fields)[fields.values()]
df['首次封板时间'] = df['首次封板时间'].apply(lambda x: pd.to_datetime(
str(x), format='%H%M%S').strftime('%H:%M:%S'))
df['最后封板时间'] = df['最后封板时间'].apply(lambda x: pd.to_datetime(
str(x), format='%H%M%S').strftime('%H:%M:%S'))
df['最新价'] /= 1000
df['涨跌幅'] = df['涨跌幅'].apply(lambda x: round(x, 2))
df.insert(0, '日期', date)
return df
df = get_zt_stock_rank('20220520')
df
运行结果
wow 感谢大佬! 非常感谢!
如何通过接口获取一只股票当日的炸板次数和一段时间内的连板次数