Files
PolyHermes/README.md
T
WrBug 58cc096a77 feat: 重命名项目为 PolyHermes 并添加下单签名前日志
- 将所有 polymarket-bot 相关名称改为 PolyHermes
  - 容器名称: polyhermes, polyhermes-mysql, polyhermes-backend
  - 数据库名称: polyhermes
  - 应用名称: polyhermes-backend, polyhermes-frontend
  - 网络名称: polyhermes-network
  - 更新所有配置文件和文档

- 在 OrderSigningService 中添加下单签名前的详细日志输出
  - 输出订单方向、价格、数量、地址、金额等所有参数
  - 便于调试和排查下单问题
2025-12-03 04:01:45 +08:00

251 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PolyHermes
[![GitHub](https://img.shields.io/badge/GitHub-WrBug%2FPolyHermes-blue?logo=github)](https://github.com/WrBug/PolyHermes)
[![Twitter](https://img.shields.io/badge/Twitter-@quant__tr-blue?logo=twitter)](https://x.com/quant_tr)
一个功能强大的 Polymarket 预测市场跟单交易系统,支持自动化跟单、多账户管理、实时订单推送和统计分析。
## ✨ 功能特性
### 核心功能
- 🔐 **多账户管理**:支持通过私钥导入多个钱包账户,统一管理
- 👥 **Leader 管理**:添加和管理被跟单者(Leader),支持分类筛选(sports/crypto
- 📊 **跟单配置**:灵活的跟单模板配置,支持比例跟单和固定金额跟单
- 🔄 **自动跟单**:实时监控 Leader 交易,自动复制订单(支持买入和卖出)
- 📈 **订单跟踪**:完整的订单生命周期跟踪,包括买入、卖出和匹配记录
- 📊 **统计分析**:全局统计、Leader 统计、分类统计,支持时间范围筛选
- 💼 **仓位管理**:实时查看和管理持仓,支持仓位推送
- ⚙️ **系统管理**:代理配置、API 健康检查、实时状态监控
### 技术特性
- 🌐 **WebSocket 实时推送**:订单和仓位数据实时推送
- 🔒 **安全存储**:私钥和 API 凭证加密存储
- 📱 **响应式设计**:完美支持移动端和桌面端
- 🚀 **高性能**:异步处理、并发优化
- 🛡️ **风险控制**:每日亏损限制、订单数限制、价格容忍度等
## 🏗️ 技术栈
### 后端
- **框架**: Spring Boot 3.2.0
- **语言**: Kotlin 1.9.20
- **数据库**: MySQL 8.2.0
- **ORM**: Spring Data JPA
- **数据库迁移**: Flyway
- **HTTP 客户端**: Retrofit 2.9.0 + OkHttp 4.12.0
- **WebSocket**: Spring WebSocket
### 前端
- **框架**: React 18 + TypeScript
- **构建工具**: Vite
- **UI 库**: Ant Design 5.12.0
- **HTTP 客户端**: axios
- **状态管理**: Zustand
- **路由**: React Router 6
- **以太坊库**: ethers.js 6.9.0
## 📦 项目结构
```
polyhermes/
├── backend/ # 后端服务
│ ├── src/main/kotlin/ # Kotlin 源代码
│ │ ├── api/ # Polymarket API 接口定义
│ │ ├── controller/ # REST 控制器
│ │ ├── service/ # 业务逻辑服务
│ │ ├── entity/ # 数据库实体
│ │ ├── repository/ # 数据访问层
│ │ ├── dto/ # 数据传输对象
│ │ ├── websocket/ # WebSocket 处理
│ │ └── util/ # 工具类
│ └── src/main/resources/
│ ├── application.properties
│ └── db/migration/ # 数据库迁移脚本
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── components/ # 公共组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API 服务
│ │ ├── types/ # TypeScript 类型
│ │ └── utils/ # 工具函数
│ └── package.json
├── docs/ # 文档
└── README.md
```
## 🚀 快速开始
### 前置要求
- JDK 17+
- Node.js 18+
- MySQL 8.0+
- Gradle 7.5+(或使用 Gradle Wrapper
### 开发环境
1. **克隆仓库**
```bash
git clone https://github.com/WrBug/PolyHermes.git
cd PolyHermes
```
2. **配置数据库**
创建 MySQL 数据库:
```sql
CREATE DATABASE polyhermes CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
3. **启动后端**
```bash
cd backend
./gradlew bootRun
```
后端服务将在 `http://localhost:8000` 启动(开发环境)。
4. **启动前端**
```bash
cd frontend
npm install
npm run dev
```
前端应用将在 `http://localhost:3000` 启动。
### 生产部署
详细的部署文档请参考:[部署文档](docs/DEPLOYMENT.md)
#### 快速部署
**一体化部署(推荐)** - 前后端一起部署到一个容器:
```bash
# 在项目根目录
./deploy.sh
```
**分别部署**:
后端(Java 方式):
```bash
cd backend
./deploy.sh java
```
后端(Docker 方式):
```bash
cd backend
./deploy.sh docker
```
前端:
```bash
cd frontend
# 使用默认后端地址(相对路径)
./build.sh
# 或指定自定义后端地址(跨域场景)
./build.sh --api-url http://your-backend-server.com:8000
```
## 📖 使用指南
### 账户管理
1. 进入"账户管理"页面
2. 点击"导入账户"
3. 输入私钥(支持私钥字符串、助记词或 Keystore 文件)
4. 系统自动推导钱包地址并验证
5. 配置账户名称和是否默认账户
### 跟单配置
1. 进入"Leader 管理",添加被跟单者(Leader)地址
2. 进入"跟单模板",创建跟单模板(配置跟单比例、风险控制等)
3. 进入"跟单配置",将账户、模板和 Leader 关联
4. 启用跟单关系,系统将自动开始跟单
### 查看统计
- **全局统计**:查看所有跟单关系的汇总统计
- **Leader 统计**:查看特定 Leader 的统计信息
- **分类统计**:按分类(sports/crypto)查看统计
- **跟单关系统计**:查看单个跟单关系的详细统计
## 🔧 配置说明
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `DB_USERNAME` | 数据库用户名 | `root` |
| `DB_PASSWORD` | 数据库密码 | - |
| `SERVER_PORT` | 后端服务端口 | `8000` |
| `POLYGON_RPC_URL` | Polygon RPC 地址 | `https://polygon-rpc.com` |
| `JWT_SECRET` | JWT 密钥 | - |
### 代理配置
系统支持通过 Web UI 配置 HTTP 代理,无需修改环境变量:
1. 进入"系统管理"页面
2. 配置代理主机、端口、用户名和密码
3. 启用代理并测试连接
4. 配置实时生效,无需重启服务
## 📚 文档
- [部署文档](docs/DEPLOYMENT.md) - 详细的部署指南(Java/Docker
- [跟单系统需求文档](docs/copy-trading-requirements.md) - 后端 API 接口文档
- [前端需求文档](docs/copy-trading-frontend-requirements.md) - 前端功能文档
## 🤝 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📝 开发规范
- **后端**: 遵循 Kotlin 编码规范,使用 Spring Boot 最佳实践
- **前端**: 遵循 TypeScript 和 React 最佳实践
- **提交信息**: 使用清晰的提交信息,遵循 [Conventional Commits](https://www.conventionalcommits.org/)
详细开发规范请参考:
- [后端开发规范](.cursor/rules/backend.mdc)
- [前端开发规范](.cursor/rules/frontend.mdc)
## ⚠️ 免责声明
本软件仅供学习和研究使用。使用本软件进行交易的风险由用户自行承担。作者不对任何交易损失负责。
## 📄 许可证
本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。
## 🔗 相关链接
- [GitHub 仓库](https://github.com/WrBug/PolyHermes)
- [Twitter](https://x.com/quant_tr)
- [Polymarket 官网](https://polymarket.com)
- [Polymarket API 文档](https://docs.polymarket.com)
## 🙏 致谢
感谢所有为本项目做出贡献的开发者和用户!
---
**⭐ 如果这个项目对你有帮助,请给个 Star!**