# vnpy_xt **Repository Path**: conanchen/vnpy_xt ## Basic Information - **Project Name**: vnpy_xt - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-21 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VeighNa框架的迅投研数据服务接口

## 说明 基于迅投XtQuant封装开发的实时行情和数据服务接口,支持以下中国金融市场的K线和Tick数据: * 股票、基金、债券、ETF期权: * SSE:上海证券交易所 * SZSE:深圳证券交易所 * 期货、期货期权: * CFFEX:中国金融期货交易所 * SHFE:上海期货交易所 * DCE:大连商品交易所 * CZCE:郑州商品交易所 * INE:上海国际能源交易中心 * GFEX:广州期货交易所 ## 安装 安装环境推荐基于4.0.0版本以上的【[**VeighNa Studio**](https://www.vnpy.com/)】。 直接使用pip命令: ``` pip install vnpy_xt ``` 或者下载解压后在cmd中运行: ``` pip install . ``` ## 使用 迅投数据试用账号申请链接:[VeighNa社区专属14天试用权限](https://xuntou.net/#/signup?utm_source=vnpy) ### Token连接(远程服务器) 1. 连接前请先确保xtquant模块可以正常加载(在[投研知识库](http://docs.thinktrader.net/)下载xtquant的安装包,解压后放置xtquant包到自己使用的Python环境的site_packages文件夹下)。 2. 登录[迅投研服务平台](https://xuntou.net/#/userInfo),在【用户中心】-【个人设置】-【接口TOKEN】处获取Token。 3. 在VeighNa Trader的【全局配置】处进行数据服务配置: * datafeed.name:xt * datafeed.username:token * datafeed.password:填复制的Token ### 客户端连接(本地QMT) 1. 连接请先登录迅投极速交易终端,同时确保xtquant模块可以正常加载(点击【下载Python库】-【Python库下载】,下载完成后拷贝"Python库路径"下Lib\site-packages文件夹中的xtquant包到自己使用的Python环境的site_packages文件夹下)。 2. 在VeighNa Trader的【全局配置】处进行数据服务配置: * datafeed.name:xt * datafeed.username:client * datafeed.password:留空 3. 请注意以客户端方式连接时,需要保持迅投客户端的运行。 **详细配置指南**: 参见 [Client Mode完整指南](CLIENT_MODE_GUIDE.md) ## 高级功能 本版本 (v1.4.6+) 增强了行情订阅功能,完整支持xtdata.py的所有能力: - ✅ **多周期订阅**: tick, 1m, 5m, 15m, 30m, 60m, 1d, 1w等 - ✅ **复权方式**: 不复权、前复权、后复权 - ✅ **历史数据**: 按数量或时间范围订阅 - ✅ **L2千档行情**: 支持千档深度(需L2权限) - ✅ **全推行情**: 订阅整个市场或多只股票 ### 复权方式最佳实践 复权方式的选择应根据**策略类型**和**使用场景**来决定,最重要的原则是**保持一致性**。 #### 📊 推荐方案 | 策略类型 | 实盘推荐 | 回测推荐 | 核心原因 | |---------|---------|---------|----------| | **中长线策略** | 前复权 (front) | 前复权 (front) | 当前价格真实,便于下单;保持一致性 | | **学术研究/严格回测** | 后复权 (back) | 后复权 (back) | 历史价格真实,避免未来函数 | | **短线/日内交易** | 不复权 (none) | 不复权 (none) | 关注真实价格波动和支撑压力位 | #### 🎯 各复权方式详解 **前复权 (front) - 最常用** - ✅ **优点**:当前价格保持真实市场价,历史价格向前调整 - 实盘下单直观:看到1850就按1850下单 - 止损止盈设置简单:价格就是实际成交价 - 适合大多数中长期策略 - ⚠️ **注意**:多次分红送股的股票,历史价格可能出现极小值甚至负数 - 影响长期技术指标计算(如200日均线) - 需要注意历史数据的有效性 **后复权 (back) - 学术标准** - ✅ **优点**:历史价格保持当时真实成交价 - 避免未来函数:不会因未来分红影响历史价格 - 回测更真实:模拟当时实际可交易价格 - 收益率计算准确 - ⚠️ **注意**:当前价格会被调整得很高 - 累积了所有历史分红送股的影响 - 价格数值可能不直观(如显示几千元) **不复权 (none) - 特定场景** - ✅ **优点**:所有价格都是真实历史成交价 - 短线策略:关注真实价格波动 - 支撑压力:历史关键价位准确 - 量价关系:成交量和价格匹配真实 - ⚠️ **注意**:不适合跨除权除息日的分析 - 价格会出现跳空缺口 - 长期趋势分析会失真 #### ⚡ 关键原则:保持一致性 ```python # ✅ 正确做法:实盘和回测使用相同复权方式 # 实盘使用前复权 req_live = XtSubscribeRequest( symbol="600519", exchange=Exchange.SSE, period="1d", dividend_type="front" # 前复权 ) # 回测也使用前复权 req_backtest = XtSubscribeRequest( symbol="600519", exchange=Exchange.SSE, period="1d", dividend_type="front", # 保持一致! start_time="20230101", end_time="20241231" ) # ❌ 错误做法:实盘和回测使用不同复权方式 # 这会导致策略验证失效,回测结果不可信 ``` #### 💡 实用建议 1. **新手入门**:建议使用**前复权** - 价格直观,易于理解 - 适合大多数策略场景 - 实盘回测保持一致 2. **严格回测**:建议使用**后复权** - 符合学术标准 - 避免前视偏差(look-ahead bias) - 适合策略研究和论文 3. **短线交易**:可以考虑**不复权** - 关注实时价格波动 - 日内交易不受除权影响 - 需要注意隔夜跳空风险 4. **技术指标计算**:建议使用**复权数据**(前或后均可) - MA、MACD等指标需要连续价格 - 不复权数据会因除权产生失真 ### 全推行情说明 使用 `code_list=["SH", "SZ"]` 订阅全推行情时,会收到**沪深两市所有证券**的数据,包括: - **A股股票**: 约5,000-6,000只(沪市6xxxxx、深市0xxxxx主板、3xxxxx创业板) - **指数**: 上证指数、深证指数等各类指数 - **ETF基金**: 交易型开放式指数基金 - **LOF基金**: 上市型开放式基金 - **可转债**: 可转换债券 - **债券**: 国债、企业债等 - **其他证券**: 权证、期权等(如有) 因此单次更新可能收到20,000+个证券数据,这是正常现象。 **如果只需要A股股票**,可以在回调函数中过滤: ```python def on_whole_quote(data): # 只保留A股股票(排除指数、ETF、债券等) stock_data = { code: quote for code, quote in data.items() if (code.startswith('6') and '.SH' in code) or # 沪市股票 (code.startswith('0') and '.SZ' in code) or # 深市主板 (code.startswith('3') and '.SZ' in code) # 创业板 } print(f"收到 {len(stock_data)} 只A股数据") # 约5000+只 # ... 处理股票数据 ``` **详细功能文档**: - [增强功能指南](ENHANCED_FEATURES.md) - [快速参考卡](QUICK_REFERENCE.md) - [错误处理指南](ERROR_HANDLING.md)