# solo_copper
**Repository Path**: zzhou7676/solo_copper
## Basic Information
- **Project Name**: solo_copper
- **Description**: 市面上的股票工具要么是纯看盘软件(同花顺/东财),要么是全自动量化机器人(门槛高、黑盒)。一个小目标走的是中间路线:
你做决策,系统做分析,AI 做补充。
不替你交易,不替你选股——而是把你每天该做的功课(查行情、看指标、定止损、记交易、写复盘)整合到一个操作台里。双模式并存:一键规则分析秒出买卖建议,也可手动追问外部 AI 深度研判。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 2
- **Created**: 2026-07-06
- **Last Updated**: 2026-09-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: AI, 投资决策, AI投资, AI决策
## README
---
## 为什么做这个
市面上的股票工具要么是纯看盘软件(同花顺/东财),要么是全自动量化机器人(门槛高、黑盒)。**一个小目标**走的是中间路线:
> **你做决策,系统做分析,AI 做补充。**
不替你交易,不替你选股——而是把你每天该做的功课(查行情、看指标、定止损、记交易、写复盘)整合到一个操作台里。**双模式并存**:一键规则分析秒出买卖建议,也可手动追问外部 AI 深度研判。
---
## ✨ 核心特性
| 特性 | 说明 |
| ------------------------------- | ------------------------------------------------------------------------------------------------------- |
| 🔗**交易驱动持仓** | 只需录入买卖交易,持仓、成本、现金余额全部自动推导,杜绝手动维护不一致 |
| 🤖**一键规则分析** | 9 项技术指标(RSI/MACD/KDJ/BOLL/ATR/MA/量比/支撑阻力/EMA)→ 14 条买卖规则 → 秒出决策报告,无需外部 AI |
| 💬**手动 AI 问答** | 一条合并提示词覆盖全部持仓 + 备选股 → 粘贴千问整段回答 → 自动按个股拆分归档(作为规则分析的深度补充) |
| 🎯**操作建议提取** | 自动检测 🤖规则分析 / 💬AI问答 来源,解析"减仓/持有/买入/观望" + 止损价 + 目标价 |
| 🛡️**硬性风控引擎** | 单票止损、最大仓位、总回撤三道红线自动检查,触发即预警,参数 UI 可调 |
| 📊**收益曲线 + 基准对比** | 账户每日收益率 vs 沪深 300,持仓卡片 + 迷你走势图 + 信号徽章,红涨绿跌(A 股惯例) |
| ⚡**智能刷新** | 交易时段每 30 秒自动拉行情,非交易时段 5 分钟一次,不打断表单操作 |
| 📦**一键安装包** | Windows 用户双击 exe 安装,无需配置 Python 环境 |
---
## 🚀 快速开始
### 方式一:安装包(推荐,零门槛)
1. 前往 [Releases](https://gitee.com/zzhou7676/solo_copper/releases) 下载 `一个小目标_Setup_v1.0.0.exe`(约 79MB)
2. 双击安装(无需管理员权限,安装到用户目录)
3. 桌面快捷方式 → 双击启动 → 浏览器自动打开 `localhost:8501`
### 方式二:开发模式
```bash
git clone https://gitee.com/zzhou7676/solo_copper.git
cd solo_copper
pip install -r requirements.txt # streamlit pandas pyyaml akshare plotly
streamlit run app.py
```
> ⚠️ **必须在项目根目录执行**:`app.py` 全程使用相对路径(`Path(".")`)。
首次运行自动注入 **10 只热门龙头股**到备选池(贵州茅台、宁德时代、中国平安、招商银行、比亚迪、五粮液、隆基绿能、立讯精密、长江电力、紫金矿业),无需手动添加即可体验。
---
## 🔄 每日工作流
```
┌─────────────────────────────────────────────────────────────────┐
│ 每日 3 步循环 │
│ │
│ ① 录入交易 ② 分析研判 ③ 查看建议 │
│ ─────────── ──────────── ────────── │
│ 买入/卖出/分红 → 🔘 一键规则分析(推荐) → 操作建议 Tab │
│ 自动推导持仓 9项指标秒出报告 减仓/持有/买入 │
│ 自动计算现金 ─ 或 ─ 止损价/目标价 │
│ 💬 手动批量问AI │
│ 复制→千问→粘贴 │
│ 自动拆分归档 │
│ ↓ │
│ 风控引擎自动检查 │
│ 触发止损 → 次日清仓 │
└──────────────────────────────────────────────────────────────────┘
```
**双模式分析**:一键规则分析纯本地运算(RSI/MACD/KDJ/BOLL等9项指标 + 14条买卖规则),秒出决策报告无需外部 AI。手动 AI 问答作为深度补充,可选。
**核心原则**:持仓从交易记录推导(`derive_holdings`),不再手动维护。所有下游模块(盈亏、风控、日报)都消费同一个数据源——`transactions.csv` 是唯一真相。
---
## 📱 十大功能 Tab
| Tab | 功能 | 关键交互 |
| ---------------------- | ------------------------------------------------- | ----------------------------- |
| 📊**总览仪表盘** | 总资产/盈亏/现金/仓位饼图/收益曲线 + 持仓信号徽章 | 一键日报 · 行情自动刷新 |
| 💼**持仓管理** | 持仓明细表(盈亏/仓位)+ 板块集中度分析 | 快速卖出表单 |
| 📝**交易记录** | 买入/卖出/分红录入 + FIFO 平仓统计 + 复盘日志 | 金额自动计算 · 撤销最后一笔 |
| 👁️**备选股池** | 观察股 CRUD + 实时行情 | 自动创建归档文件夹 |
| 📈**行情看板** | 四大指数 + 全部股票实时行情 | 手动刷新 · 自动标记持仓/备选 |
| 💬**个股问答** | 🔘一键规则分析(9项指标秒出报告)+ 手动批量问答 | 自动拆分千问回答按个股归档 |
| 🎯**操作建议** | 自动检测 🤖规则分析 / 💬AI问答 来源,提取买卖建议 | 持仓/备选分组 · 四色标签 |
| 🛡️**风控管理** | 项目设置 + 5 个风控参数滑块 + 实时预警 | 参数可编辑 · 预警自动归档 |
| 📅**决策日历** | 月历视图,每日交易/问答标记 | 今日高亮 · 本月统计 |
| 📋**文件状态** | 问答完成度 + 文件清单 + 月度报表导出 | CSV 下载 |
---
## 🏗️ 架构
### 技术栈
| 层 | 技术 | 用途 |
| ------ | --------------------------------- | ---------------------------------- |
| 前端 | **Streamlit** | Web 操作台,深色科技风主题 |
| 数据 | **pandas** | DataFrame 驱动的持仓/盈亏计算 |
| 行情 | **akshare** + 新浪/腾讯接口 | 实时报价、历史收盘、迷你走势 |
| 可视化 | **Plotly** | 收益曲线、仓位饼图、迷你 sparkline |
| 配置 | **YAML** | 风控参数、组合规则、AI 设置 |
### 数据流
```
transactions.csv (唯一真相源)
│
├──→ trading.derive_holdings() → 持仓表(加权平均成本)
│ → holdings.calculate_pnl() → 盈亏/仓位
│ → risk_engine.check_risk() → 预警
│
├──→ trading.calculate_cash_balance() → 现金余额
│
└──→ portfolio_history.save_snapshot() → 每日快照 → 收益曲线 vs 沪深300
```
### 项目结构
```
solo_copper/
├── app.py # 主入口(10 Tab 路由 + 智能刷新 + 种子数据)
├── config.yaml # 全局配置(风控参数 · 组合规则 · AI 设置 · 分析引擎参数)
├── requirements.txt # 依赖清单
├── .streamlit/config.toml # 深色主题
│
├── utils/ # 工具模块(纯逻辑,无 Streamlit 依赖)
│ ├── trading.py # 交易簿 + 持仓推导 + 现金计算 + FIFO 平仓
│ ├── holdings.py # 盈亏计算 + 仓位占比
│ ├── market_data.py # akshare 行情(实时/历史/迷你走势/大盘指数)+ 新浪备用源
│ ├── indicators.py # 技术指标引擎(RSI/ATR/支撑阻力/MA/量比/EMA/MACD/KDJ/BOLL)
│ ├── analysis_engine.py # 规则分析引擎(9项指标 → 14条规则 → 买卖/持有/观望决策)
│ ├── risk_engine.py # 风控引擎(三条硬规则检查)
│ ├── qa_manager.py # 问答工作流(生成/拆分/提取操作建议)
│ ├── watchlist.py # 备选股池 CRUD
│ ├── portfolio_history.py # 每日快照 + 收益曲线 + 沪深300基准
│ ├── report_generator.py # 日报生成(聚合全链路数据)
│ └── theme.py # 深色科技风 CSS + 红涨绿跌配色
│
├── views/ # 视图模块(每个 Tab 一个 render 函数)
│ ├── dashboard.py # 📊 总览仪表盘
│ ├── holdings.py # 💼 持仓管理
│ ├── trading.py # 📝 交易记录
│ ├── watchlist.py # 👁️ 备选股池
│ ├── market.py # 📈 行情看板
│ ├── qa.py # 💬 个股问答
│ ├── action.py # 🎯 操作建议
│ ├── risk.py # 🛡️ 风控管理
│ ├── calendar.py # 📅 决策日历
│ └── files.py # 📋 文件状态
│
├── data/ # 运行时数据(gitignore)
│ ├── transactions.csv # 交易记录簿(持仓源头)
│ ├── watchlist.csv # 备选股池
│ └── portfolio_snapshots.csv # 每日资产快照
│
├── inbox_RawData/ # 每日热点文件
├── knowledge_Base/By_Stock/ # 按股票归档的问答({代码}_{名称})
├── market_Quotes/ # 收盘价 CSV + 持仓快照
├── decision_Logs/ # 交易决策日志 + 日报 + 风控预警
│
└── installer/ # Windows 安装包打包(Inno Setup)
├── build.ps1 # 构建脚本(Python embeddable + 依赖)
├── setup.iss # Inno Setup 编译脚本
├── launcher.vbs # 无窗口启动模板
└── stop.bat # 停止脚本模板
```
---
## ⚙️ 配置
编辑 `config.yaml` 或在应用内「🛡️ 风控管理」Tab 用滑块调整:
```yaml
project:
name: 一个小目标
initial_capital: 10000.0 # 初始本金(元)
risk_management: # ⚠️ 硬性风控,AI 无权修改
stop_loss_single: 0.08 # 单票止损线 -8%
trailing_stop_pct: 0.06 # 止盈回撤线 -6%
max_total_drawdown: 0.15 # 总账户最大回撤 -15%
max_single_position_pct: 0.15 # 单票最大仓位 15%
min_cash_reserve_pct: 0.05 # 最低现金留存 5%
ai_settings:
model: qwen-max # 通义千问
temperature: 0.15 # 低温度 = 偏保守
mandatory_checks: # 每次提问必带的强制检查
- 当前该股估值处于历史什么分位?
- 近期热点是短期炒作还是基本面反转?
- 若明天下跌5%,我的应对计划是什么?
analysis: # 规则分析引擎参数
rsi_period: 14 # RSI 计算周期
rsi_overbought: 70 # RSI 超买线
rsi_oversold: 30 # RSI 超卖线
macd_fast: 12 # MACD 快线
macd_slow: 26 # MACD 慢线
macd_signal: 9 # MACD 信号线
kdj_period: 9 # KDJ 周期
boll_period: 20 # 布林带周期
boll_std: 2.0 # 布林带标准差倍数
```
---
## 🔧 安装包构建(开发者)
如需自行编译安装包:
```powershell
# 1. 构建(下载 Python embeddable + 安装依赖 + 复制项目文件)
.\installer\build.ps1
# 2. 编译(需要 Inno Setup 6)
& "$env:LOCALAPPDATA\Programs\Inno Setup 6\ISCC.exe" .\installer\setup.iss
# 产出:installer/output/一个小目标_Setup_v1.0.0.exe(约 79MB)
```
---
## ❓ 常见问题
持仓数据怎么来的?能手动改吗?
持仓从交易记录(`data/transactions.csv`)自动推导,不能直接编辑。如需修正:在「交易记录」Tab 撤销最后一笔并重新录入,或用 Excel 编辑 CSV 文件。
akshare 拉取行情失败?
1. 检查网络连接和代理设置
2. 非交易时段数据可能延迟
3. 运行 `pip install --upgrade akshare`
收益曲线什么时候显示?
需要至少 2 天的快照数据。系统每次刷新行情时自动保存当日快照到 `portfolio_snapshots.csv`,多日积累后曲线自动出现。
自动刷新会打断操作吗?
不会。刷新逻辑在 `@st.fragment` 中运行,不触发 `st.rerun()`,不影响你正在填写的表单。
安装版和数据在哪?卸载会丢吗?
安装到 `%LOCALAPPDATA%\一个小目标\`,数据目录卸载时保留(`uninsneveruninstall`)。如需彻底清理,手动删除安装目录。
---
## 📄 License
个人项目,仅供学习交流,不构成任何投资建议。据此操作,风险自负。