八、AI量化投资:akshare连板接力20260506股票池获取
·
交易模式
筛选今天涨停的股票,用于第二天打板。包括一进二、二进三以及更高的板。后续会研究每个股的连板概率,敬请期待!
实施过程
获取20260506所有的涨停股票,通过一套筛选模式,获取可打板股票池。还有哪些筛选条件,欢迎打到评论区。
筛选标准
- 股价≤30元
- 总市值≤300亿
- 流通市值≤250亿
- 最后封板时间 ≤ 14:30(下午两点半)
- 炸板次数 ≤ 5
- 排除断板再涨停的股票
- 封成比≤5%
代码如下:
import akshare as ak
import pandas as pd
from datetime import datetime
# 1. 获取数据(你指定的接口和日期)
stock_zt_pool_em_df = ak.stock_zt_pool_em(date='20260506')
# 防护:如果数据为空直接退出
if stock_zt_pool_em_df.empty:
print("无涨停数据")
else:
# 2. 确保列名存在,转换连板数为数字(排序必须)
if '连板数' in stock_zt_pool_em_df.columns:
stock_zt_pool_em_df['连板数'] = pd.to_numeric(stock_zt_pool_em_df['连板数'], errors='coerce')
# ===================== 筛选1:仅保留10%涨停的主板股票 =====================
main_board_prefix = ['60', '00']
stock_zt_pool_em_df = stock_zt_pool_em_df[
stock_zt_pool_em_df['代码'].str.startswith(tuple(main_board_prefix))
]
if stock_zt_pool_em_df.empty:
print("无10%涨停的主板股票数据")
exit()
# ===================== 筛选2:剔除高价+大市值股票(核心新增) =====================
# 转换价格、市值为数值类型(防止数据格式报错)
df_filter = stock_zt_pool_em_df.copy()
df_filter['最新价'] = pd.to_numeric(df_filter['最新价'], errors='coerce')
df_filter['总市值'] = pd.to_numeric(df_filter['总市值'], errors='coerce')
df_filter['流通市值'] = pd.to_numeric(df_filter['流通市值'], errors='coerce')
# ---------- 新增:处理最后封板时间格式,用于筛选 ----------
# 清理时间格式(去掉1900-01-01 前缀)
df_filter['最后封板时间'] = df_filter['最后封板时间'].astype(str).str.replace('1900-01-01 ', '',
regex=False)
df_filter['最后封板时间'] = df_filter['最后封板时间'].str.strip().astype('Int64')
# 转换为时间对象(处理空值/格式错误)
# def parse_time(time_str):
# try:
# return datetime.strptime(time_str, '%H:%M:%S') if len(time_str) >= 8 else datetime.strptime(time_str,
# '%H:%M')
# except:
# return None # 格式错误标记为None
#
#
# df_filter['最后封板时间_dt'] = df_filter['最后封板时间_clean'].apply(parse_time)
# # 定义14:30的时间对象用于比较
# cutoff_time = datetime.strptime('14:30:00', '%H:%M:%S')
# ---------- 核心过滤条件(新增最后封板时间≤14:30) ----------
df_filter = df_filter[
(df_filter['最新价'] <= 30) & # 股价 ≤30元
(df_filter['总市值'] <= 30000000000) & # 总市值 ≤300亿元
(df_filter['流通市值'] <= 25000000000) & # 流通市值 ≤250亿元
(df_filter['最后封板时间'] <= 143000) & # 最后封板时间 ≤14:30
(df_filter['炸板次数'] <= 5) & # 炸板次数 ≤5
(df_filter['涨停统计'].str.split('/').str[0] == df_filter['涨停统计'].str.split('/').str[1]) & #排除断板
(df_filter['封板资金'] / df_filter['成交额'] >= 0.05) # 【封成比≥5%】
]
df_filter = df_filter[
((df_filter['涨停统计'] == '1/1') & (df_filter['换手率'] >= 3) & (df_filter['换手率'] <= 20)) |
(df_filter['涨停统计'] != '1/1') #如果是首板,换手率必须在3%到20%之间
]
# 防护:筛选后无数据直接退出
if df_filter.empty:
print("无符合条件(10%涨停+股价≤30元+总市值≤300亿+流通市值≤250亿+最后封板≤14:30)的股票")
exit()
# 3. 排序:连板数降序 → 首次封板时间升序
df_sorted = df_filter.sort_values(
by=['连板数', '首次封板时间'],
ascending=[False, True],
na_position='last'
).reset_index(drop=True)
# 清理时间格式
df_sorted['首次封板时间'] = df_sorted['首次封板时间'].astype(str).str.replace('1900-01-01 ', '', regex=False)
df_sorted['首次封板时间'] = df_sorted['首次封板时间'].str.strip()
# 4. 输出结果
print("=" * 80)
print("排序后:按连板数降序 | 连板数相同按首次封板时间升序")
print("筛选条件:10%主板涨停 + 股价≤30元 + 总市值≤300亿 + 流通市值≤250亿")
print("=" * 80)
print(df_sorted[['代码', '名称', '最新价', '连板数', '首次封板时间', '最后封板时间', '所属行业']].to_string(index=False))
# 保存文件
df_sorted.to_csv('涨停股票排序结果.csv', encoding='utf-8-sig', index=False)
运行就,最终得到27只股票
| 名称 | 涨跌幅 | 最新价 | 换手率 | 首次封板时间 | 最后封板时间 | 炸板次数 | 连板数 | 所属行业 |
| 永杉锂业 | 10.00516 | 21.33 | 1.490904 | 92501 | 92501 | 0 | 4 | 能源金属 |
| 宝光股份 | 10.01192 | 18.46 | 8.120765 | 93033 | 93033 | 0 | 4 | 电网设备 |
| 跨境通 | 10.13699 | 4.02 | 11.45781 | 93539 | 93621 | 1 | 2 | 互联网电 |
| 安道麦A | 9.970675 | 7.5 | 2.486378 | 103536 | 103536 | 0 | 2 | 农化制品 |
| 华软科技 | 9.982175 | 6.17 | 11.82291 | 112639 | 112639 | 0 | 2 | 化学制品 |
| 盈新发展 | 10 | 3.08 | 3.523027 | 92500 | 92500 | 0 | 1 | 房地产开 |
| 美利云 | 9.989485 | 20.92 | 11.79201 | 93042 | 104227 | 2 | 1 | IT服务Ⅱ |
| 美年健康 | 9.944751 | 5.97 | 3.26729 | 93154 | 93154 | 0 | 1 | 医疗服务 |
| 康盛股份 | 9.929078 | 6.2 | 6.857163 | 93206 | 93206 | 0 | 1 | 家电零部 |
| 大业股份 | 10 | 12.32 | 5.484136 | 93642 | 93830 | 2 | 1 | 通用设备 |
| 合力泰 | 10.0346 | 3.18 | 7.76287 | 93727 | 93727 | 0 | 1 | 光学光电 |
| 锡华科技 | 9.996096 | 28.17 | 18.50924 | 94019 | 94931 | 1 | 1 | 风电设备 |
| 诚邦股份 | 10.00641 | 17.15 | 9.615585 | 94035 | 94035 | 0 | 1 | 基础建设 |
| 江南高纤 | 10.16949 | 3.25 | 7.305836 | 94047 | 94235 | 1 | 1 | 纺织制造 |
| 波导股份 | 9.95671 | 5.08 | 6.015568 | 94138 | 94429 | 2 | 1 | 消费电子 |
| 海鸥股份 | 9.986595 | 16.41 | 6.643846 | 95517 | 95517 | 0 | 1 | 通用设备 |
| 川润股份 | 10 | 19.03 | 12.36676 | 95639 | 95639 | 0 | 1 | 通用设备 |
| 海通发展 | 10.02017 | 16.36 | 6.721406 | 95824 | 95824 | 0 | 1 | 航运港口 |
| 奥康国际 | 9.963549 | 9.05 | 4.213894 | 100008 | 100008 | 0 | 1 | 服装家纺 |
| 深圳新星 | 9.985152 | 29.63 | 8.682801 | 101042 | 101042 | 0 | 1 | 金属新材 |
| 华源控股 | 10 | 21.34 | 8.210759 | 101151 | 101151 | 0 | 1 | 包装印刷 |
| 轻纺城 | 10 | 4.62 | 4.134537 | 101605 | 101605 | 0 | 1 | 一般零售 |
| 来伊份 | 9.981741 | 18.07 | 4.921528 | 102656 | 102656 | 0 | 1 | 休闲食品 |
| 大连热电 | 10.06452 | 8.53 | 10.38234 | 104233 | 104233 | 0 | 1 | 电力 |
| 兴民智通 | 10 | 6.6 | 8.347324 | 104736 | 104736 | 0 | 1 | 汽车零部 |
| 三湘印象 | 10.10309 | 5.34 | 4.214102 | 110030 | 110030 | 0 | 1 | 房地产开 |
| 鸿博股份 | 10.0061 | 18.03 | 14.71718 | 130024 | 130024 | 0 | 1 | 包装印刷 |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)