EasyMoney - A股自动化短线交易系统
项目简介
EasyMoney 是一个基于 Python 的全自动化 A 股短线交易系统,实现了零主观、全量化、铁律执行的交易体系。系统部署在云服务器上全天候运行,基于东方财富市场数据与阿里千问 AI 大模型,结合 SmartTag 智能选股、BoardRank 板块隔离、BuyAnalyzer AI 买入分析、RiskAnalyzer AI 风险分析,实现从选股、买入、持仓管理到卖出的全链路自动化。
核心原则
- 零主观:所有决策由规则 + AI 驱动,消除人为干预
- 全量化:买卖条件完全量化,精确到分钟级执行
- 铁律执行:自动化系统强制执行规则,避免情绪化操作
- 只吃确定性利润:通过多层过滤 + AI 筛查确保交易机会的确定性
系统架构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
交易体系详解
一、选股范围
- 可交易市场:沪主板、深主板、创业板
- 绝对排除:ST、*ST、退市风险、利空暴雷问题股票
二、动态梯度持仓控制
系统采用动态梯度持仓管理,根据当前持仓数量自动调节买入权限:
| 档位 | 持仓数量 | 买入权限 |
|---|---|---|
| 宽松档 | ≤4只 | 可执行强势回调买入策略 |
| 限制档 | =5只 | 仅允许执行强势回调策略 |
| 禁仓档 | ≥6只 | 全面禁止任何新开仓、补仓操作 |
| 满仓档 | =8只 | 当日直接禁止所有买入、补仓操作 |
参数配置:最大持仓上限 N=8(可自定义),单只个股计划买入金额 = 账户总资产 ÷ 8
三、买入策略(当前启用:热门止跌策略)
所有买入操作在尾盘 14:55 执行。系统采用单一核心策略,精准捕捉主升浪,避开垃圾时间:
核心策略:热门止跌策略(HotStop)
选股流程:
SmartTag 全字段数据获取:调用东方财富 SmartTag API,获取热门止跌条件股的完整字段数据,字段清洗规则:
<80>→_W(周线),<140>→_NR(不复权),{日期}去除,[区间]总和去除。结合 StockQuote 批量行情接口,完整字段说明如下(去重):基础信息:序号、股票代码、股票名称、市场简称(SH/SZ/BJ)、市场码、上市板块、是否自选股、是否ST、是否退市
- 行情数据:最新价、涨跌幅、涨跌额、开盘价、昨收价、最高价、最低价(日线不复权)、买入价(买一)、卖出价(卖一)、振幅、量比、换手率、成交额、成交量、涨速、涨速比率、现手、区间涨跌幅
- 技术指标:均线多头排列、阶段强势股、MACD值(日线/周线)、MACD DIF值(日线/周线)、MACD DEA值(日线/周线)、KDJ J/K/D值(日线/周线)
- 资金流向:主力净流入、主力净额N日总和、增仓占比、区间增仓占比、集合竞价、超大单流入/流出/净额/净占比、大单流入/流出/净额/净占比、中单流入/流出/净额/净占比、小单流入/流出/净额/净占比、沪深股通净买入额
- DDX/DDY/DDZ:当日DDX/DDY/DDZ、5日DDX/DDY、10日DDX/DDY、DDX飘红天数(连续/5日内/10日内)
- 筹码与股东:沪深股通持仓占流通股比、70%筹码集中度、90%筹码集中度、A股股东户数、A股股东户数增长率、股东总户数、股东总户数增长率、股东户数变动日期、人均持股数、总股本、流通股
- 估值与市值:市盈率(动)、市净率、总市值(不复权)、流通市值(不复权)、每股收益、每股净资产、净资产收益率ROE(加权)
- 财务数据:营业收入、营业收入同比、营业利润、投资收益、利润总额、净利润、净利润同比、未分配利润、每股未分配利润、毛利率
- 资产负债:总资产、流动资产、固定资产、无形资产、总负债、流动负债、长期负债、资产负债比率、股东权益、股东权益比、公积金、每股公积金
- 板块归属:所属行业板块、所属地区板块、所属概念板块
- 其他:股吧人气排名、机构评级
- BoardRank 板块标注:并发查询每只股票所属的二级行业板块,添加
BOARD_NAME字段 - BuyAnalyzer AI 分析:调用阿里千问大模型,结合近14天资讯/公告/公司大事,对每只候选股进行风险筛查与上涨潜力打分,输出
IS_RISK/RISK_COMMENT/SCORE/PRIORITY字段 - 数据缓存:AI 分析结果缓存至类变量,各实例共享,避免重复 API 请求
- 多层过滤:排除风险股、ST/退市股、价格超限股、已持仓股、已持仓板块股、撤单股
- 优先级排序:按 AI 打分的
PRIORITY升序排列,优先买入评分最优的股票
SmartTag 筛选前置条件: - 东方财富当日人气前300 - 涨跌幅区间 -2%~4% - 量比 0.4~2.8 - 日线均线多头排列 - 日线阶段强势股
适用场景:捕捉强势股回调后的止跌反弹机会
防重入机制:同一策略子类同时只允许一个 buy() 执行,防止定时任务重叠;每个策略子类当日最多买入 buy_number 只股票,跨日自动重置
已禁用策略
策略一:超跌人气策略(已禁用)
- 个股当日涨跌幅 ≤ 0%
- 5日内涨跌幅 < -10%
- 东方财富当日实时人气股前500
- MACD DIF > 0.5 且 < 1.2(周线周期)
禁用原因:逆势抄底风险大,超跌股可能继续下跌,与右侧短线体系不匹配
策略二:趋势拐头策略(已禁用)
- 个股趋势拐头向上(5日均线上穿10日均线,且当日收盘价在5日均线之上)
- 个股当日下跌
- 东方财富当日实时人气股前500
- 量比 ≥ 0.5 且 ≤ 2.5
禁用原因:热门止跌策略已完全覆盖其选股逻辑,且均线多头+阶段强势双重过滤更安全
四、买入统一前置硬性条件
- 持仓未达最大持仓上限(N=8),且符合当前持仓档位对应的买入权限
- 二级行业板块隔离:现有持仓无同二级行业个股,通过
BoardRank模块获取股票所属二级行业,严格执行板块分散 - 当日卖出过的板块,当天不再买回
- 单只个股计划买入金额,固定为账户总资产÷8
- 当日大盘未触发极端熔断条件(14:55买入前检查)
- 全市场上涨家数 ≥ 2000(市场情绪偏弱时不开仓)
- 买入挂单价格:所有买入操作(含补差额)均以买1价挂单,宁可买不进也不愿损失滑点
五、二级行业板块隔离机制
系统通过 BoardRank 模块实现二级行业板块隔离:
板块数据获取: - 调用东方财富 API 获取股票所属的行业板块和概念板块信息 - 区分一级行业(如"电子")和二级行业(如"半导体"、"数字芯片设计") - 以二级行业作为板块隔离的基准单位
隔离规则: - 同一二级行业最多持有一只个股 - 优先选择行业排名靠前的优质个股 - 卖出某行业个股后,当日不再买回该行业股票
板块隔离的好处:
| 优势 | 说明 |
|---|---|
| 降低系统性风险 | 避免过度集中于单一行业,当某行业遭遇利空时不会全军覆没 |
| 分散投资 | 跨行业配置确保组合收益来源多样化 |
| 提高稳定性 | 平滑不同行业周期带来的波动,降低账户回撤幅度 |
| 捕捉多机会 | 同时参与多个热点行业,不错失市场轮动机会 |
| 风控增强 | 防止行业黑天鹅事件对账户造成致命打击 |
尾盘买卖执行机制
14:54 止盈清仓检查与 14:55 买入卖出虽时间接近,但不会冲突:止盈清仓逻辑极简,比例达标即全仓卖出,耗时极短;卖出完成后,14:55 的买入操作在空仓状态下执行,反而获得最大的买入权限。若未触发清仓,14:55 的卖出策略逻辑同样极简,触发条件即执行;买入需依次判断大盘熔断、上涨家数、仓位等多重条件,消耗时间远大于卖出,因此卖出总是先于买入完成。
- 买入重试:尾盘买入策略每30秒执行一次,14:55-14:57可对同一只股票最多重试4次买入
- 订单监控:每10秒自动扫描挂单,若买入订单价格低于当前实际价格则撤单重挂,卖出订单价格高于当前实际价格则撤单重挂,确保每次30秒重试都能以最新价格尝试成交
六、卖出规则(铁律执行)
1. 盘中实时卖出(全天自动监控,触发立即100%全仓卖出)
- 任何一只持仓个股盘中触及涨停价,立即卖出
- 命中「毁灭性硬利空关键词」,立即按跌停价卖出
- 触发「停牌+实质性风险」,立即按跌停价卖出
2. 尾盘止盈清仓(14:54后每60秒检查)
当账户当日盈亏比例(当日盈亏 ÷ 人民币总资产)≥ 3% 时,无条件清仓所有持仓。
核心优势:
| 优势 | 说明 |
|---|---|
| 解决僵尸股顽疾 | 借大涨节点批量清盘,不管个股强弱、是否滞涨,全部重置,彻底杜绝弱势股长期占用仓位 |
| 利润落袋 + 无缝换仓 | 单日大涨后市场极易分化,先锁定盈利;同时间换入最新一轮阶段强势股,吃新一轮行情,不吃鱼尾 |
| 契合右侧短线逻辑 | 每月仅触发 1-2 次,属于阶段性调仓,不打乱日常交易节奏;始终保持持仓是当下资金主线,持仓永远"新鲜" |
| 与原有风控兼容 | 上涨家数、量比、日线多头、梯度持仓、板块隔离、止损/人气淘汰等规则全部沿用,新选股依旧受全套规则约束,风险不变 |
3. 尾盘持仓风险AI检测(14:54后每60秒执行)
针对当日下跌的个股,调用 HoldRiskAnalyzer AI 分析器(千问3.7-max),综合行情/资金/DDX/财务/板块/近14天资讯全量数据,判断三大核心风险:
- 板块退潮:主力+超大单同步净流出、机构资金持续流出、个股表现弱于板块平均
- 伪强势股:概念标签热门但资金净流出、小幅收涨但DDX为负且量比偏高、换手率高但无创新高动能
- 资金出逃早期:主力净流入<0、超大单净额<0、量比>1.5(放量下跌)、DDX为负
满足以下任意组合即触发卖出:板块退潮+伪强势 / 伪强势+资金出逃 / 板块退潮+资金出逃。涨停股前置拦截直接持有,资讯利空仅作辅助佐证不单独决策。
5. 尾盘强制淘汰(14:55准时执行)
检查所有持仓个股14:55时的东方财富人气排名,跌出前1000名,无条件立即卖出。
七、三层防雷风控体系
第一层:1分钟轮询硬性利空检测(9:20开盘起每分钟执行)
调用 RiskAnalyzer AI 风险分析器,综合分析资讯、公告、公司大事,判断持仓股票是否存在硬性利空风险,命中则以跌停价立即卖出。
第二层:1小时轮询停牌风险检测
检查个股是否发布停牌公告,若停牌则调用 RiskAnalyzer AI 分析是否存在利空风险,命中则立即卖出。
第三层:尾盘阴跌淘汰
每日14:55清掉所有人气跌出前1000名的个股,杜绝长期阴跌套牢。
八、极端场景补充规则
大盘极端熔断(当日生效)
14:55买入前检查,全市场上涨家数 < 2000(市场情绪偏弱,不宜开仓),当日尾盘全面禁止任何新开仓操作。
九、当日买入差额补仓规则
核心目的:确保持仓中每只股票的金额均衡,有利于盈亏平衡。
- 补仓前提:仅针对当日14:55尾盘新买入的个股,因成交问题导致实际成交金额未达到计划买入金额时执行
- 计划金额标准:单只个股计划买入金额 = 账户总资产 ÷ 8
- 补仓执行:每日14:56核对当日新买入个股的实际成交金额与计划买入金额,计算差额部分,按当日尾盘14:56时该个股的买1价重新挂单买入(宁可买不进也不愿损失滑点)
- 仓位限制:持仓=5只时,仅允许对策略三买入的个股补仓;持仓≥6只时,禁止一切补仓操作
项目结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | |
AI 分析模块
BuyAnalyzer(买入策略AI分析器)
位于 strategies/utils/buy_analyzer.py,用于买入前的风险筛查与上涨潜力打分。
工作流程:
1. 接收 SmartTag 全字段候选股票列表
2. 调用 batch_fetch_stock_info 并发获取每只股票近14天的公告、资讯、公司大事
3. 将股票数据 + 近期信息拼接为用户输入
4. 调用阿里千问大模型(默认 qwen3.7-max),以 json_mode 输出结构化分析结果
5. 返回每只股票的 is_risk(是否有风险)、risk_comment(风险说明)、score(上涨潜力评分)、priority(买入优先级)
系统提示词:独立存储在 strategies/utils/buy_strategy_prompt.md,便于维护和调优
RiskAnalyzer(卖出风险AI分析器)
位于 sellers/utils/risk_analyzer.py,用于盘中持仓股票的硬性利空风险检测,默认模型 qwen-plus。
架构:数据获取层(StockInfoFetcher)与 AI 分析层(RiskAnalyzer)分离
工作流程:
StockInfoFetcher并发获取公告、资讯、公司大事- 关键词预过滤:先用 190+ 风险关键词 / 40 硬利空关键词筛选潜在风险信息
- AI 精判:将预过滤结果提交千问大模型,判断是否为实质性风险
- 结果缓存:基于数据指纹(MD5)缓存分析结果,避免重复调用 AI
两种分析模式:
- 一般风险分析:14天窗口,190+ 关键词预过滤 + AI 精判
- 硬性利空分析:14天窗口,40 硬利空关键词预过滤 + AI 精判
HoldRiskAnalyzer(持仓风险AI分析器)
位于 sellers/utils/hold_risk_analyzer.py,用于尾盘持仓风险深度检测,默认模型 qwen3.7-max。
触发条件:持仓≥3天且当日下跌的个股
工作流程:
- 筛选持仓≥3天且当日下跌的候选股票
- 调用
StockQuote.get()批量获取可视化行情数据(含行情/资金/DDX/财务/板块全量字段) - 调用
batch_fetch_stock_info并发获取近14天资讯 - 将行情数据 + 资讯拼接为用户输入,调用千问大模型分析三大核心风险
- 输出每只股票的
boardTrend(板块趋势:强势/警戒/退潮)、isFakeStrong(是否伪强势)、isCapitalEscapeEarly(是否资金出逃早期)、suggestion(持有/警戒/卖出)
三大核心风险判定:
| 风险类型 | 判定标准 |
|---|---|
| 板块退潮 | 强风险:主力+超大单同步净流出、机构资金持续流出、个股弱于板块;弱偏弱:放量滞涨、DDX飘红天数下滑、换手率高但无冲高动能 |
| 伪强势股 | 满足2条即标记:概念热门但资金净流出、小幅收涨但DDX为负且量比>1.5、换手率高但无创新高动能、大资金持续离场、量能萎缩且10日DDX翻绿 |
| 资金出逃早期 | 必须4条同时满足:主力净流入<0、超大单净额<0、量比>1.5、DDX为负 |
卖出触发组合:板块退潮+伪强势 / 伪强势+资金出逃 / 板块退潮+资金出逃,满足任意一组即卖出
系统提示词:独立存储在 sellers/utils/sell_strategy_prompt.md,便于维护和调优
缓存机制:同一天只调用一次AI接口,结果按日期缓存,后续调用直接使用缓存
QwenAPI(阿里千问API客户端)
位于 request_lib/qwen_api.py,封装阿里千问大模型 API 调用。
特性:
- 兼容 OpenAI SDK,使用阿里云 DashScope 兼容模式端点
- 支持 json_mode:设置 response_format={"type": "json_object"},模型输出合法 JSON
- 支持联网搜索:enable_search=True 时启用强制搜索
- API Key 优先级:配置文件 > 环境变量 DASHSCOPE_API_KEY
- 可选模型:qwen-plus、qwen-turbo、qwen3.7-max、qwen-vl-plus-latest
环境要求
- Python 3.8+
- Windows / Linux / macOS
- 推荐部署在云服务器上实现全天候自动化运行
- 阿里千问 API Key(用于 AI 分析功能)
安装配置
1. 克隆项目
1 2 | |
2. 创建虚拟环境
1 2 3 4 5 | |
3. 安装依赖
1
| |
4. 配置文件
复制并修改 config.json 文件,填写必要的配置信息:
1 2 3 4 5 6 7 8 9 | |
| 参数 | 类型 | 说明 |
|---|---|---|
maxRetries |
int | 最大重试次数 |
retryInterval |
int | 重试间隔(秒) |
requestInterval |
int | 请求间隔(秒) |
requestTimeout |
int | 请求超时时间(秒) |
api_key |
string | 阿里千问 API Key |
kline_cookie |
string | K线接口 Cookie(可选) |
clist_cookie |
string | 排名列表接口 Cookie(可选) |
快速开始
启动交易系统
1
| |
系统将在交易时段内自动执行注册的策略。
核心功能
- AI 智能选股:SmartTag 全字段数据 + BuyAnalyzer AI 风险筛查与打分
- 自动买入:14:55 自动执行买入操作,防重入、每日限额
- 自动卖出:盘中实时监控 + 尾盘止盈清仓 + 尾盘统一卖出
- 止盈清仓:14:54后每60秒检查,当日盈亏比例≥3%时无条件清仓
- AI 风险监控:1分钟轮询利空关键词 + AI 精判,1小时轮询停牌风险
- 梯度持仓:根据持仓数量自动调节买入权限
- 板块隔离:二级行业板块分散投资,降低系统性风险
- 补仓执行:14:56自动补足未成交金额
- 人气豁免:连续下跌条件中人气前100股票豁免卖出
- 订单监控:每10秒自动扫描挂单,撤单重挂确保最新价格
策略开发
创建买入策略
继承 SmartTagBoardStrategy 类并实现 stocks() 方法:
1 2 3 4 5 6 7 8 9 10 | |
SmartTagBoardStrategy 已内置:
- 防重入锁(_reentry_locks):防止定时任务重叠执行
- 每日买入限额(_daily_bought):每个策略子类当日最多买入 N 只,跨日自动重置
- 板块龙头选取(_pick_sector_leaders):每个二级行业板块取排名第一的股票
- 持仓/板块/撤单过滤(_get_filter_lists)
- 统一买入执行(buy() → _do_buy())
创建卖出条件
继承 SellCondition 类并实现 check() 方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
每日执行流程
每日交易前(9:00)
- 确认昨日收盘持仓数量,明确今日买入权限
- 检查所有持仓个股非交易时间发布的公告,命中利空关键词的标记为待卖出
盘中交易时间(9:30-15:00)
- 每10秒:涨停卖出检查、订单监控与撤单重挂
- 每60秒:硬性利空关键词扫描(命中立即跌停价卖出)
- 每60秒:买入记录同步
- 每小时:停牌风险扫描
- 14:54起每60秒:止盈清仓检查(当日盈亏比例 ≥ 3% 清仓)
- 14:54起每60秒:持仓风险AI检测(当日下跌,HoldRiskAnalyzer AI分析板块退潮/伪强势/资金出逃)
- 14:55:尾盘卖出(人气淘汰)
- 14:55:尾盘买入(热门止跌策略,SmartTag + BoardRank + BuyAnalyzer AI)
- 14:56:补仓(差额补足)
- 15:00:收盘,停止所有操作
每日收盘后(15:00-15:30)
- 记录当日所有交易的买卖时间、价格、数量、盈亏
- 统计当日账户总资产、持仓数量、各策略表现
- 记录今日卖出过的板块,明日不再买回
注意事项
风险提示:本系统仅供学习和研究使用,不构成任何投资建议。股市有风险,投资需谨慎。
交易时段:系统默认在 A 股交易时段运行(工作日 09:20-11:30, 13:00-15:00)。
数据安全:请妥善保管
config.json中的 API Key 和 Cookie 等敏感信息,不要将配置文件提交到公开仓库。策略测试:建议先在模拟环境中测试策略,确认无误后再用于实盘交易。
云服务器部署:推荐部署在云服务器上,确保系统全天候稳定运行。
AI 分析耗时:BuyAnalyzer 单次分析约30秒,系统通过防重入锁避免定时任务重叠。
许可证
MIT License