EasyMoney - A股自动化短线交易系统
项目简介
EasyMoney 是一个基于 Python 的全自动化 A 股短线交易系统,实现了零主观、全量化、铁律执行的交易体系。系统部署在云服务器上全天候运行,基于东方财富市场数据与阿里千问 AI 大模型,结合 SmartTag 智能选股、BoardRank 板块隔离、BuyAnalyzer AI 买入分析、RiskAnalyzer AI 风险分析,实现从选股、买入、持仓管理到卖出的全链路自动化。
核心原则
- 零主观:所有决策由规则 + AI 驱动,消除人为干预
- 全量化:买卖条件完全量化,精确到分钟级执行
- 铁律执行:自动化系统强制执行规则,避免情绪化操作
- 只吃确定性利润:通过多层过滤 + AI 筛查确保交易机会的确定性
系统架构
┌──────────────────────────────────────────────────────────────┐
│ easymoney.py (主入口) │
│ BuyerManager / SellerManager / UtilityManager │
└──────────┬───────────────────────────────────┬───────────────┘
│ │
┌──────▼──────┐ ┌───────▼───────┐
│ 买入策略层 │ │ 卖出策略层 │
│ HotStop │ │ PositionSeller│
│ Supplement │ │ ConditionMgr │
└──────┬──────┘ └───────┬───────┘
│ │
┌──────▼──────────────────────────────────▼───────┐
│ 数据 & AI 层 │
│ SmartTag BoardRank StockInfoFetcher │
│ BuyAnalyzer RiskAnalyzer QwenAPI │
└──────────────────────┬──────────────────────────┘
│
┌──────────────────────▼──────────────────────────┐
│ 交易接口层 │
│ AssetPosition SubmitTrade Snapshot DealData │
└─────────────────────────────────────────────────┘
交易体系详解
一、选股范围
- 可交易市场:沪主板、深主板、创业板
- 绝对排除: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升序排列,优先买入评分最优的股票
- BoardRank 板块标注:并发查询每只股票所属的二级行业板块,添加
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只时,禁止一切补仓操作
项目结构
easymoney/
├── easymoney.py # 主入口文件
├── buyer_manager.py # 买入策略管理器(注册定时任务、风控检查)
├── seller_manager.py # 卖出策略管理器(注册定时任务、并发卖出)
├── utility_manager.py # 工具任务管理器(撤单、日志、记录同步)
│
├── managers/ # 核心管理模块
│ ├── easymoney.py # 核心调度器(APScheduler、交易时段判断)
│ ├── config.py # 配置管理(EasyMoneyConfig、梯度持仓计算)
│ ├── strategy_manager.py # 买入策略注册管理
│ └── seller_manager.py # 卖出策略注册管理
│
├── strategies/ # 买入策略模块
│ ├── base_strategy.py # 策略抽象基类
│ ├── smart_tag_board_strategy.py # SmartTag板块策略基类(防重入、每日限额、板块龙头)
│ ├── hot_stop.py # 热门止跌策略(SmartTag全字段+BoardRank+BuyAnalyzer AI)
│ ├── buyer_clist.py # 列表买入策略
│ ├── guba_top.py # 股吧热门策略
│ ├── rebound_dip.py # 反弹抄底策略
│ ├── strong_multi_side.py # 条件股策略
│ ├── influx_numeric.py # 净流入策略
│ ├── continuous_reduction.py # 超跌人气策略(已禁用)
│ ├── supplement_buy.py # 补仓策略
│ ├── buyer.py # 买入执行器(防重复买入、买1价挂单)
│ └── utils/ # 策略工具
│ ├── buy_analyzer.py # 买入策略AI分析器(千问大模型风险筛查+打分)
│ ├── buy_strategy_prompt.md # BuyAnalyzer系统提示词
│ ├── bought_recorder.py # 买入记录器(防重复买入)
│ ├── jsonfile.py # JSON文件读写工具
│ ├── logger.py # 日志工具
│ └── path.py # 路径工具
│
├── sellers/ # 卖出策略模块
│ ├── base.py # 卖出条件基类(SellCondition/ConditionType)
│ ├── condition_manager.py # 条件管理器(单例、注册/查询/按类型筛选)
│ ├── position_seller.py # 持仓卖出执行器(买1价/跌停价卖出)
│ ├── kline_seller.py # K线卖出策略(别名)
│ ├── hold_risk_strategy.py # 持仓风险AI卖出策略(持仓≥3天且当日下跌)
│ ├── top_profit_strategy.py # 顶部止盈策略(当日盈亏≥3%清仓)
│ ├── utils/
│ │ ├── risk_analyzer.py # AI风险分析器(千问大模型+关键词分类)
│ │ ├── hold_risk_analyzer.py # 持仓风险AI分析器(板块退潮/伪强势/资金出逃)
│ │ └── sell_strategy_prompt.md # HoldRiskAnalyzer系统提示词
│ └── conditions/ # 卖出条件实现
│ ├── hard_risk.py # 第一层:硬性利空AI检测(1分钟轮询,RiskAnalyzer AI分析)
│ ├── suspend_risk_stock.py # 第二层:停牌风险AI检测(1小时轮询,停牌+RiskAnalyzer AI分析)
│ ├── popularity_rank.py # 第三层:人气排名淘汰(尾盘)
│ ├── multi_source_risk.py # AI风险检测(RiskAnalyzer AI分析,命中利空即卖)
│ ├── zt.py # 涨停卖出
│ ├── profit_threshold.py # 盈利阈值卖出
│ ├── daily_profit_threshold.py # 当日盈利阈值
│ ├── ending_profit.py # 尾盘盈利卖出
│ ├── days_falling.py # 连续下跌条件(含人气前100豁免)
│ ├── hot200.py # 人气榜200卖出
│ ├── risk_stock.py # AI风险股票检测
│ ├── custom_profit.py # 自定义盈利条件
│ └── simple_threshold.py # 简单阈值条件
│
├── request_lib/ # 请求库
│ ├── base_request.py # 基础请求类(重试、限流、网络检测)
│ ├── configurable.py # 配置基类(统一配置读取)
│ ├── config_manager.py # 配置管理器
│ ├── qwen_api.py # 阿里千问API客户端(json_mode、联网搜索)
│ ├── market/ # 市场数据接口
│ │ ├── smart_tag.py # 智能标签选股(get/get_all_fields/parse_all_fields)
│ │ ├── board_rank.py # 板块排名(二级行业板块查询)
│ │ ├── stock_info_fetcher.py # 股票信息获取器(并发获取公告/资讯/公司大事)
│ │ ├── stock_quote.py # 批量股票详细行情(行情/资金/DDX/财务/板块全量字段)
│ │ ├── popularity_rank.py # 人气排名前1000
│ │ ├── clist.py # 沪深京A股排名列表
│ │ ├── kline.py # K线数据
│ │ ├── index_list.py # 三大指数数据
│ │ ├── up_down_stat.py # 大盘涨跌平统计
│ │ ├── security_ann.py # 公告信息(含风险/硬利空关键词检测)
│ │ ├── info_service.py # 资讯服务(含风险/硬利空关键词检测)
│ │ ├── company_event.py # 公司大事(含风险/硬利空关键词检测)
│ │ ├── hot200.py # 人气榜200
│ │ ├── stock_suspend_api.py # 停牌信息
│ │ └── clist_input.py # 排名列表输入参数
│ ├── trade/ # 交易接口
│ │ ├── asset_position.py # 持仓信息
│ │ ├── submittrade.py # 交易提交
│ │ ├── snapshot.py # 实时行情快照
│ │ ├── deal_data.py # 成交数据
│ │ ├── revoke_orders.py # 撤单
│ │ ├── revoke_list.py # 撤单列表
│ │ ├── batch_revoke_orders.py # 批量撤单
│ │ ├── his_orders.py # 历史委托
│ │ └── all_need_trade_info.py # 交易所需全部信息
│ └── utils/ # 工具类
│ ├── jsonfile.py # JSON文件读写
│ └── logger.py # 日志工具
│
├── kline/ # K线数据模块
│ ├── kline_local.py # 本地K线数据处理
│ ├── stock_kline_local.py # 个股K线分析
│ ├── stock_kline.py # K线数据获取
│ ├── kline_log.py # K线日志
│ └── kline_local_sync.py # K线本地同步
│
└── config.json # 配置文件
AI 分析模块
BuyAnalyzer(买入策略AI分析器)
位于 strategies/utils/buy_analyzer.py,用于买入前的风险筛查与上涨潜力打分。
工作流程:
- 接收 SmartTag 全字段候选股票列表
- 调用
batch_fetch_stock_info并发获取每只股票近14天的公告、资讯、公司大事 - 将股票数据 + 近期信息拼接为用户输入
- 调用阿里千问大模型(默认
qwen3.7-max),以json_mode输出结构化分析结果 - 返回每只股票的
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. 克隆项目
git clone https://github.com/your-username/easymoney.git
cd easymoney
2. 创建虚拟环境
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate
3. 安装依赖
pip install -r requirements.txt
4. 配置文件
复制并修改 config.json 文件,填写必要的配置信息:
{
"maxRetries": 3,
"retryInterval": 10,
"requestInterval": 10,
"requestTimeout": 10,
"api_key": "your-dashscope-api-key",
"kline_cookie": "",
"clist_cookie": ""
}
| 参数 | 类型 | 说明 |
|---|---|---|
maxRetries |
int | 最大重试次数 |
retryInterval |
int | 重试间隔(秒) |
requestInterval |
int | 请求间隔(秒) |
requestTimeout |
int | 请求超时时间(秒) |
api_key |
string | 阿里千问 API Key |
kline_cookie |
string | K线接口 Cookie(可选) |
clist_cookie |
string | 排名列表接口 Cookie(可选) |
快速开始
启动交易系统
python easymoney.py
系统将在交易时段内自动执行注册的策略。
核心功能
- AI 智能选股:SmartTag 全字段数据 + BuyAnalyzer AI 风险筛查与打分
- 自动买入:14:55 自动执行买入操作,防重入、每日限额
- 自动卖出:盘中实时监控 + 尾盘止盈清仓 + 尾盘统一卖出
- 止盈清仓:14:54后每60秒检查,当日盈亏比例≥3%时无条件清仓
- AI 风险监控:1分钟轮询利空关键词 + AI 精判,1小时轮询停牌风险
- 梯度持仓:根据持仓数量自动调节买入权限
- 板块隔离:二级行业板块分散投资,降低系统性风险
- 补仓执行:14:56自动补足未成交金额
- 人气豁免:连续下跌条件中人气前100股票豁免卖出
- 订单监控:每10秒自动扫描挂单,撤单重挂确保最新价格
策略开发
创建买入策略
继承 SmartTagBoardStrategy 类并实现 stocks() 方法:
from strategies.smart_tag_board_strategy import SmartTagBoardStrategy
from strategies.utils import get_strategy_file_path
class MyStrategy(SmartTagBoardStrategy):
config_file = get_strategy_file_path("my_strategy.json")
def stocks(self):
# 实现股票筛选逻辑
# 返回 [{"stockCode": "...", "stockName": "...", "currentPrice": ...}, ...]
pass
SmartTagBoardStrategy 已内置:
- 防重入锁(
_reentry_locks):防止定时任务重叠执行 - 每日买入限额(
_daily_bought):每个策略子类当日最多买入 N 只,跨日自动重置 - 板块龙头选取(
_pick_sector_leaders):每个二级行业板块取排名第一的股票 - 持仓/板块/撤单过滤(
_get_filter_lists) - 统一买入执行(
buy()→_do_buy())
创建卖出条件
继承 SellCondition 类并实现 check() 方法:
from sellers.base import SellCondition, ConditionType
class MyCondition(SellCondition):
@property
def name(self) -> str:
return "my_condition"
@property
def condition_type(self) -> ConditionType:
return ConditionType.PENDING
def check(self, position: dict) -> bool:
# 实现卖出条件判断逻辑
# 返回 True 表示满足卖出条件
pass
每日执行流程
每日交易前(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