g

丘海东

读书写字 热爱生活 ⌚️📖️🖋️🏀️🚲️🚉️🎼️🍵️🏞️📷️

老陈 - AI自动交易系统

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
┌──────────────────────────────────────────────────────────────┐
│                      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)

选股流程

  1. SmartTag 全字段数据获取:调用东方财富 SmartTag API,获取热门止跌条件股的完整字段数据,字段清洗规则:<80>_W(周线),<140>_NR(不复权),{日期} 去除,[区间]总和 去除。结合 StockQuote 批量行情接口,完整字段说明如下(去重):

  2. 基础信息:序号、股票代码、股票名称、市场简称(SH/SZ/BJ)、市场码、上市板块、是否自选股、是否ST、是否退市

  3. 行情数据:最新价、涨跌幅、涨跌额、开盘价、昨收价、最高价、最低价(日线不复权)、买入价(买一)、卖出价(卖一)、振幅、量比、换手率、成交额、成交量、涨速、涨速比率、现手、区间涨跌幅
  4. 技术指标:均线多头排列、阶段强势股、MACD值(日线/周线)、MACD DIF值(日线/周线)、MACD DEA值(日线/周线)、KDJ J/K/D值(日线/周线)
  5. 资金流向:主力净流入、主力净额N日总和、增仓占比、区间增仓占比、集合竞价、超大单流入/流出/净额/净占比、大单流入/流出/净额/净占比、中单流入/流出/净额/净占比、小单流入/流出/净额/净占比、沪深股通净买入额
  6. DDX/DDY/DDZ:当日DDX/DDY/DDZ、5日DDX/DDY、10日DDX/DDY、DDX飘红天数(连续/5日内/10日内)
  7. 筹码与股东:沪深股通持仓占流通股比、70%筹码集中度、90%筹码集中度、A股股东户数、A股股东户数增长率、股东总户数、股东总户数增长率、股东户数变动日期、人均持股数、总股本、流通股
  8. 估值与市值:市盈率(动)、市净率、总市值(不复权)、流通市值(不复权)、每股收益、每股净资产、净资产收益率ROE(加权)
  9. 财务数据:营业收入、营业收入同比、营业利润、投资收益、利润总额、净利润、净利润同比、未分配利润、每股未分配利润、毛利率
  10. 资产负债:总资产、流动资产、固定资产、无形资产、总负债、流动负债、长期负债、资产负债比率、股东权益、股东权益比、公积金、每股公积金
  11. 板块归属:所属行业板块、所属地区板块、所属概念板块
  12. 其他:股吧人气排名、机构评级
  13. BoardRank 板块标注:并发查询每只股票所属的二级行业板块,添加 BOARD_NAME 字段
  14. BuyAnalyzer AI 分析:调用阿里千问大模型,结合近14天资讯/公告/公司大事,对每只候选股进行风险筛查与上涨潜力打分,输出 IS_RISK/RISK_COMMENT/SCORE/PRIORITY 字段
  15. 数据缓存:AI 分析结果缓存至类变量,各实例共享,避免重复 API 请求
  16. 多层过滤:排除风险股、ST/退市股、价格超限股、已持仓股、已持仓板块股、撤单股
  17. 优先级排序:按 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
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,用于买入前的风险筛查与上涨潜力打分。

工作流程: 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)分离

工作流程

  1. StockInfoFetcher 并发获取公告、资讯、公司大事
  2. 关键词预过滤:先用 190+ 风险关键词 / 40 硬利空关键词筛选潜在风险信息
  3. AI 精判:将预过滤结果提交千问大模型,判断是否为实质性风险
  4. 结果缓存:基于数据指纹(MD5)缓存分析结果,避免重复调用 AI

两种分析模式

  • 一般风险分析:14天窗口,190+ 关键词预过滤 + AI 精判
  • 硬性利空分析:14天窗口,40 硬利空关键词预过滤 + AI 精判

HoldRiskAnalyzer(持仓风险AI分析器)

位于 sellers/utils/hold_risk_analyzer.py,用于尾盘持仓风险深度检测,默认模型 qwen3.7-max

触发条件:持仓≥3天且当日下跌的个股

工作流程

  1. 筛选持仓≥3天且当日下跌的候选股票
  2. 调用 StockQuote.get() 批量获取可视化行情数据(含行情/资金/DDX/财务/板块全量字段)
  3. 调用 batch_fetch_stock_info 并发获取近14天资讯
  4. 将行情数据 + 资讯拼接为用户输入,调用千问大模型分析三大核心风险
  5. 输出每只股票的 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-plusqwen-turboqwen3.7-maxqwen-vl-plus-latest

环境要求

  • Python 3.8+
  • Windows / Linux / macOS
  • 推荐部署在云服务器上实现全天候自动化运行
  • 阿里千问 API Key(用于 AI 分析功能)

安装配置

1. 克隆项目

1
2
git clone https://github.com/your-username/easymoney.git
cd easymoney

2. 创建虚拟环境

1
2
3
4
5
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate

3. 安装依赖

1
pip install -r requirements.txt

4. 配置文件

复制并修改 config.json 文件,填写必要的配置信息:

1
2
3
4
5
6
7
8
9
{
    "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(可选)

快速开始

启动交易系统

1
python easymoney.py

系统将在交易时段内自动执行注册的策略。

核心功能

  • 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
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() 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)

  • 记录当日所有交易的买卖时间、价格、数量、盈亏
  • 统计当日账户总资产、持仓数量、各策略表现
  • 记录今日卖出过的板块,明日不再买回

注意事项

  1. 风险提示:本系统仅供学习和研究使用,不构成任何投资建议。股市有风险,投资需谨慎。

  2. 交易时段:系统默认在 A 股交易时段运行(工作日 09:20-11:30, 13:00-15:00)。

  3. 数据安全:请妥善保管 config.json 中的 API Key 和 Cookie 等敏感信息,不要将配置文件提交到公开仓库。

  4. 策略测试:建议先在模拟环境中测试策略,确认无误后再用于实盘交易。

  5. 云服务器部署:推荐部署在云服务器上,确保系统全天候稳定运行。

  6. AI 分析耗时:BuyAnalyzer 单次分析约30秒,系统通过防重入锁避免定时任务重叠。

许可证

MIT License