一个专业的 TradingView 信号接收与量化交易执行系统,支持策略管理、风险控制、实时监控和完整的审计追踪。
- 📡 信号接收: 接收 TradingView Webhook 信号,支持 HMAC-SHA256 签名验证
- 🎯 策略执行: 自动执行交易策略,支持多策略隔离运行
- 🛡️ 风险控制: 内置风控系统,支持仓位限制、冷却时间、熔断机制
- 📊 实时监控: Dashboard 实时展示决策、成交、持仓和健康状态
- 🔍 完整审计: 全链路追踪,支持决策回溯和性能分析
- 🏦 交易所支持: 支持 OKX 交易所(Paper Trading / 实盘)
- 📈 BI 分析: 内置业务智能分析,支持策略绩效评估
- Python 3.11+
- PostgreSQL 14+ (生产环境) / SQLite (开发环境)
- Docker & Docker Compose (可选)
git clone https://github.com/LeonardAlexandra/trading-system.git
cd trading-system# 复制环境变量模板
cp .env.example .env
# 编辑 .env 文件,配置以下关键项:
# - TV_WEBHOOK_SECRET: TradingView Webhook 密钥
# - EXCHANGE_API_KEY: 交易所 API Key
# - EXCHANGE_API_SECRET: 交易所 API Secret
# - DATABASE_URL: 数据库连接字符串# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -e ".[dev]"# SQLite (开发环境)
alembic upgrade head
# PostgreSQL (生产环境)
# 确保 PostgreSQL 已启动,然后执行:
DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/trading_system alembic upgrade head# 开发模式
uvicorn src.app.main:app --host 0.0.0.0 --port 8000 --reload
# 生产模式
uvicorn src.app.main:app --host 0.0.0.0 --port 8000 --workers 1| 功能 | 地址 |
|---|---|
| Dashboard | http://localhost:8000/dashboard |
| API 文档 | http://localhost:8000/docs |
| 健康检查 | http://localhost:8000/healthz |
| BI 分析 | http://localhost:8000/bi |
| 审计查询 | http://localhost:8000/audit |
# 1. 配置环境变量
cp .env.example .env
# 编辑 .env,设置 DATABASE_URL 为 PostgreSQL
# 2. 启动服务
docker compose up -d
# 3. 执行数据库迁移
docker compose run --rm app alembic upgrade head
# 4. 查看日志
docker compose logs -f appdocker compose build --build-arg BASE_IMAGE=docker.1ms.run/library/python:3.11-slim
docker compose up -dTradingView 不支持自定义请求头,需要中转服务添加签名。
方案 A: 使用 ngrok + 本地中转
# 1. 启动中转服务
export TV_WEBHOOK_SECRET="你的密钥"
python scripts/relay_tradingview_webhook.py
# 2. 使用 ngrok 暴露到公网
ngrok http 8080
# 3. 获取 https://xxx.ngrok.io/webhook 地址填入 TradingView方案 B: 使用云函数/无代码平台
- Make (Integromat)
- Zapier
- n8n
- 打开 TradingView 图表,加载你的策略
- 点击 「告警」 → 「创建告警」
- 条件: 选择策略或指标条件
- 通知: 勾选 「Webhook URL」,填入中转地址
- 消息: 填写以下 JSON:
{
"symbol": "{{ticker}}",
"action": "{{strategy.order.action}}",
"strategy_id": "MOCK_STRATEGY_V1",
"timestamp": "{{timenow}}",
"timeframe": "{{interval}}"
}# 本地测试
curl -X POST http://localhost:8000/webhook/tradingview \
-H "Content-Type: application/json" \
-H "X-TradingView-Signature: <签名>" \
-d '{
"symbol": "BTCUSDT",
"action": "buy",
"strategy_id": "MOCK_STRATEGY_V1",
"timestamp": "2026-03-04T08:00:00Z"
}'trading-system/
├── src/ # 源代码
│ ├── app/ # FastAPI 应用
│ │ ├── main.py # 应用入口
│ │ ├── routers/ # API 路由
│ │ └── dependencies.py # 依赖注入
│ ├── adapters/ # 外部适配器
│ │ ├── tradingview_adapter.py # TradingView 适配
│ │ └── market_data.py # 市场数据
│ ├── application/ # 应用服务层
│ │ ├── signal_service.py # 信号处理
│ │ └── phase2_main_flow_service.py # 主流程
│ ├── config/ # 配置管理
│ │ ├── app_config.py # 应用配置
│ │ └── strategy_resolver.py # 策略解析
│ ├── execution/ # 执行引擎
│ │ ├── execution_engine.py # 执行引擎
│ │ ├── execution_worker.py # 执行工作器
│ │ ├── order_manager.py # 订单管理
│ │ ├── position_manager.py # 仓位管理
│ │ ├── risk_manager.py # 风险管理
│ │ └── okx_client.py # OKX 客户端
│ ├── models/ # 数据模型
│ ├── repositories/ # 数据仓库
│ ├── services/ # 领域服务
│ └── utils/ # 工具函数
├── config/ # 配置文件
│ ├── config.example.yaml # 配置示例
│ └── alert_rules.example.yaml # 告警规则示例
├── docs/ # 文档
│ ├── API.md # API 文档
│ ├── DEPLOYMENT.md # 部署指南
│ └── TRADINGVIEW_WEBHOOK.md # TradingView 配置
├── alembic/ # 数据库迁移
├── scripts/ # 工具脚本
├── tests/ # 测试
└── docker-compose.yml # Docker 配置
| 变量 | 说明 | 示例 |
|---|---|---|
DATABASE_URL |
数据库连接 | sqlite+aiosqlite:///./trading_system.db |
TV_WEBHOOK_SECRET |
TradingView Webhook 密钥 | your_secret_key |
EXCHANGE_NAME |
交易所名称 | okx |
EXCHANGE_API_KEY |
API Key | your_api_key |
EXCHANGE_API_SECRET |
API Secret | your_api_secret |
EXCHANGE_SANDBOX |
沙盒模式 | true / false |
PRODUCT_TYPE |
产品类型 | spot / perp |
LOG_LEVEL |
日志级别 | INFO / DEBUG / ERROR |
strategies:
MOCK_STRATEGY_V1:
enabled: true
execution_override:
dry_run: false
risk_override:
max_position_qty: 0.1
max_order_qty: 0.01
exchange:
name: "okx"
sandbox: true- Webhook 密钥: 使用强随机字符串,定期更换
- API 密钥: 使用权限受限的 API Key,不要给提现权限
- IP 白名单: 在交易所设置 IP 白名单
- 沙盒测试: 实盘前务必在沙盒环境充分测试
- 监控告警: 配置异常监控和告警
# 运行所有测试
pytest
# 运行特定测试
pytest tests/integration/test_signal_receiver.py
# 带覆盖率报告
pytest --cov=src --cov-report=html系统内置以下监控指标:
- 信号接收延迟:
signal_receiver.latency_ms - 决策生成延迟:
signal_service.latency_ms - 订单执行延迟:
execution.latency_ms - 风控检查次数:
risk.check_count - 仓位一致性:
position.consistency_check
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 401 Unauthorized | 签名错误 | 检查 TV_WEBHOOK_SECRET 是否一致 |
| 422 STRATEGY_NOT_FOUND | 策略未配置 | 在 config.yaml 中添加策略配置 |
| 500 Internal Error | 数据库表不存在 | 执行 alembic upgrade head |
| 数据库连接失败 | 连接字符串错误 | 检查 DATABASE_URL 格式 |
- ✅ 新增 BI 分析页面
- ✅ 支持策略绩效评估
- ✅ 完善审计追踪功能
- ✅ 新增发布门禁系统
- ✅ 支持参数优化
- ✅ 强化风险控制
- ✅ 支持多策略隔离
- ✅ 新增持仓一致性监控
- ✅ 完善日志追踪
- ✅ Dashboard 实时监控
- ✅ 决策快照功能
- ✅ 性能日志记录
- ✅ 信号去重机制
- ✅ 风控系统完善
- ✅ 外部数据同步
- ✅ 基础交易执行
- ✅ OKX 交易所对接
- ✅ Webhook 信号接收
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
本软件仅供学习和研究使用,不构成任何投资建议。使用本软件进行交易可能面临资金损失风险,请谨慎使用。
- GitHub Issues: 提交问题
- Email: johnemerson928760923@gmail.com
Happy Trading! 📈