# 高频交易服务 (HFT Trading Service) 一个为MT5 EA提供支持的高性能交易服务,采用FastAPI框架,集成行情分析、信号生成、策略决策、风险管理等功能。 ## 目录 - [功能特性](#功能特性) - [系统架构](#系统架构) - [快速开始](#快速开始) - [配置说明](#配置说明) - [API文档](#api文档) - [前端界面](#前端界面) - [开发指南](#开发指南) --- ## 功能特性 ### 核心功能 #### 1. K线数据管理 - 支持多周期K线数据接收 (H4/H1/M15/M5/M1) - 增量/全量数据校验与存储 - 数据时效性检查(自动识别休市状态) #### 2. 转折点检测 - 基于分型识别算法自动检测高低点 - 多周期转折点联动分析 - 接近阈值提醒(可配置各周期阈值) #### 3. 信号系统 - **Pivot信号**: 转折点触发信号(支持M1/M5/M15/H1/H4周期) - **KeyLevel信号**: 关键点位触发信号 - **AI Entry信号**: LLM分析入场信号 - 支持周期级别启用/禁用和权重配置 #### 4. 策略决策 - 多信号综合分析 - 周期级别权重配置 - 一致性要求设置(任一/多数/全部) - 自动止损止盈计算 - 风险回报比验证 #### 5. 风险管理 - 账户风险百分比控制 - 最大持仓数量限制 - 同向持仓限制 - 动态止损范围验证 #### 6. LLM分析 - OpenAI兼容API支持 - 多周期趋势分析 - 关键支撑/阻力位识别 - 交易建议生成 #### 7. 新闻与事件 - 金十数据快讯抓取 - 财经日历事件 - 市场事件监控 --- ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 前端 (Vue.js + Vuetify) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ │ │ Market │ │Settings │ │Positions │ │ News │ │ Log │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬────┘ │ └───────┼────────────┼────────────┼────────────┼────────────┼──────┘ │ │ │ │ │ └────────────┴────────────┴─────┬──────┴────────────┘ │ ┌────────▼────────┐ │ FastAPI 服务 │ │ (Port 8000) │ └────────┬────────┘ │ ┌──────────────────────────────┼──────────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ 行情模块 │ │ 信号/策略 │ │ 新闻模块 │ │ │ │ │ │ │ │ • KlineStore │ │ • SignalService│ │ • FlashNews │ │ • KlineService│ │ • StrategySvc │ │ • Calendar │ │ • PivotService│ │ • RiskManager │ │ • NewsCrawler │ │ • TechService │ │ • PendingOrder│ │ │ └───────┬───────┘ └───────┬───────┘ └───────────────┘ │ │ │ ┌───────┴───────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ LLM分析 │ │ 信号生成器 │ │ 存储层 │ │ │ │ │ │ │ │ • LLMService │ │ • PivotSignal │ │ • JSON文件 │ │ • LLMAnalyzer │ │ • KeyLevel │ │ • 内存缓存 │ │ │ │ • AI Entry │ │ │ └───────────────┘ └───────────────┘ └───────────────┘ │ ▼ ┌───────────────┐ │ MT5 EA │ │ │ │ • K线推送 │ │ • 统计上报 │ │ • 获取指令 │ │ • 执行交易 │ └───────────────┘ ``` ### 模块结构 ``` . ├── main.py # 服务入口 ├── server.py # TradingServer 核心类 ├── routes_*.py # API路由模块 │ ├── routes_ea.py # EA接口 │ ├── routes_market.py # 行情/策略接口 │ ├── routes_position.py # 持仓接口 │ ├── routes_news.py # 新闻接口 │ ├── routes_trader.py # 交易员接口 │ └── routes_system.py # 系统接口 ├── market/ # 核心模块 │ ├── models/ # 数据模型 │ │ ├── kline.py # K线模型 │ │ ├── pivot.py # 转折点模型 │ │ ├── trading_signal.py # 信号模型 │ │ ├── trading_strategy.py # 策略模型 │ │ ├── pending_order.py # 待确认订单 │ │ └── ... │ ├── services/ # 业务服务 │ │ ├── kline_service.py # K线服务 │ │ ├── pivot_service.py # 转折点服务 │ │ ├── signal/ # 信号生成器 │ │ │ ├── signal_service.py │ │ │ ├── pivot_signal.py │ │ │ ├── key_level_signal.py │ │ │ └── ai_entry_signal.py │ │ ├── strategy/ # 策略服务 │ │ │ ├── strategy_service.py │ │ │ └── risk_manager.py │ │ └── llm_service.py # LLM分析服务 │ ├── store/ # 数据存储 │ │ ├── kline_store.py │ │ ├── pivot_store.py │ │ ├── signal_store.py │ │ ├── strategy_store.py │ │ └── ... │ ├── llm_analyzer.py # LLM分析调度器 │ ├── market_event_monitor.py # 市场事件监控 │ ├── trade_config.py # 交易配置 │ └── system_log.py # 系统日志 ├── data/ # 数据文件目录 │ ├── strategy_config.json │ ├── trade_config.json │ └── ... └── frontend/ # Vue.js前端 └── src/ ├── views/ # 页面组件 │ ├── Market.vue # 行情分析 │ ├── Settings.vue # 系统设置 │ ├── Positions.vue # 持仓管理 │ ├── News.vue # 新闻资讯 │ └── SystemLog.vue # 系统日志 └── api/ # API封装 └── market.js ``` --- ## 快速开始 ### 环境要求 - Python 3.9+ - Node.js 18+ (前端开发) ### 安装依赖 ```bash # Python依赖 pip install fastapi uvicorn uvloop pydantic requests aiohttp openai # 前端依赖 cd frontend npm install ``` ### 启动服务 ```bash # 启动后端服务 (端口8000) python3 main.py # 启动前端开发服务 (端口5173) cd frontend npm run dev # 构建前端生产版本 npm run build ``` ### 验证服务 ```bash # 健康检查 curl http://localhost:8000/health # 查看API文档 open http://localhost:8000/docs ``` --- ## 配置说明 ### 交易配置 (data/trade_config.json) ```json { "enabled": true, "default_volume": 0.01, "default_sl_offset": 0.05, "mt5_timezone_offset": -6.0, "symbol_config": { "GOLD#": { "volume": 0.01, "sl_offset": 3, "key_levels": "5000,5100,5200", "key_level_threshold": 0.0008 } } } ``` ### 策略配置 (data/strategy_config.json) ```json { "strategies": { "GOLD#": { "enabled": true, "signal_config": { "pivot": { "enabled": true, "periods": { "M1": {"enabled": true, "weight": 15}, "M5": {"enabled": true, "weight": 20}, "M15": {"enabled": false, "weight": 25}, "H1": {"enabled": false, "weight": 20}, "H4": {"enabled": false, "weight": 20} } }, "key_level": { "enabled": true, "weight": 40 }, "ai_entry": { "enabled": true, "periods": { "M5": {"enabled": true, "weight": 20}, "M15": {"enabled": true, "weight": 30}, "H1": {"enabled": true, "weight": 25} } } }, "min_confidence": 50, "consistency_requirement": "majority", "min_risk_reward": 1.0, "max_positions": 3, "max_same_direction": 2 } } } ``` ### LLM配置 通过API或前端设置: ```bash curl -X POST http://localhost:8000/llm/configure \ -H "Content-Type: application/json" \ -d '{ "api_key": "your-api-key", "api_base": "https://api.openai.com/v1", "model": "gpt-4o-mini" }' ``` --- ## API文档 ### EA接口 #### 获取交易指令 ``` GET /get_trades?symbol=GOLD#&price=4850.00 ``` 返回该品种待执行的交易指令列表。 #### 推送K线数据 ``` POST /ea/kline/{period} POST /ea/kline_batch ``` **请求体示例**: ```json { "symbol": "GOLD#", "is_full": false, "klines": [ { "time": "2026-03-19 10:00:00", "open": 4850.00, "high": 4855.00, "low": 4848.00, "close": 4852.00, "volume": 1000 } ] } ``` **返回码说明**: - `200`: 成功 - `400 (code: 8888)`: 需要全量数据(数据不连续或未初始化) #### 发送统计数据 ``` POST /send_statistics ``` ### 行情接口 #### 查询K线数据 ``` GET /market/kline/{symbol}?period=M5&count=100 ``` #### 查询转折点 ``` GET /market/pivots/{symbol}?period=M5&direction=high&count=50 ``` #### 获取行情状态 ``` GET /market/status GET /market/configured_symbols ``` ### 策略接口 #### 获取策略配置 ``` GET /strategy GET /strategy/{symbol} ``` #### 更新策略配置 ``` POST /strategy/{symbol} ``` **请求体示例**: ```json { "enabled": true, "signal_config": { "pivot": { "enabled": true, "periods": { "M5": {"enabled": true, "weight": 25} } } }, "min_confidence": 60 } ``` #### 获取决策历史 ``` GET /strategy/decisions?symbol=GOLD#&count=20 ``` #### 手动触发决策 ``` POST /strategy/trigger/{symbol} ``` ### 持仓接口 ``` GET /positions GET /positions/summary POST /close_position ``` ### 新闻接口 ``` GET /api/news/flash?count=10 GET /api/news/calendar?date=2026-03-19 ``` ### WebSocket接口 #### 转折点提醒 ``` ws://localhost:8000/ws/market ``` #### 新闻推送 ``` ws://localhost:8000/api/news/ws ``` --- ## 前端界面 ### 行情分析 (Market) - 多周期K线展示 - 转折点标注 - AI趋势分析 - 交易决策提醒 - 待确认订单操作 ### 系统设置 (Settings) - 自动交易开关 - 品种配置管理 - 策略配置(信号权重、仓位管理、止损止盈) - LLM配置 - 品种数据状态 ### 持仓管理 (Positions) - 实时持仓列表 - 盈亏统计 - 一键平仓 ### 新闻资讯 (News) - 快讯列表 - 财经日历 - 事件提醒 ### 系统日志 (SystemLog) - 操作日志 - 事件筛选 - 日志清空 --- ## 开发指南 ### 信号生成器扩展 在 `market/services/signal/` 目录下创建新的信号生成器: ```python from market.models import TradingSignal, SignalSource class MySignalGenerator: def __call__(self, symbol: str, current_price: float) -> List[TradingSignal]: # 实现信号生成逻辑 signals = [] # ... return signals ``` 注册到 SignalService: ```python signal_service.register_generator("my_signal", MySignalGenerator()) ``` ### 策略参数说明 | 参数 | 类型 | 说明 | |------|------|------| | enabled | bool | 是否启用策略 | | signal_config | dict | 信号源周期级别配置 | | min_confidence | int | 最低置信度阈值 (0-100) | | consistency_requirement | str | 一致性要求 (any/majority/all) | | min_risk_reward | float | 最小风险回报比 | | max_positions | int | 最大持仓数量 | | max_same_direction | int | 同向最大持仓 | | fixed_volume | float | 固定手数 | | risk_percent | float | 账户风险百分比 | ### 数据存储 所有配置和数据存储在 `data/` 目录: - `strategy_config.json` - 策略配置 - `trade_config.json` - 交易配置 - `kline_*.json` - K线缓存 - `pivot_*.json` - 转折点缓存 - `llm_*.json` - LLM分析结果 --- ## 性能特性 - **FastAPI框架**: 高性能异步框架 - **UVloop**: 使用高性能事件循环 - **线程安全**: 核心数据使用锁保护 - **内存缓存**: 热数据内存缓存 - **增量更新**: K线支持增量推送 --- ## 常见问题 ### Q: 为什么某个品种没有AI趋势分析? A: AI分析只处理有K线数据的活跃品种。检查EA是否正确推送该品种的K线数据。 ### Q: 返回码8888是什么意思? A: 表示服务端需要全量K线数据,通常是因为: - 首次连接,没有历史数据 - 增量数据不连续,存在缺失 ### Q: 如何调试信号生成? A: 查看服务日志,信号生成器会打印详细信息: ``` [PivotSignalGenerator] 生成信号: buy @ 4850.00, SL=4840.00, TP=4870.00 ``` --- ## 许可证 MIT License