Skip to content

基于 DeepSeek API 的多维度股票分析系统,通过多头、空头、裁判三个角色的对话式分析,提供全面的投资参考。

Notifications You must be signed in to change notification settings

pbstar/ai-stock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

股票分析系统

基于 DeepSeek API 的多维度股票分析系统,通过多头、空头、裁判三个角色的对话式分析,提供全面的投资参考。

特点

  • 三角色分析 - 多头、空头、裁判三方视角,全面分析
  • 用户认证系统 - 支持用户注册、登录,保障数据安全
  • 积分体系 - 基于积分的分析次数管理,1 次分析消耗 1 积分
  • 历史记录 - 前端本地保存分析历史,方便回溯查看
  • 实时流式输出 - Server-Sent Events 技术,实时显示分析过程
  • 实时股票数据 - 集成东方财富 API,获取实时行情、K线和新闻
  • 字节跳动风格 UI - 简洁现代的界面设计
  • Markdown 渲染 - 支持格式化内容展示
  • 随时终止 - 可随时停止分析过程
  • 智能搜索 - 支持股票代码和名称搜索

技术栈

  • Node.js >= 20.0.0
  • TypeScript 5.7
  • Express 5.2
  • MySQL 2
  • DeepSeek API
  • 东方财富 API

快速开始

1. 安装依赖

npm install

2. 配置环境变量

复制环境变量模板:

cp .env.example .env

编辑 .env 文件,填入配置信息:

DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
PORT=3000

# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=ai-stock
DB_PASSWORD=your_password
DB_NAME=ai-stock

获取 API Key:访问 DeepSeek 平台 注册并创建

3. 配置数据库

创建 MySQL 数据库:

CREATE DATABASE ai_stock CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建用户表:

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(255) NOT NULL COMMENT '密码(SHA256)',
  `credits` int NOT NULL DEFAULT 10 COMMENT '积分',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

4. 启动服务

开发模式:

npm run dev

生产模式:

npm run build
npm start

