# tradinglivermore **Repository Path**: weiner111/tradinglivermore ## Basic Information - **Project Name**: tradinglivermore - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-04 - **Last Updated**: 2026-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 📈 TradingLivermore 类TradingView交易图表分析软件 — 内置行情回放系统 ## 技术栈 | 层级 | 技术 | |------|------| | 前端框架 | Vue 3 + Vite + TypeScript | | 图表内核 | Lightweight Charts 5.x | | 技术指标库 | lightweight-charts-indicators | | 画线绘图库 | lightweight-charts-drawing | | 状态管理 | Pinia | | 后端 | Python FastAPI | | 数据库(开发) | SQLite | | 数据库(生产) | TimescaleDB + PostgreSQL | | 缓存 | Redis | | 通信 | HTTP REST + WebSocket | ## 项目结构 ``` D:\tradingLivermore\ ├── backend/ # Python FastAPI 后端 │ ├── app/ │ │ ├── main.py # FastAPI 应用入口 │ │ ├── config.py # 配置管理 │ │ ├── database.py # 数据库连接 (SQLite) │ │ ├── models/ # 数据模型定义 │ │ ├── routers/ # API 路由 │ │ │ ├── kline.py # K线查询接口 │ │ │ ├── drawing.py # 绘图快照接口 │ │ │ └── replay.py # 回放会话接口 │ │ ├── schemas/ # Pydantic 数据校验模型 │ │ ├── services/ # 业务逻辑服务层 │ │ └── ws/ # WebSocket 连接管理 │ ├── scripts/ │ │ ├── seed_data.py # 测试数据生成脚本 │ │ └── init_timescaledb.sql # TimescaleDB 初始化脚本 │ └── requirements.txt │ ├── frontend/ # Vue3 + Vite + TypeScript 前端 │ ├── src/ │ │ ├── App.vue # 根组件 │ │ ├── main.ts # 应用入口 │ │ ├── types/ # TypeScript 类型定义 │ │ │ ├── kline.ts # K线相关类型 │ │ │ ├── theme.ts # 主题类型 │ │ │ ├── indicator.ts # 指标类型(全部可用指标清单) │ │ │ ├── drawing.ts # 绘图工具类型 │ │ │ ├── replay.ts # 回放系统类型 │ │ │ └── trade.ts # 模拟交易类型 │ │ ├── engine/ # 核心引擎模块(框架无关) │ │ │ ├── ChartManager.ts # 图表管理器 │ │ │ ├── ThemeManager.ts # 主题管理器 │ │ │ ├── IndicatorManager.ts # 指标管理器(reset/tick方法) │ │ │ ├── DrawingManager.ts # 绘图管理器 │ │ │ ├── ReplayController.ts # 回放控制器 ⭐ │ │ │ └── TradeEngine.ts # 模拟撮合引擎 │ │ ├── composables/ # Vue Composables(桥接层) │ │ ├── stores/ # Pinia 状态管理 │ │ ├── components/ # Vue 组件 │ │ │ ├── chart/ # 图表组件 │ │ │ ├── indicator/ # 指标面板 │ │ │ ├── replay/ # 回放控制面板 │ │ │ ├── trade/ # 交易面板 │ │ │ └── stats/ # 绩效统计面板 │ │ ├── services/ # API 服务层 │ │ └── assets/styles/ # 全局样式 │ ├── index.html │ ├── package.json │ └── vite.config.ts │ └── README.md ``` ## 快速启动 ### 环境要求 - Python 3.9+ - Node.js 18+ - npm 9+ ### 1. 后端启动 ```bash # 进入后端目录 cd backend # 安装依赖(如果网络可用) pip install fastapi uvicorn pydantic # 生成测试数据(约20000根K线) python scripts/seed_data.py # 启动后端服务 uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload # API 文档 # http://localhost:8000/docs (Swagger UI) # http://localhost:8000/redoc (ReDoc) ``` ### 2. 前端启动 ```bash # 进入前端目录 cd frontend # 安装依赖 npm install # 启动开发服务器 npm run dev # 浏览器访问 # http://localhost:5173 ``` ### 3. API 端点概览 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/health` | 健康检查 | | GET | `/api/kline/batch` | 批量查询K线数据 | | GET | `/api/kline/timerange` | 获取品种数据时间范围 | | POST | `/api/drawing/save` | 保存绘图快照 | | GET | `/api/drawing/load` | 加载绘图快照 | | POST | `/api/replay/save` | 保存回放会话 | | GET | `/api/replay/load/{id}` | 加载回放会话 | | GET | `/api/replay/list` | 列出回放会话 | | WS | `/ws` | WebSocket 实时通信 | ### K线查询示例 ``` GET /api/kline/batch?symbol=BTCUSDT&period=1H&from=1700000000&to=1700086400&page=1&page_size=500 响应: { "data": [ {"time": 1700000000, "open": 42000.0, "high": 42033.21, "low": 41773.77, "close": 41883.33, "volume": 1494333.17}, ... ], "total": 25, "page": 1, "page_size": 500 } ``` ## 核心功能 ### K线图表 - ✅ 多周期切换:分时/1m/5m/15m/30m/1H/4H/日线/周线/月线 - ✅ 平移、滚轮缩放、自适应 - ✅ 统一K线数据结构 {time, open, high, low, close, volume} ### 主题系统 - ✅ 深色/浅色模式一键切换 - ✅ 蜡烛颜色自定义(阳线/阴线) - ✅ 主题配置持久化到 localStorage ### 指标系统(基于 lightweight-charts-indicators) - ✅ 完整内置40+指标:SMA, EMA, BB, RSI, MACD, Stochastic, ATR, CCI, OBV, MFI 等 - ✅ 区分主图/副图指标 - ✅ 自由添加、删除指标 - ✅ 自定义参数调整 ### 画线绘图系统(基于 lightweight-charts-drawing) - ✅ 全套绘图工具:趋势线、水平线、垂直线、矩形、斐波那契、通道、文字标注等 - ✅ 所有图形存储基于 time+price 坐标(非像素坐标) - ✅ 撤销/重做栈(Ctrl+Z / Ctrl+Y) - ✅ JSON序列化/反序列化 ### 行情回放系统 ⭐ - ✅ 播放/暂停/停止 - ✅ 单根K线前进/后退 - ✅ 进度条拖拽跳转 - ✅ 倍速切换:0.25x ~ 10x - ✅ **核心规则:指标增量计算,逐根K线动态生长** - ✅ 跳转时清空图表 + 指标,从起始位置重新构建 ### 模拟交易 - ✅ 市价/限价开仓 - ✅ 止盈/止损设置 - ✅ 每根K线触发订单撮合 - ✅ 绩效统计:胜率、盈亏比、最大回撤、夏普比率 ## 架构说明 ### 模块依赖 ``` Vue Components → Composables → Engine Modules → Lightweight Charts ↕ Pinia Stores ``` ### 回放核心数据流 ``` ReplayController.play() └→ tick() 每根K线: ├→ ChartManager.appendCandle(bar) // 追加K线 ├→ IndicatorManager.tick(bar) // 增量计算指标 ⭐ └→ TradeEngine.onTick(bar) // 撮合订单 ``` ### K线数据坐标规则 - K线数据统一使用 Unix时间戳(秒)+ 价格 - 绘图图形锚点存储为 `{time: unix秒, price: 价格}`,禁止像素坐标 - 序列化格式为 JSON,保证跨平台兼容 ## 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | `DATABASE_PATH` | `backend/tradinglivermore.db` | SQLite 数据库路径 | | `REDIS_URL` | `redis://localhost:6379/0` | Redis 连接地址 | | `CORS_ORIGINS` | `http://localhost:5173` | 允许的前端域名 | ## 生产环境部署 1. 将 SQLite 替换为 TimescaleDB 2. 执行 `scripts/init_timescaledb.sql` 初始化生产表结构 3. 配置 Redis 缓存 4. 前端 `npm run build` 构建静态文件 5. 使用 Nginx 反向代理前端 + 后端 ## 许可 MIT License