Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📡 StockRadar · 选股雷达实验室

Python License A-Share Paper Trading

A股信号扫描 + 多 Agent 评审 + 策略回测 + 模拟仓复盘。纯 Python → SQLite → 静态 HTML。

⚠️ 仅供学习研究,不构成投资建议。回测结果不代表未来收益。

🔗 在线演示 · 策略说明 · 系统架构 · 技术手册


🖼️ 效果预览

大盘资金雷达
📊 大盘资金雷达 — 指数实时涨跌 / 板块主力资金流入 / 涨停梯队 / 情绪周期

AI多智能体信号评审
🤖 信号复盘 — 多 Agent 独立投票,资金/技术/事件/风险闸门通过才进候选
策略回测工作台
📈 策略回测 — 胜率/期望值/夏普比率/最大回撤/连亏笔数
涨停梯队金字塔
🔺 涨停梯队金字塔 — 连板高度 / 封单 / 炸板率 / 题材共振

当前公开页面

模拟交易账户与净值曲线
💰 模拟仓驾驶舱 — 虚拟资金 / 净值曲线 / 回撤 / 策略分仓,不连接券商账户

选股信号复盘卡片
🎯 信号复盘 — 候选理由、Council 投票、资金等级与可交易性
大盘与板块资金雷达
🛡️ 大盘资金 — 市场宽度、指数状态与板块主力资金轮动
策略回测验收页面
🧪 策略验收 — 真实交易规则、交易成本、基准超额与逐笔回放

上述图片来自公开演示页,只展示公开市场数据和模拟交易结果,不包含真实账户或个人持仓。


✨ 能力一览

模块 做什么 关键输出
选股引擎 组合动态主题、全市场资金动量、相对强弱和涨停梯队 候选评分、理由、买点/止损/目标区间
Council 评审 资金、技术、事件、板块、质量与风险角色独立投票;技术面支持 MACD/RSI/KDJ/均线(可选 MyTT) 加权共识、分歧、风险否决
策略回测 按 A 股 T+1、手续费、滑点和日线价格回放历史信号 胜率、EV、夏普比率、回撤、连亏和基准超额
模拟仓 使用独立虚拟资金执行信号,记录持仓、成交和净值 T+1 状态、权益曲线、交易日志
每日复盘 聚合当日交易、观察信号、盈亏与风险指标 终端文本报告 + 静态 HTML 页面
AI 研究(可选) 调用 OpenAI-compatible API 生成候选股研究页 结构化研究记录与个股详情页

Council 核心决策是可回放的确定性规则,不配置 LLM 也能运行。ai_research.py 是可选的研究增强层,不应被当作交易指令。

🧩 工作流

flowchart LR
    A[公开行情 / 问财数据] --> B[候选池与证据补全]
    B --> C[Council 多角色评审]
    C --> D[(本地 SQLite)]
    D --> E[策略回测]
    D --> F[模拟交易]
    D --> G[静态雷达 / 复盘页]
    E --> G
    F --> G
Loading
  • 静态优先:运行任务写入 SQLite,生成后的 HTML/CSS/JS 可由任意静态服务器托管。
  • 证据可追溯:信号、时间、评分、Agent 观点和回测交易保存在本地数据库。
  • 研究与实盘隔离:模拟仓只操作 virtual_* 表,项目不提供券商下单能力。

更详细的数据流与策略规则见 系统架构策略说明

🚀 快速开始

1. 准备环境

  • Python 3.12+(与 CI 环境一致)
  • 无必装的第三方 Python 依赖,核心脚本只使用标准库
  • 运行选股需要可用的问财 API Key;LLM 研究完全可选
  • 可选:安装 MyTT 后,Council 的技术评审会自动升级为 MACD/RSI/KDJ/均线排列 多维判断;未安装时自动降级到基础涨跌幅/换手率规则
git clone https://github.com/marongwork/StockRadar.git
cd StockRadar
cp .env.example .env
# 可选:启用技术指标评审(MACD/RSI/KDJ/均线排列)
pip3 install -r requirements.txt

编辑 .env,至少填写你自己的 IWENCAI_API_KEY,然后在当前 shell 加载:

set -a
source .env
set +a

.env 已被 Git 忽略。不要在 Issue、PR、截图、生成页或测试代码中粘贴真实 Key。

2. 扫描并保存信号

python3 stock_picker.py

首次运行会在仓库根目录创建独立的 invest.db,保存公开行情快照和选股信号,并生成雷达页面。

如果只想预览最终候选而不保存本轮选股结果:

python3 stock_picker.py --print

--print 不会写入最终 stock_picks,但在行情快照过期时仍可能更新本地行情缓存和 API 用量记录。

3. 启动模拟仓与复盘

# 初始化虚拟账户并生成页面
python3 virtual_trader.py --init --generate

# 根据已保存信号执行一轮模拟交易
python3 virtual_trader.py --run --generate

# 在终端输出当日复盘
python3 virtual_trader.py --report

模拟仓遵守 T+1、仓位上限、止损/止盈和风险闸门,但不会连接券商,也不会执行真实交易。

4. 本地查看页面

python3 generate_stock_lab.py .
python3 -m http.server 8000

打开:

雷达图表通过 CDN 加载 ECharts;断网时数据仍在生成页中,但部分图表可能不渲染。

🔑 环境变量

变量 必需 说明
IWENCAI_API_KEY 选股时是 问财 OpenAPI Key,仅从进程环境读取
IWENCAI_BASE_URL 问财 API 根地址,默认为 https://openapi.iwencai.com
OPENAI_API_KEY OpenAI-compatible 研究服务 Key
DEEPSEEK_API_KEY 可选的 DeepSeek Key
ZHIPU_API_KEY / BIGMODEL_API_KEY 可选的智谱/BigModel Key
AI_BASE_URL OpenAI-compatible API 地址;使用非默认服务时应显式设置
AI_MODEL 研究模型名,需与 AI_BASE_URL 匹配