5. 使用系统

  1. 浏览器访问:http://localhost:3000
  2. 注册账号或登录(注册默认获得 10 积分)
  3. 输入股票代码(如 sh600360)或股票名称(如 华鲁恒升
  4. 点击"分析"按钮开始分析(消耗 1 积分)
  5. 点击右上角"历史记录",查看本地保存的分析记录

搜索支持:

  • 股票代码:如 sh600360sz000001
  • 股票名称:如 华鲁恒升贵州茅台

项目结构

ai-stock/
├── src/
│   ├── api/
│   │   ├── request.ts      # HTTP 请求封装
│   │   └── eastmoneyApi.ts # 东方财富 API 封装
│   ├── config/
│   │   └── prompts.ts      # 三角色提示词配置
│   ├── db/
│   │   └── mysql.ts        # MySQL 数据库连接池
│   ├── services/
│   │   ├── auth.ts         # 用户认证服务
│   │   ├── deepseek.ts     # DeepSeek API 客户端
│   │   ├── stockData.ts    # 股票数据服务
│   │   └── analyzer.ts     # 分析流程控制
│   ├── routes/
│   │   └── index.ts        # API 路由
│   └── index.ts            # 入口文件
├── public/
│   ├── index.html          # 前端页面
│   └── assets/
│       ├── css/
│       │   └── style.css   # 样式文件
│       └── js/
│           └── marked.min.js  # Markdown 渲染库
├── dist/                   # 编译输出目录
├── .env                    # 环境变量(需创建)
├── .env.example            # 环境变量模板
├── tsconfig.json           # TypeScript 配置
└── package.json            # 项目配置

架构说明

API 层(src/api/)

  • request.ts - 统一的 HTTP 请求客户端

    • 提供 GET 和 getText 方法
    • 自动超时控制(默认 10 秒)
    • 统一错误处理
    • 自动设置 User-Agent
  • eastmoneyApi.ts - 东方财富 API 封装

    • searchStock() - 股票搜索,支持代码和名称
    • getQuote() - 获取实时行情数据
    • getKLine() - 获取 K 线历史数据
    • getNews() - 获取股票相关新闻

数据库层(src/db/)

  • mysql.ts - MySQL 连接池管理
    • 配置连接池参数
    • 提供数据库连接复用
    • 统一数据库访问接口

服务层(src/services/)

  • auth.ts - 用户认证服务

    • 用户注册与登录
    • Token 生成与验证
    • 积分管理(扣除、查询)
    • Session 管理
  • stockData.ts - 股票数据服务

    • 整合行情、K线、新闻数据
    • 数据格式化和解析
    • 提供统一的数据接口
  • analyzer.ts - 分析流程控制

    • 协调三角色分析流程
    • 管理对话历史
    • 流式输出控制
  • deepseek.ts - DeepSeek API 客户端

    • 流式对话接口
    • 自动重试机制
    • 错误处理

API 接口

认证相关

POST /api/auth/register

用户注册

请求体:

{
  "username": "user123",
  "password": "password123"
}

响应:

{
  "message": "注册成功"
}

POST /api/auth/login

用户登录

请求体:

{
  "username": "user123",
  "password": "password123"
}

响应:

{
  "token": "xxxxxx",
  "message": "登录成功"
}

POST /api/auth/logout

用户登出(需要认证)

请求头:

Authorization: Bearer <token>

响应:

{
  "message": "登出成功"
}

GET /api/auth/user

获取用户信息(需要认证)

请求头:

Authorization: Bearer <token>

响应:

{
  "username": "user123",
  "credits": 10
}

分析相关

POST /api/analyze

开始股票分析,返回 Server-Sent Events 流(需要认证,消耗 1 积分)

请求头:

Authorization: Bearer <token>

请求体:

{
  "query": "sh600360"
}

{
  "query": "华鲁恒升"
}

响应事件类型:

  • start - 分析开始(包含 sessionId 和剩余积分)
  • content - 内容片段
  • done - 分析完成
  • terminated - 已终止
  • error - 错误信息

POST /api/stop

终止正在进行的分析(需要认证)

请求头:

Authorization: Bearer <token>

请求体:

{
  "sessionId": "session_id"
}

响应:

{
  "success": true
}

分析流程

数据获取

系统首先通过东方财富 API 获取以下数据:

  1. 实时行情 - 当前价格、涨跌幅、成交量等
  2. 历史 K 线 - 最近 30 天的价格走势数据
  3. 相关新闻 - 最新的股票相关新闻资讯

三角色分析

基于获取的数据,系统采用三轮对话式分析:

  1. 第一轮 - 多头发表看涨观点,空头发表看跌观点
  2. 第二轮 - 空头反驳多头观点,多头反驳空头观点
  3. 第三轮 - 裁判综合双方观点,给出客观分析和操作建议

每个角色都有严格的输出格式和分析维度,确保分析的全面性和专业性。

架构优化

本项目采用以下架构设计:

1. 分层架构

  • API 层(src/api/)- 负责外部数据获取
  • 数据库层(src/db/)- 负责数据持久化
  • 服务层(src/services/)- 负责业务逻辑处理
  • 路由层(src/routes/)- 负责请求处理和协调

2. 请求封装

  • 统一的 HTTP 客户端(src/api/request.ts
  • 自动超时和错误处理
  • 可复用的请求配置

3. API 模块化

  • 将所有东方财富 API 调用封装到 src/api/eastmoneyApi.ts
  • 清晰的接口定义
  • 类型安全的返回值

4. 用户认证

  • Token-based 认证机制
  • Session 管理
  • 积分体系
  • 中间件保护路由

5. 代码简化

  • 移除未使用的代码和变量
  • 简化复杂逻辑
  • 统一错误处理

6. 跨平台支持

  • 修复构建脚本为跨平台命令
  • 支持 macOS/Linux/Windows

注意事项

⚠️ 重要提示

安全相关

  • 不要将 .env 文件提交到 Git 仓库
  • 不要分享你的 API Key 和数据库密码

API 使用

  • 定期检查 DeepSeek API 使用情况和费用
  • 合理设置用户初始积分
  • 根据需要调整积分消耗策略

投资风险

  • 分析结果仅供参考,不构成投资建议
  • 投资有风险,决策需谨慎
  • 请结合多方信息做出投资判断

许可证

MIT

About

基于 DeepSeek API 的多维度股票分析系统,通过多头、空头、裁判三个角色的对话式分析,提供全面的投资参考。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published