一个智能的可转债信号监控和自动交易平台,实时监控股票异动并自动买入对应可转债。
- 实时监控:毫秒级股票价格监控,自动检测涨停和大涨信号
- 智能交易:信号触发时自动执行可转债买入交易
- 可视化界面:直观的卡片式股票-可转债配对显示
- 深度分析:双图表详情页面提供技术分析
- 云端架构:零本地存储,所有数据托管在云端
- 灵活清理:智能数据清理,控制存储成本
- 框架:Next.js 14 + React 18
- 样式:Tailwind CSS + shadcn/ui
- 图表:Recharts
- 状态管理:Zustand
- 部署:Vercel
- 框架:Python + FastAPI
- 数据库:PostgreSQL (Railway)
- 数据源:Tushare API
- 部署:Railway
用户界面 (Vercel) ↔ API服务 (Railway) ↔ 云数据库 (Railway PostgreSQL)
↕
数据源 (Tushare)
↕
交易接口 (待集成)
- Node.js 18+
- Python 3.9+
- Git
- Railway 账户
- Vercel 账户
# 后端环境变量 (Railway) DATABASE_URL=postgresql://... TUSHARE_TOKEN=a0c3518c35f2494d5ee0b99792e0359005d793f3af65dcf13892c5e0 REDIS_URL=redis://... (可选) # 前端环境变量 (Vercel) NEXT_PUBLIC_API_URL=https://your-railway-app.railway.app
git clone <repository-url> cd bond-monitoring-platform
cd backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # 配置环境变量 uvicorn app.main:app --reload
cd frontend npm install cp .env.example .env.local # 配置环境变量 npm run dev
# Railway 会自动创建数据库 # 运行初始化脚本 python backend/scripts/init_db.py
bond-monitoring-platform/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/ # API路由
│ │ ├── core/ # 核心业务逻辑
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 外部服务集成
│ │ └── utils/ # 工具函数
│ ├── scripts/ # 数据库脚本
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/ # 前端应用
│ ├── components/ # React组件
│ ├── pages/ # Next.js页面
│ ├── hooks/ # 自定义hooks
│ ├── lib/ # 工具库
│ ├── styles/ # 样式文件
│ └── public/ # 静态资源
├── docs/ # 项目文档
└── README.md
GET /api/monitoring/pairs
获取股票-可转债配对监控数据
响应示例:
{
"data": [
{
"stockCode": "000001.SZ",
"stockName": "平安银行",
"stockPrice": 10.50,
"stockChange": 2.5,
"bondCode": "113048.SZ",
"bondName": "华正转债",
"bondPrice": 125.50,
"bondChange": 1.8,
"conversionPrice": 8.50,
"premium": 45.2,
"maturityDate": "2026年12月31日",
"signalType": "big_rise"
}
],
"total": 100,
"page": 1,
"pageSize": 20
}POST /api/trading/execute
请求体:
{
"bondCode": "113048.SZ",
"orderType": "buy",
"quantity": 100,
"price": 125.50
}POST /api/admin/cleanup
请求体:
{
"dataTypes": ["signals", "trades"],
"timeRange": {
"hours": 24
},
"previewOnly": false
}CREATE TABLE bonds ( id SERIAL PRIMARY KEY, ts_code VARCHAR(20) UNIQUE NOT NULL, bond_name VARCHAR(100), stock_code VARCHAR(20), stock_name VARCHAR(100), conversion_price DECIMAL(10,2), maturity_date DATE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
CREATE TABLE price_ticks ( id SERIAL PRIMARY KEY, stock_code VARCHAR(20) NOT NULL, price DECIMAL(10,2) NOT NULL, volume BIGINT, timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX idx_price_ticks_stock_time ON price_ticks(stock_code, timestamp DESC);
CREATE TABLE signals ( id SERIAL PRIMARY KEY, stock_code VARCHAR(20) NOT NULL, bond_code VARCHAR(20), signal_type VARCHAR(20), trigger_value DECIMAL(10,2), status VARCHAR(20) DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
CREATE TABLE trades ( id SERIAL PRIMARY KEY, signal_id INTEGER REFERENCES signals(id), bond_code VARCHAR(20), order_id VARCHAR(50), order_volume INTEGER, order_price DECIMAL(10,2), executed_at TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
def detect_limit_up(price_data: List[PriceTick]) -> bool: """检测涨停信号""" if not price_data: return False current_price = price_data[-1].price prev_close = price_data[-2].price if len(price_data) > 1 else current_price # 计算涨跌幅 change_percent = (current_price - prev_close) / prev_close * 100 # 涨停阈值 (不同市场不同) limit_up_threshold = 10.0 # A股涨停10% return change_percent >= limit_up_threshold
def detect_big_rise(price_data: List[PriceTick], time_window: int = 5) -> bool: """检测大涨信号 (5分钟内涨幅超过3%)""" if len(price_data) < time_window: return False # 获取时间窗口内的价格 window_prices = price_data[-time_window:] start_price = window_prices[0].price end_price = window_prices[-1].price # 计算涨幅 rise_percent = (end_price - start_price) / start_price * 100 return rise_percent >= 3.0
- 价格数据:保留24小时
- 信号记录:已执行保留24小时,未执行保留6小时
- 交易记录:保留7天
支持自定义清理范围:
- 时间范围:最近N小时/日期范围
- 数据类型:信号/交易/缓存
- 预览模式:先预览再执行
- 连接GitHub仓库
- 配置环境变量
- 部署服务
- 配置数据库
- 连接GitHub仓库
- 配置环境变量
- 自动部署
- 数据库容量监控
- API响应时间
- 信号检测准确率
- 交易执行成功率
- 应用日志
- 错误日志
- 交易日志
- 清理日志
- 请求频率限制
- 输入验证
- 错误信息过滤
- 敏感信息加密
- 访问权限控制
- 数据备份
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
项目维护者 - your-email@example.com
项目链接: https://github.com/your-username/bond-monitoring-platform