# 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)