可选 LLM 配置只用于 ai_research.py 等研究增强功能。不配置时,选股、Council 规则评审、回测和模拟仓仍可运行。

🛠️ 常用命令

目标 命令
正常选股并写入本地库 python3 stock_picker.py
只预览候选 python3 stock_picker.py --print
盘前复核 python3 stock_picker.py --premarket
抓取公开资金流信号 python3 public_market_scanner.py
采样盘中市场异动 python3 market_intraday_monitor.py --no-rescan
回测全部已保存信号 python3 strategy_backtest.py --strategy all
指定时间窗口回测 python3 strategy_backtest.py --start 2026-01-01 --end 2026-01-31
初始化 AI 研究表 python3 ai_research.py ensure
为单只股生成 AI 研究 python3 ai_research.py analyze --code 600000 --name 浦发银行
输出模拟盘日报 python3 virtual_trader.py --report
重新生成雷达页 python3 generate_stock_lab.py .

回测需要先有已保存且足够旧的信号。新建数据库上出现 No eligible picks to backtest 是正常现象。

🗃️ 本地数据与生成产物

路径 内容 是否应提交
invest.db 信号、行情快照、回测和模拟仓数据
stock-lab.html 雷达主页 视发布方式而定,提交前必须脱敏
stock-lab/signals/ 信号详情页
stock-lab/ai/ AI 研究页
virtual-account.html / virtual-account/ 模拟仓总览与个股档案 否,默认作为本地运行产物
sector-flow.json 页面使用的板块资金快照

建议为每个实验使用新的本地 invest.db。不要复制、挂载或复用任何个人资产/真实持仓数据库。

🗂️ 项目结构

├── stock_picker.py             # 候选池、证据补全与信号保存
├── public_market_scanner.py    # 全市场公开资金流扫描
├── market_intraday_monitor.py  # 盘中指数采样与反转监测
├── agent_council.py            # 可回放的多角色共识与风险否决
├── ai_research.py              # 可选 LLM 研究增强
├── strategy_backtest.py        # A 股交易规则回测
├── strategy_filter_search.py   # 历史规则过滤与检索
├── virtual_trader.py           # 模拟账户、交易执行与每日复盘
├── generate_stock_lab.py       # 雷达及个股详情静态生成器
├── assets/                     # 前端样式、图表与交互
├── docs/
│   ├── ARCHITECTURE.md          # 分层架构与数据流
│   └── STRATEGY.md              # 策略、Council、风控与回测约束
├── test_trading_rules.py       # 交易与风控回归测试
├── test_public_release_boundaries.py # 开源边界回归测试
├── .env.example                # 空凭据模板
├── SECURITY.md                 # 安全边界与漏洞报告方式
└── TECH_DOCS.md                # 详细技术手册

✅ 测试

python3 -m compileall -q .
python3 -m unittest -v test_trading_rules.py test_public_release_boundaries.py
node --check assets/stock-lab.js
git diff --check

CI 在每个 Pull Request 和 main 推送上执行 Python 编译、39 项单元测试与前端 JavaScript 语法检查。

🔐 安全与开源边界

本仓库包含:

  • 选股雷达、公开行情扫描和市场异动监测
  • Council 多角色评审与可选 AI 研究
  • 策略回测、模拟仓、模拟交易和每日复盘
  • 静态页面生成器及前端资源

本仓库不包含:

  • 真实持仓、成交、现金、成本或其他个人资产数据
  • 券商账户、真实下单、用户登录、VIP/兑换码后台
  • 生产数据库、服务器路径、部署凭据、聊天 ID、Token 或 API Key

问财和 LLM 密钥只从进程环境变量读取;代码不会扫描 shell 配置、用户主目录或服务器私有配置。详见 SECURITY.md

❓ 常见问题

为什么没有候选股?

可能原因包括非交易时段、数据源超时/API 限额、市场数据降级,或当前没有信号通过风险闸门。系统在全市场主数据源失败时会标记 degraded,不会用低质量保底候选伪装正常结果。

为什么 AI 研究不可用?

请确认已配置一个 LLM Key,且 AI_BASE_URLAI_MODEL 与你的服务商匹配。AI 研究是可选模块,其失败不应改变核心规则引擎的结果。

可以直接用于实盘吗?

不可以。本项目是研究与模拟交易工具,没有券商接口。信号也会受数据延迟、流动性、滑点、停牌和涨跌停等影响。

🤝 贡献

Issue 和 Pull Request 欢迎聚焦以下方向:

  • 公开数据源稳定性与明确降级标记
  • 避免未来数据的回测修复和新验收指标
  • 模拟仓交易规则、风控与可解释性
  • 脱敏后的界面、文档和测试改进

提交前请运行完整测试,并确认 diff 中不包含 .env、数据库、日志、生成页、真实持仓或任何凭据。安全问题请按 SECURITY.md 私下报告,不要在公开 Issue 中粘贴敏感细节。

⚠️ 免责声明

本项目仅用于软件工程、量化研究和模拟交易学习,不构成投资建议、收益承诺或任何形式的交易邀请。回测、历史胜率和模拟盘结果均不代表未来表现。使用者应独立判断并自行承担风险。

License

MIT

About

StockRadar · 选股雷达实验室 — A股信号扫描 + 多Agent评审 + 策略回测 + VIP账户系统

Topics

Resources

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages