一、环境安装
pip install pandas
pip install requests
pip install mootdx
二、代码
from mootdx.quotes import Quotes
import pandas as pd
import requests
import time
import json
client = Quotes.factory(market='std')
def get_open_limit_pool(date='20241021'):
'''
炸板池
'''
url='https://data.10jqka.com.cn/dataapi/limit_up/open_limit_pool?'
params={
'page': '1',
'limit': '15',
'field': '199112,9002,48,1968584,19,3475914,9003,10,9004',
'filter': 'HS,GEM2STAR',
'order_field': '199112',
'order_type': '0',
'date':f'{date}',
'_': '1695696646721',
}
res=requests.get(url=url,params=params)
text=res.text
if len(str(text))<70:
return False,''
else:
try:
text=res.json()
df=pd.DataFrame(text['data']['info'])
columns=['开板次数','首次涨停时间','最后涨停时间','证券代码','涨停形态','封单量',
'_','最近一年封板率','流通市值','_','_','涨跌幅','换手率','涨停原因',
'封单额','几天几板','股票名称','_','_','_','最新价','time_preview']
#del df['_']
return True,df
except:
return False,''
def read_func_data(func="get_open_limit_pool(date='20241021')"):
'''
读取同花顺返回的tuple数据转pandas
'''
text=func
while True:
stats,df=eval(text)
if stats==True:
df=df
break
else:
print('获取不成功{}'.format(func))
return df
catdate = '20241015'
catdate2 = '2024-10-15'
df = read_func_data(func="get_limit_up_pool(date='%s')"%catdate)
df['封单额'] = df['封单额']/100000000
df = df[['证券代码','股票名称','首次涨停时间','涨停形态','几天几板','封单额']]
df = pd.DataFrame(df)
df['次日开盘涨幅'] = ""
df['次日收盘涨幅'] = ""
df = df.sort_values(by='首次涨停时间', ascending=True) #按首次涨停时间排序
for i in range(len(df)):
code = df.iloc[i]['证券代码']
name = df.iloc[i]['股票名称']
data = client.bars(symbol=code, frequency=9, offset=10) #获取最近300日贵州茅台k线
# print(data.iloc)
for j in range(len(data)):
if catdate2 in str(data.iloc[j]['datetime']):
lastclose = data.iloc[j]['close']
open = data.iloc[j+1]['open']
close = data.iloc[j+1]['close']
try:
copy = df.iloc[i]
copy['次日开盘涨幅'] = round((float(open)/float(lastclose)-1)*100,2)
copy['次日收盘涨幅'] = round((float(close)/float(lastclose)-1)*100,2)
#涨停时间戳转9:30 这种容易理解数字
copy['首次涨停时间'] = time.strftime("%H:%M", time.localtime(int(copy['首次涨停时间'])))
df.iloc[i] = copy
except Exception as e:
print(code,name,'error')
print(df)
df.to_excel("涨停.xlsx")