
Qmt Docs
- 144 installs
- 169 repo stars
- Updated June 29, 2026
- lzwme/finance-quant-skills
Helps with ai & agent building tasks.
About
qmt-docs is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- qmt-docs
- AI & Agent Building
- AI-coding skill
Qmt Docs by the numbers
- 144 all-time installs (skills.sh)
- +8 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #3,457 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/lzwme/finance-quant-skills --skill qmt-docsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 144 |
|---|---|
| repo stars | ★ 169 |
| Last updated | June 29, 2026 |
| Repository | lzwme/finance-quant-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
QMT Python 策略开发知识库
为 QMT(迅投极速策略交易系统)提供完整的 Python 开发参考,分为教程指南和 API 参考两层。
📖 文档结构
教程/指南(实践导向)
├── overview.md 系统概述、模式选择、入门路径
├── execution-mechanisms.md 三种运行机制详解(含流程图和代码模板)
├── backtesting-guide.md 回测完整流程(数据准备→参数设置→运行→分析)
├── live-trading-guide.md 实盘交易指南(账号配置→委托管理→风险控制)
├── quick-reference.md ★ 常用 API 速查卡片
├── best-practices.md 编码规范、性能优化、风险管理、调试技巧
├── joinquant-migration.md 聚宽策略迁移至 QMT 指南
└── examples/ 代码示例(backtest / live-trading / subscribe / run-time)
API 参考(官方完整文档)
└── python-innerApi/
├── start_now.md 快速开始(回测/实盘概览 + 三种机制示例)
├── data_function.md 行情与数据函数(get_market_data_ex 等完整参数)
├── trading_function.md 交易函数(passorder、get_trade_detail_data 等)
├── system_function.md 系统函数(ContextInfo 方法、定时器等)
├── callback_function.md 回调函数(account/order/deal/position 主推)
├── quote_function.md 引用函数(扩展数据、因子、VBA调用)
├── drawing_function.md 绘图函数
├── interface_operation.md 界面操作说明
├── data_structure.md 数据结构定义(Bar/Tick/Order/Position 等对象字段)
├── enum_constants.md 枚举常量(opType、orderType、委托状态等)
├── variable_convention.md 变量约定
├── code_examples.md 完整代码示例合集
├── user_attention.md 用户注意事项
└── question_answer.md 常见问题
数据字典
└── dict/ 各品种数据字段(stock / indexes / future / option 等)🚀 使用引导
按场景选择入口
| 场景 | 首先阅读 | 然后查阅 |
|---|---|---|
| 新手入门 | overview.md → execution-mechanisms.md | quick-reference.md |
| 编写回测策略 | backtesting-guide.md | examples/backtest.md |
| 编写实盘策略 | live-trading-guide.md | examples/live-trading.md |
| 查询 API 用法 | quick-reference.md(速查) | python-innerApi/data_function.md 等(完整参数) |
| 从聚宽迁移 | joinquant-migration.md | overview.md |
| 代码质量优化 | best-practices.md | examples/ |
| 数据结构查询 | python-innerApi/data_structure.md | python-innerApi/enum_constants.md |
快速查找路径
需要看函数怎么用?
→ quick-reference.md(常用函数精简版)
→ python-innerApi/data_function.md(数据获取类完整文档)
→ python-innerApi/trading_function.md(交易类完整文档)
→ python-innerApi/system_function.md(系统/ContextInfo 方法)
需要看完整代码?
→ python-innerApi/code_examples.md(官方示例合集)
→ examples/(精选示例)
需要查字段含义?
→ python-innerApi/data_structure.md(数据结构定义)
→ dict/(各品种数据字典)
遇到报错/问题?
→ python-innerApi/question_answer.md(官方FAQ)
→ python-innerApi/user_attention.md(注意事项)🔧 关键速查
编码规范
#coding:gbk # 必须在文件第一行核心概念
| 概念 | 说明 |
|---|---|
| handlebar | K线驱动(回测推荐) |
| subscribe | 事件驱动(仅实盘,高频) |
| run_time | 定时触发(监控场景) |
| quicktrade=0 | 等待K线完成再下单(逐K线模式) |
| quicktrade=2 | 立即下单(不需要等待) |
| 最小单位 | 100 股 |
最常用代码
# 获取历史行情数据(回测用 subscribe=False,实盘用 subscribe=True)
data = C.get_market_data_ex(['close'], [stock], end_time=bar_date,
period='1d', count=100, subscribe=False)
close_list = list(data[stock].iloc[:, 0])
# 获取全推实时行情
tick = C.get_full_tick(['600000.SH'])
price = tick['600000.SH']['lastPrice']
# 下单买入(23=买入, 1101=按股数, quicktrade=0 逐K线模式)
passorder(23, 1101, account, stock, 5, -1, 100, C)
# 下单买入(quicktrade=2 立即下单模式)
passorder(23, 1101, account, stock, 5, -1, 100, '策略名', 2, '备注', C)
# 查询持仓
holds = get_trade_detail_data(account, 'stock', 'position')
holds_dict = {f'{p.m_strInstrumentID}.{p.m_strExchangeID}': p.m_nVolume for p in holds}
# 查询账户可用资金(单位:分)
cash = get_trade_detail_data(account, 'stock', 'account')[0].m_dAvailable⚠️ 使用注意事项
1. 编码声明:文件首行必须是 #coding:gbk,不可省略 2. 位置参数:get_market_data_ex 的前两个参数 fields 和 stocks 必须用位置参数,不能用 fields= 或 stocks= 3. subscribe 参数:回测必须 False,实盘使用 True 4. 账号类型:get_trade_detail_data 的第二个参数:股票用 'stock',两融用 'credit' 5. 金额单位:m_dAvailable 等金额字段单位是分,需 /100 转换为元 6. 数量单位:股票交易必须是 100 的整数倍 7. 实盘限制:subscribe 和 run_time 仅支持实盘,不支持回测
QMT 回测模型完全指南
🎯 回测概述
回测是遍历固定的历史数据,模拟交易过程的过程。在历史K线上从左向右逐根遍历,以模拟的资金账号记录每日的买卖信号、持仓盈亏,最终展示策略在历史上的净值走势结果。
回测的意义
- ✅ 验证策略逻辑的正确性
- ✅ 评估策略历史表现
- ✅ 优化策略参数
- ✅ 降低实盘风险
- ✅ 快速迭代策略
---
📥 第一步:数据准备
下载历史行情
操作步骤
1. 打开数据管理
- 点击QMT界面左上角 操作 按钮
- 选择 数据管理 选项
2. 选择数据类型
- 选择回测的周期(日线、周线、月线等)
- 选择所需的板块(沪深A股、创业板等)
3. 设置时间范围
- 时间范围选择 全部 或指定范围
- 点击下载完整历史行情
下载配置建议
周期选择:
├─ 日线:适合中期策略
├─ 周线:适合长期策略
├─ 1分钟/5分钟:适合高频策略
└─ 15分钟/30分钟:适合短期策略
板块选择:
├─ 沪深A股:全市场
├─ 创业板:创业板股票
├─ 科创板:科创板股票
└─ 指数:股指数据
时间范围:
├─ 全部:完整历史
├─ 最近1年:最近一年数据
├─ 最近3年:最近三年数据
└─ 自定义:指定起止日期设置定时更新
为了保持数据最新,设置每日定时更新:
1. 点击界面右下角 行情 按钮 2. 进入批量下载界面 3. 选择需要每天更新的数据 4. 勾选 定时下载 选项 5. 指定下载时间(如每天22:00)
每天在指定时间会自动下载最新行情数据到本地。
---
⚙️ 第二步:基础信息设置
在"我的界面"配置回测策略
策略名称
输入策略的描述名称,方便后续查询和管理默认周期
回测使用的K线周期
- 日线(1d)
- 周线(1w)
- 月线(1m)
- 分钟线(1m, 5m, 15m, 30m)默认主图
选择回测的品种可以是:
- 单个股票(如 600000.SH)
- 指数(如 000001.SZ)
- 自定义品种账号设置
# 回测模式账号可以填任意字符串
C.accountid = "test" # 任意名称
C.accountid = "backtest01" # 建议与策略名称相关初始资金
# 回测使用模拟资金账号
# 账号的初始资金由QMT系统预设
# 默认为 1000000 元(100万)---
📊 第三步:回测参数设置
回测参数配置
在回测界面设置以下参数:
1. 基础参数
| 参数 | 说明 | 示例 |
|---|---|---|
| 策略选择 | 选择要回测的策略文件 | dual_ma_strategy.py |
| 周期 | K线周期 | 日线(1d) |
| 品种 | 回测的股票代码 | 600000.SH |
| 起始日期 | 回测开始日期 | 2019-01-01 |
| 结束日期 | 回测结束日期 | 2022-12-31 |
2. 资金参数
# 初始资金设置
initial_cash = 1000000 # 100万元
# 手续费率
commission_rate = 0.001 # 0.1%
# 印花税率
stamp_tax = 0.001 # 0.1%(卖出时收取)
# 滑点设置
slippage = 0 # 默认不考虑滑点3. 交易参数
# 每次交易的最小单位
min_order_size = 100 # 100股
# 最大购买力
max_cash_fraction = 0.9 # 最多使用90%的现金
# 杠杆倍数
leverage = 1 # 1倍为无杠杆参数设置建议
✅ 入门回测 - 建议设置
周期:日线(1d)
时间:最近3年
品种:单只股票或指数
初始资金:100万✅ 中等策略 - 建议设置
周期:日线/周线混合
时间:最近5年
品种:板块(如沪深A股)
初始资金:500万✅ 高频策略 - 建议设置
周期:5分钟/15分钟
时间:最近1年
品种:流动性好的股票
初始资金:100万---
🚀 第四步:代码实现
代码结构
#coding:gbk # ← 必须在第一行
# 导入库
import pandas as pd
import numpy as np
import talib
# 全局变量定义
# ...
def init(C):
"""初始化函数"""
# 设置初始参数
pass
def handlebar(C):
"""K线处理函数"""
# 每根K线触发一次
# 进行交易逻辑
passinit 函数 - 初始化
def init(C):
"""
初始化函数,在回测开始时执行一次
参数 C: ContextInfo 对象
"""
# 1. 设置交易品种
C.stock = C.stockcode + '.' + C.market
# C.stockcode: '600000'
# C.market: 'SH' 或 'SZ'
# 结果: '600000.SH'
# 2. 设置策略参数
C.line1 = 10 # 快线周期
C.line2 = 20 # 慢线周期
# 3. 设置账号
C.accountid = 'test'
# 4. 初始化状态变量
C.holding = False
C.entry_price = 0
# 5. 获取账户初始信息
# 账户初始资金由系统自动设置handlebar 函数 - 交易逻辑
获取当前K线信息
def handlebar(C):
# 获取当前K线时间
bar_date = timetag_to_datetime(
C.get_bar_timetag(C.barpos),
'%Y%m%d%H%M%S'
)
# 返回格式: '20190101093000'
# 获取当前K线位置
bar_pos = C.barpos # K线索引位置
# 获取当前K线周期
period = C.period # '1d', '1w', etc.获取历史行情数据
# 回测的关键:使用 subscribe=False 和位置参数
local_data = C.get_market_data_ex(
['close', 'high', 'low', 'open'], # 字段列表(位置参数)
[C.stock], # 股票列表(位置参数)
end_time=bar_date, # 数据截至时间
period=C.period, # K线周期
count=max(C.line1, C.line2), # 数据条数
subscribe=False # ← 回测必须False
)
# 提取某个股票的数据
close_list = list(local_data[C.stock].iloc[:, 0])
# close_list: [10.5, 10.4, 10.3, 10.2, 10.1, ...]计算指标
# 数据预检查
if len(close_list) < max(C.line1, C.line2):
print(f"{bar_date} 行情不足,跳过")
return
# 计算双均线
line1_mean = round(np.mean(close_list[-C.line1:]), 2)
line2_mean = round(np.mean(close_list[-C.line2:]), 2)
print(f"{bar_date} 短均线:{line1_mean} 长均线:{line2_mean}")获取账户信息
# 获取账户信息
account = get_trade_detail_data('test', 'stock', 'account')
if not account:
print("账户未登录")
return
account = account[0]
# 可用现金(单位:分)
available_cash = int(account.m_dAvailable)
# 获取持仓信息
holdings = get_trade_detail_data('test', 'stock', 'position')
# 整理成字典格式
holdings_dict = {
f'{i.m_strInstrumentID}.{i.m_strExchangeID}': i.m_nVolume
for i in holdings
}
holding_vol = holdings_dict.get(C.stock, 0)
current_price = close_list[-1]下单操作
# 计算交易数量
vol = int(available_cash / current_price / 100) * 100
# 买入信号:双线金叉(上穿)
if holding_vol == 0 and line1_mean > line2_mean:
passorder(
23, # 买卖代码(23=卖出, 24=卖出)
1101, # 价格订单类型(市价)
C.accountid, # 账号
C.stock, # 品种
5, # 订单等级
-1, # 止价 (-1 = 不设置)
vol, # 成交数量
C # ContextInfo对象
)
print(f"{bar_date} 双均线金叉 买入")
C.draw_text(1, 1, '买')
# 卖出信号:双线死叉(下穿)
elif holding_vol > 0 and line1_mean < line2_mean:
passorder(
24, # 卖出
1101,
C.accountid,
C.stock,
5,
-1,
holding_vol, # 卖出所有持仓
C
)
print(f"{bar_date} 双均线死叉 卖出")
C.draw_text(1, 1, '卖')---
📈 第五步:运行回测
回测运行方式
方式一:在"我的界面"运行
1. 选择策略模型 2. 点击"回测"按钮 3. 使用模型中配置的默认周期、品种
方式二:在行情界面运行
1. 打开目标股票/品种的K线 2. 在K线下方右键点击"回测" 3. 以当前K线周期和品种为准
方式三:在策略编辑器运行
1. 打开策略代码 2. Ctrl+F5 或 点击"运行"按钮 3. 系统自动选择当前配置
回测执行的要求
⚠️ 必须执行要求
1. ✅ 副图模式执行(不能选择主图/主图叠加)
2. ✅ 选择需要的股票品种作为主图
3. ✅ 确保已下载对应周期的历史数据❌ 错误配置
1. ❌ 使用主图固定模式
2. ❌ 未下载对应周期数据
3. ❌ subscribe=True(应为False)---
📊 第六步:分析回测结果
回测报告
回测完成后,系统生成以下报告:
1. 净值曲线
显示策略从开始到结束的累计收益率曲线
用于直观评估策略表现2. 主要指标
| 指标 | 说明 | 目标 |
|---|---|---|
| 总收益率 | 总的收益比例 | 越高越好 |
| 年化收益率 | 年均收益比例 | 15%-30% 为优秀 |
| 夏普比率 | 风险调整收益 | > 1 为良好 |
| 最大回撤 | 最坏情况下的亏损 | 越小越好 |
| 胜率 | 赢利交易的比例 | 50% 以上 |
| 盈亏比 | 平均盈利/平均亏损 | > 1 为良好 |
3. 交易记录
显示回测期间的所有交易:
- 交易日期
- 交易价格
- 交易数量
- 交易费用
- 当前盈亏优化回测结果
参数优化
# 尝试不同的参数组合
for line1 in range(5, 15):
for line2 in range(15, 30):
if line2 > line1:
# 重新运行回测
pass模型改进
# 1. 加入止损
# 2. 加入持仓限制
# 3. 加入风险管理
# 4. 改进进出场逻辑---
⚠️ 常见问题与解决
Q1: "行情不足"错误
问题:回测时显示"行情不足,跳过"
原因:
- 所需的历史数据条数不够
- 周期设置不匹配
- 数据未下载
解决:
# 检查 count 是否足够
count = max(C.line1, C.line2) + buffer
# 关键是还需要预留一些缓冲
count = max(C.line1, C.line2) + 10Q2: 回测速度太慢
问题:回测耗时很长
原因:
- 查询的数据量太大
- 计算过于复杂
- API调用太频繁
解决:
# 1. 减少查询字段
fields = ['close'] # 不要查询不需要的字段
# 2. 缓存计算结果
# 避免重复计算相同的指标
# 3. 减少循环次数
# 只处理需要的数据Q3: 回测结果与实盘不符
问题:回测表现好,但实盘不好
原因:
- 回测中没考虑手续费
- 回测中没考虑滑点
- 实盘有交易限制(涨跌停、价格笼子等)
- 参数过拟合
解决:
# 1. 加入合理的手续费和滑点
# 2. 考虑涨跌停限制
# 3. 适当放宽参数范围
# 4. 增加回测期间Q4: 账户信息无法获取
问题:get_trade_detail_data 返回空
原因:
- 账户名称错误
- 账户类型('stock')错误
- 账户未登录
解决:
# 检查账户参数
account = get_trade_detail_data(
'test', # 账户ID(回测可任意)
'stock', # 账户类型(固定为'stock')
'account' # 查询类型(固定为'account')
)
# 添加错误处理
if not account:
print("账户获取失败")
return---
💡 最佳实践
✅ 回测最佳实践
# 1. 始终检查数据完整性
if len(close_list) < required_count:
return
# 2. 使用异常处理
try:
line_mean = np.mean(close_list[-period:])
except Exception as e:
print(f"计算异常: {e}")
return
# 3. 记录关键信息
print(f"{bar_date} stock:{C.stock} price:{current_price} signal:{signal}")
# 4. 避免过度优化
# 不要调整过多参数以适应历史数据
# 5. 设置合理的参数范围
# 快线: 5-20期
# 慢线: 15-60期❌ 常见错误
# ❌ 错误:在回测中使用 subscribe=True
data = C.get_market_data_ex(..., subscribe=True)
# ✅ 正确:使用 subscribe=False
data = C.get_market_data_ex(..., subscribe=False)
# ❌ 错误:不检查数据长度
line_mean = np.mean(close_list[-period:]) # 可能报错
# ✅ 正确:先检查数据长度
if len(close_list) >= period:
line_mean = np.mean(close_list[-period:])
# ❌ 错误:账户参数灵活变化
account_id = random.choice(['test1', 'test2'])
# ✅ 正确:账户参数固定
account_id = 'backtest'---
📚 相关资源
- ✅ 系统概述 - QMT基础概念
- ✅ 运行机制 - handlebar详解
- ✅ 常用API速查 - 行情和交易函数速查
- ✅ 行情函数完整文档 - 数据获取 API
- ✅ 交易函数完整文档 - 下单和查询 API
- ✅ 代码示例 - 完整回测示例
QMT 编码最佳实践与规范
📋 编码规范
1. 文件编码与基础规范
放在文件第一行(必须!)
#coding:gbk
# 这一行必须在文件的第一行,不能有任何Comment或空行在它之前缩进规范
# ✅ 推荐:使用4个空格缩进
def init(C):
C.stock = 'test'
pass
# ❌ 错误:混合缩进(有的2个空格,有的4个)
def init(C):
C.stock = 'test' # 2个空格
pass # 4个空格导入库
#coding:gbk
# 标准库
import pandas as pd
import numpy as np
import talib
import datetime
import time
# 然后是策略代码
def init(C):
pass---
🏗️ 代码结构最佳实践
标准的策略代码结构
#coding:gbk
import pandas as pd
import numpy as np
import datetime
# ========== 1. 全局类/变量定义 ==========
class StrategyState:
"""策略状态管理"""
def __init__(self):
self.holding = False
self.entry_price = 0
self.params = {}
state = StrategyState()
# ========== 2. 初始化函数 ==========
def init(C):
"""策略初始化"""
# 设置策略参数
C.stock = C.stockcode + '.' + C.market
C.line1 = 10
C.line2 = 20
# 初始化策略状态
state.holding = False
state.entry_price = 0
print(f"策略初始化完成: {C.stock}")
# ========== 3. 主逻辑函数 ==========
def handlebar(C):
"""K线处理函数"""
# 3.1 数据准备
bar_date = timetag_to_datetime(C.get_bar_timetag(C.barpos), '%Y%m%d%H%M%S')
# 3.2 获取行情
data = get_market_data(C)
if data is None:
return
# 3.3 指标计算
signal = calculate_signal(C, data)
# 3.4 交易执行
execute_trade(C, signal)
# 3.5 状态更新
update_state(C)
# ========== 4. 辅助函数 ==========
def get_market_data(C):
"""获取行情数据"""
try:
bar_date = timetag_to_datetime(C.get_bar_timetag(C.barpos), '%Y%m%d%H%M%S')
data = C.get_market_data_ex(
['close'],
[C.stock],
end_time=bar_date,
period=C.period,
count=max(C.line1, C.line2),
subscribe=False
)
return data
except Exception as e:
print(f"获取行情异常: {e}")
return None
def calculate_signal(C, data):
"""计算交易信号"""
try:
close_list = list(data[C.stock].values.flatten())
if len(close_list) < max(C.line1, C.line2):
return None
line1 = np.mean(close_list[-C.line1:])
line2 = np.mean(close_list[-C.line2:])
if line1 > line2:
return 'BUY'
elif line1 < line2:
return 'SELL'
else:
return None
except Exception as e:
print(f"计算信号异常: {e}")
return None
def execute_trade(C, signal):
"""执行交易"""
if signal is None:
return
# 获取账户信息
account = get_trade_detail_data('test', 'stock', 'account')
if not account:
return
# 加载具体的交易逻辑
if signal == 'BUY':
place_buy_order(C, account[0])
elif signal == 'SELL':
place_sell_order(C, account[0])
def place_buy_order(C, account):
"""执行买入"""
vol = 100
passorder(23, 1101, 'test', C.stock, 14, -1, vol, C)
def place_sell_order(C, account):
"""执行卖出"""
vol = 100
passorder(24, 1101, 'test', C.stock, 14, -1, vol, C)
def update_state(C):
"""更新策略状态"""
state.holding = not state.holding---
⚡ 性能优化建议
1. 最小化 API 调用
# ❌ 低效:每次都重新查询
def handlebar(C):
for i in range(100):
data = C.get_market_data_ex(['close'], [C.stock], count=100) # 多次调用
# 处理 data
# ✅ 高效:查询一次,重复使用
def handlebar(C):
data = C.get_market_data_ex(['close'], [C.stock], count=100) # 只调用一次
for i in range(100):
# 使用已有的 data
close_price = data[C.stock].values[i][0]2. 缓存常用的计算
class DataCache:
def __init__(self):
self.cache = {}
self.timestamps = {}
def get_ma(self, close_list, period):
"""计算移动平均线(带缓存)"""
key = f"ma_{period}"
# 检查缓存
if key in self.cache:
cached_data, cached_list = self.cache[key]
if cached_list == close_list:
return cached_data
# 计算
ma = np.mean(close_list[-period:])
self.cache[key] = (ma, close_list)
return ma
cache = DataCache()3. 避免重复检查
# ❌ 每个handlebar都检查账户
def handlebar(C):
account = get_trade_detail_data('test', 'stock', 'account') # 每次检查
# ✅ 初始化时检查,保存状态
class TradeState:
def __init__(self):
self.account_ok = False
A = TradeState()
def init(C):
account = get_trade_detail_data('test', 'stock', 'account')
A.account_ok = len(account) > 0
def handlebar(C):
if not A.account_ok:
return # 账户有问题,直接返回
# 继续交易逻辑---
🛡️ 风险管理最佳实践
1. 止损设置
class RiskManager:
def __init__(self):
self.stop_loss_pct = 0.03 # 3%止损
self.entry_prices = {}
def should_stop_loss(self, stock, current_price):
"""检查是否触发止损"""
if stock not in self.entry_prices:
return False
entry_price = self.entry_prices[stock]
loss_pct = (entry_price - current_price) / entry_price
return loss_pct >= self.stop_loss_pct
def record_entry(self, stock, price):
"""记录入场价格"""
self.entry_prices[stock] = price
def clear_entry(self, stock):
"""清除入场记录"""
if stock in self.entry_prices:
del self.entry_prices[stock]
rm = RiskManager()2. 持仓管理
class PositionManager:
def __init__(self):
self.max_position_size = 10000 # 最大持仓 10000 股
self.max_single_volume = 5000 # 单笔最大 5000 股
def can_buy(self, stock, current_holding, buy_volume):
"""检查是否可以买入"""
# 检查单笔限制
if buy_volume > self.max_single_volume:
return False, "超过单笔最大额度"
# 检查持仓限制
new_total = current_holding + buy_volume
if new_total > self.max_position_size:
return False, "超过最大持仓"
return True, "OK"
def get_max_buy_volume(self, current_holding):
"""获取最大可买数量"""
return min(
self.max_single_volume,
self.max_position_size - current_holding
)
pm = PositionManager()3. 日损失管理
class DailyLossControl:
def __init__(self, loss_limit_pct=0.05):
self.loss_limit_pct = loss_limit_pct # 日损失限制 5%
self.initial_cash = 0
def init_cash(self, cash):
"""初始化参考资金"""
self.initial_cash = cash
def check_loss(self, current_profit):
"""检查是否超过日损失限制"""
loss_pct = -current_profit / self.initial_cash
return loss_pct >= self.loss_limit_pct
def get_allowed_loss(self):
"""获取允许的最大亏损额"""
return self.initial_cash * self.loss_limit_pct
dlc = DailyLossControl()---
🐛 调试与日志最佳实践
1. 结构化日志
import datetime
class Logger:
def __init__(self):
self.logs = []
def log(self, level, message):
"""记录日志"""
timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
log_entry = f"[{timestamp}] [{level}] {message}"
self.logs.append(log_entry)
print(log_entry)
def info(self, msg):
self.log("INFO", msg)
def warning(self, msg):
self.log("WARN", msg)
def error(self, msg):
self.log("ERROR", msg)
def get_logs(self):
return self.logs
logger = Logger()
# 使用
def handlebar(C):
try:
# 逻辑处理
logger.info(f"处理 K 线: {bar_date}")
except Exception as e:
logger.error(f"异常: {str(e)}")2. 关键信息记录
def handlebar(C):
bar_date = timetag_to_datetime(C.get_bar_timetag(C.barpos), '%Y%m%d%H%M%S')
# 记录重要信息
print(f"[{bar_date}]")
print(f" 股票: {C.stock}")
print(f" 周期: {C.period}")
print(f" 位置: {C.barpos}")
# 获取行情后记录
data = C.get_market_data_ex(['close'], [C.stock], count=1, subscribe=False)
price = data[C.stock].values[0][0]
print(f" 价格: {price}")
# 记录交易信号
if buy_signal:
print(f" [BUY] 信号强度: 0.87")
elif sell_signal:
print(f" [SELL] 信号强度: 0.92")3. 异常处理
def handlebar(C):
try:
# 获取数据
data = C.get_market_data_ex(['close'], [C.stock], count=100, subscribe=False)
# 检查数据
if data is None or C.stock not in data:
logger.warning(f"数据不完整: {C.stock}")
return
# 处理数据
close_list = list(data[C.stock].values.flatten())
if len(close_list) == 0:
logger.warning("收盘价列表为空")
return
# 计算指标
ma = np.mean(close_list)
# 交易
if ma > 0:
passorder(23, 1101, 'test', C.stock, 14, -1, 100, C)
logger.info(f"买入: {C.stock} @ {close_list[-1]}")
except KeyError as e:
logger.error(f"数据键错误: {str(e)}")
except ValueError as e:
logger.error(f"数据值错误: {str(e)}")
except Exception as e:
logger.error(f"未知异常: {str(e)}")
import traceback
logger.error(traceback.format_exc())---
📊 测试与验证最佳实践
1. 单元测试
def test_calculate_ma():
"""测试移动平均线计算"""
close_list = [10, 11, 12, 13, 14, 15]
period = 3
ma = np.mean(close_list[-period:])
expected = 14.0 # (13+14+15)/3
assert abs(ma - expected) < 0.01, f"MA计算错误: {ma} != {expected}"
print("✓ test_calculate_ma 通过")
def test_buy_signal():
"""测试买入信号"""
line1 = 15
line2 = 14
signal = 'BUY' if line1 > line2 else None
assert signal == 'BUY', "买入信号判断错误"
print("✓ test_buy_signal 通过")
# 运行测试
if __name__ == '__main__':
test_calculate_ma()
test_buy_signal()
print("所有测试通过!")2. 回测验证
def validate_backtest_result(result):
"""验证回测结果是否合理"""
validations = {
'total_trades': result['total_trades'] > 0,
'win_rate': 0 < result['win_rate'] < 1,
'profit_factor': result['profit_factor'] > 0,
'max_drawdown': result['max_drawdown'] < 0.5,
'annual_return': -0.5 < result['annual_return'] < 2.0
}
for check, passed in validations.items():
status = "✓" if passed else "✗"
print(f"{status} {check}: {validations[check]}")
return all(validations.values())---
📚 常见模式
模式1:双均线策略框架
#coding:gbk
def init(C):
C.line1 = 10
C.line2 = 20
C.accountid = 'test'
def handlebar(C):
# 获取数据
data = C.get_market_data_ex(['close'], [C.stock], count=max(C.line1, C.line2), subscribe=False)
close_prices = data[C.stock].values
if len(close_prices) < max(C.line1, C.line2):
return
# 计算均线
ma1 = np.mean(close_prices[-C.line1:])
ma2 = np.mean(close_prices[-C.line2:])
# 交易逻辑
if ma1 > ma2:
passorder(23, 1101, C.accountid, C.stock, 14, -1, 100, C)
elif ma1 < ma2:
passorder(24, 1101, C.accountid, C.stock, 14, -1, 100, C)模式2:涨幅选股框架
#coding:gbk
def init(C):
C.stock_list = C.get_stock_list_in_sector('沪深A股')
C.rise_threshold = 0.05
def handlebar(C):
tick = C.get_full_tick(C.stock_list)
for stock in C.stock_list:
last_price = tick[stock]['lastPrice']
last_close = tick[stock]['lastClose']
rise_ratio = (last_price - last_close) / last_close
if rise_ratio > C.rise_threshold:
print(f"{stock} 涨幅 {rise_ratio*100:.2f}%")
# 执行买入逻辑---
⚠️ 常见陷阱
陷阱1:忘记检查数据长度
# ❌ 错误:可能导致IndexError
ma = np.mean(close_list[-10:])
# ✅ 正确:先检查长度
if len(close_list) >= 10:
ma = np.mean(close_list[-10:])
else:
return # 数据不足,跳过陷阱2:混淆回测和实盘参数
# ❌ 错误:回测中使用 subscribe=True
data = C.get_market_data_ex(..., subscribe=True)
# ✅ 正确:根据场景选择
subscribe = False if is_backtest else True
data = C.get_market_data_ex(..., subscribe=subscribe)陷阱3:忽略单位转换
# ❌ 错误:m_dAvailable 单位是分(1/100元)
cash = account.m_dAvailable # 这是分
# ✅ 正确:转换为元
cash_yuan = account.m_dAvailable / 100陷阱4:未经验证直接交易
# ❌ 错误:直接根据信号下单
if signal > 0:
passorder(...)
# ✅ 正确:验证信号后再下单
if signal > 0 and validate_signal(signal):
passorder(...)---
📚 相关资源
- ✅ 系统概述 - QMT基础
- ✅ 回测模型指南 - 回测实践
- ✅ 实盘交易指南 - 实盘实践
- ✅ 常用API速查 - 关键函数速查
- ✅ 代码示例 - 完整示例代码
可转债数据
获取可转债信息
可转债信息函数中,我们能够提供一系列重要的可转债详情。这些信息包括最新的转股价格,相关正股的代码,发行时的价格,总共发行的金额,强制赎回的价格,以及到期时的赎回价等关键参数。这些详细且全面的数据帮助投资者更好地理解和评估可转债的潜在值和风险,从而进行更明智的投资决策。
提示
1. 该函数为 vip权限函数 2. 获取前需要先用download_cb_data下载可转债信息
调用方法
# coding=utf-8
from xtquant import xtdata
# 下载转债信息
xtdata.download_cb_data()
# 获取转债信息
xtdata.get_cb_info(bond_code)参数
| 字段 | 类型 | 说明 |
|---|---|---|
bond_code | string | 合约代码 |
返回
- 字典类型
| 字段 | 类型 | 说明 |
|---|---|---|
| bondCode | str | 可转债代码 |
| bondName | str | 可转债简称 |
| stockCode | str | 正股代码 |
| stockName | str | 正股简称 |
| bondMaturity | float | 发行年限 |
| bondParvalue | float | 面值 |
| bondIssuePrice | float | 发行价格 |
| bondIssueSize | float | 发行总额(元) |
| bondReMainSize | float | 债券余额(元) |
| bondValueDate | int | 起息日期 |
| bondMaturityDate | int | 到期日期 |
| bondRateType | str | 利率类型 |
| bondCouponRate | float | 票面利率 |
| bondAddRate | float | 补偿利率 |
| bondPayPerYear | int | 年付息次数 |
| bondListDate | int | 上市日期 |
| delistDate | int | 摘牌日 |
| bondExchange | str | 上市地点 |
| convStartDate | int | 转股起始日,转股日 |
| convEndDate | int | 转股截止日 |
| firstConvPrice | float | 初始转股价 |
| bondConvPrice | float | 最新转股价 |
| rateClause | str | 利率说明 |
| forceRedeemTradeDate | int | 强赎最后交易日 |
| forceRedeemConvDate | int | 强赎最后转股日 |
| forceRedeemPrice | float | 强赎价格 |
| triggerForceRedeemPrice | float | 强赎触发价 |
| triggerRepurchasePrice | float | 回售触发价 |
| expireRedeemPrice | float | 到期赎回价 |
| analYTM | float | 纯债YTM(%) |
| analPTM | float | 剩余期限 |
| analAccruedinterst | float | 应计利息 |
| analStrbvalue | float | 纯债价值 |
| analStrbpremium | float | 纯债溢价率(%) |
| analConvvalue | float | 转股价值 |
| analConvpremiumratio | float | 转股溢价率(%) |
| analDuration | float | 久期 |
| analConvexity | float | 凸性 |
| infoProvisiontype | str | 条款类型,多种类型时使用 "," 分隔 |
| termYear | float | 债券期限(年) |
| interestType | int | 付息利率品种,1-浮动利率,2-固定利率,3-累进利率 |
| level | str | 债券评级 |
| forceRedeemPriceRatio | float | 强赎触发比(%) |
| redeemTerms | str | 强赎条款 |
| nextPutDate | int | 回售起始日 |
| putPrice | float | 回售价 |
| putConvertPriceRatio | float | 回售触发比(%) |
| putTerms | str | 回售条款 |
| triggerAdjustPrice | float | 下修触发价 |
| adjustPriceRatio | float | 下修触发比(%) |
| adjustTerms | str | 下修条款 |
| ytm | float | 到期收益率(%) |
| redeemStatus | str | 强赎状态 |
| adjustStatus | str | 下修状态 |
| readjustDate | int | 下修重算起始日 |
| regProvince | str | 所属省份 |
示例:
示例与返回值
# coding=utf-8
from xtquant import xtdata
# 下载转债信息
xtdata.download_cb_data()
# 获取转债信息
cb_info = xtdata.get_cb_info("123219.SZ")
print(cb_info){'bondCode': '123219.SZ',
'bondName': '宇瞳转债',
'stockCode': '300790.SZ',
'stockName': '宇瞳光学',
'bondMaturity': 6.0,
'bondParvalue': 100.0,
'bondIssuePrice': 100.0,
'bondIssueSize': 600000000.0,
'bondReMainSize': 600000000.0,
'bondValueDate': 20230811,
'bondMaturityDate': 20290811,
'bondRateType': '',
'bondCouponRate': 0.3,
'bondAddRate': 0.0,
'bondPayPerYear': 0,
'bondListDate': 20230829,
'delistDate': 20290810,
'bondExchange': '',
'convStartDate': 20240219,
'convEndDate': 20290810,
'firstConvPrice': 15.29,
'bondConvPrice': 15.32,
'rateClause': '',
'forceRedeemTradeDate': 0,
'forceRedeemConvDate': 0,
'forceRedeemPrice': 0.0,
'triggerForceRedeemPrice': 19.916,
'triggerRepurchasePrice': 10.724000000000002,
'expireRedeemPrice': 0.0,
'analYTM': 0.0,
'analPTM': 5.737,
'analAccruedinterst': 0.0,
'analStrbvalue': 0.0,
'analStrbpremium': 0.0,
'analConvvalue': 0.0,
'analConvpremiumratio': 0.0,
'analDuration': 0.0,
'analConvexity': 0.0,
'infoProvisiontype': '',
'termYear': 6.0,
'interestType': 0,
'level': 'A+',
'forceRedeemPriceRatio': 130.0,
'redeemTerms': '在本次发行可转换公司债券的转股期内,当下述两种情形的任意一种出现时,公司有权决定按照债券面值加当期应计利息的价格赎回全部或部分未转股的可转换公司债券:①在转股期内,如果公司股票在任何连续30个交易日中至少有15个交易日的收盘价格不低于当期转股价格的130%(含130%);②当本次发行的可转换公司债券未转股的票面总金额不足3,000万元时。当期应计利息的计算公式为:IA=B×i×t/365其中:IA为当期应计利息;B为本次发行的可转换公司债券持有人持有的将赎回的可转换公司债券票面总金额;i为可转换公司债券当年票面利率;t为计息天数,即从上一个付息日起至本计息年度赎回日止的实际日历天数(算头不算尾)。若在前述30个交易日内发生过因除权、除息等引起公司转股价格调整的情形,则在调整前的交易日按调整前的转股价格和收盘价格计算,在调整后的交易日按调整后的转股价格和收盘价格计算。',
'nextPutDate': 20270811,
'putPrice': 100.0,
'putConvertPriceRatio': 70.0,
'putTerms': '(1)有条件回售条款在本次发行的可转换公司债券最后两个计息年度,如果公司股票在任何连续30个交易日的收盘价格低于当期转股价的70%时,可转换公司债券持有人有权将其持有的可转换公司债券全部或部分按面值加上当期应计利息的价格回售给公司。若在上述交易日内发生过转股价格因发生送红股、转增股本、增发新股、配股以及派发现金股利等情况(不包括因本次发行的可转换公司债券转股而增加的股本)而调整的情形,则在调整前的交易日按调整前的转股价格和收盘价格计算,在调整后的交易日按调整后的转股价格和收盘价格计算。如果出现转股价格向下修正的情况,则上述“连续30个交易日”须从转股价格调整之后的第一个交易日起重新计算。本次发行的可转换公司债券最后两个计息年度,可转换公司债券持有人在每年回售条件首次满足后可按上述约定条件行使回售权一次,若在首次满足回售条件而可转换公司债券持有人未在公司届时公告的回售申报期内申报并实施回售的,该计息年度不能再行使回售权,可转换公司债券持有人不能多次行使部分回售权。(2)附加回售条款若公司本次发行的可转换公司债券募集资金投资项目的实施情况与公司在募集说明书中的承诺情况相比出现重大变化,根据中国证监会的相关规定被视作改变募集资金用途或被中国证监会认定为改变募集资金用途的,可转换公司债券持有人享有一次回售的权利。可转换公司债券持有人有权将其持有的可转换公司债券全部或部分按债券面值加上当期应计利息价格回售给公司。可转换公司债券持有人在附加回售条件满足后,可以在公司公告后的附加回售申报期内进行回售,该次附加回售申报期内不实施回售的,自动丧失该回售权,不应再行使附加回售权。',
'triggerAdjustPrice': 13.022,
'adjustPriceRatio': 85.0,
'adjustTerms': '在本次发行的可转换公司债券存续期间,当公司股票在任意连续30个交易日中至少有15个交易日的收盘价低于当期转股价格的85%时,公司董事会有权提出转股价格向下修正方案并提交公司股东大会审议表决。上述方案须经出席会议的股东所持表决权的三分之二以上通过方可实施。股东大会进行表决时,持有本次发行的可转换公司债券的股东应当回避。修正后的转股价格应不低于本次股东大会召开日前20个交易日公司股票交易均价和前1个交易日公司股票交易均价之间的较高者。同时,修正后的转股价格不得低于最近一期经审计的每股净资产值和股票面值。若在前述30个交易日内发生过因除权、除息等引起公司转股价格调整的情形,则转股价格调整日前的交易日按调整前的转股价格和收盘价计算,在转股价格调整日及之后的交易日按调整后的转股价格和收盘价计算。(2)修正程序如公司决定向下修正转股价格时,公司须在中国证监会指定的信息披露报刊及互联网网站上刊登股东大会决议公告,公告修正幅度和股权登记日及暂停转股期间(如需)等有关信息。从股权登记日后的第一个交易日(即转股价格修正日),开始恢复转股申请并执行修正后的转股价格。若转股价格修正日为转股申请日或之后,转换股份登记日之前,该类转股申请应按修正后的转股价格执行。',
'ytm': 0.0,
'redeemStatus': '0/15 | 30',
'adjustStatus': '0/15 | 30',
'readjustDate': 0,
'regProvince': '广东省'}获取可转债合约信息
此函数被设计为专门用于单一转债的查询,能够提供详尽的转债信息。通过使用这个函数,您可以获取到深度的特定转债数据,包括其涨跌停价格、上市日期、退市日期和期权到期日等关键信息。这种全面的信息将成为您理解和分析转债历史趋势以及当前状态的有力工具。
调用方法
# coding=utf-8
from xtquant import xtdata
xtdata.get_instrument_detail(stock_code)参数
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | string | 合约代码 |
返回值
- 字典,{ field1 : value1, field2 : value2, ... },找不到指定合约时返回
None
| 字段 | 类型 | 说明 |
|---|---|---|
| ExchangeID | str | 合约市场代码 |
| InstrumentID | str | 合约代码 |
| ProductID | str | 合约的品种ID(期货) |
| ProductName | str | 合约的品种名称(期货) |
| CreateDate | str | 上市日期(期货) |
| OpenDate | str | IPO日期(股票) |
| ExpireDate | int | 退市日或者到期日 |
| PreClose | float | 前收盘价格 |
| SettlementPrice | float | 前结算价格 |
| UpStopPrice | float | 当日涨停价 |
| DownStopPrice | float | 当日跌停价 |
| FloatVolume | float | 流通股本 |
| TotalVolume | float | 总股本 |
| LongMarginRatio | float | 多头保证金率 |
| ShortMarginRatio | float | 空头保证金率 |
| PriceTick | float | 最小价格变动单位 |
| VolumeMultiple | int | 合约乘数(对期货以外的品种,默认是1) |
| MainContract | int | 主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约 |
| LastVolume | int | 昨日持仓量 |
| InstrumentStatus | int | 合约已停牌日期(停牌第一天值为0,第二天为1,以此类推。注意,正常交易的股票该值也是0)获取股票停牌状态参考 get_full_tick openInt字段 |
| IsTrading | bool | 合约是否可交易 |
| IsRecent | bool | 是否是近月合约 |
示例:
示例与返回值
# coding=utf-8
from xtquant import xtdata
code_detail = xtdata.get_instrument_detail('123219.SZ')
print(code_detail){'ExchangeID': 'SZ',
'InstrumentID': '123219',
'InstrumentName': '宇瞳转债',
'ProductID': '',
'ProductName': '',
'ExchangeCode': '123219',
'UniCode': '123219',
'CreateDate': '0',
'OpenDate': '20230829',
'ExpireDate': 99999999,
'PreClose': 122.828,
'SettlementPrice': 122.828,
'UpStopPrice': 147.394,
'DownStopPrice': 98.262,
'FloatVolume': 6000000.0,
'TotalVolume': 6000000.0,
'LongMarginRatio': 1.7976931348623157e+308,
'ShortMarginRatio': 1.7976931348623157e+308,
'PriceTick': 0.001,
'VolumeMultiple': 1,
'MainContract': 2147483647,
'LastVolume': 2147483647,
'InstrumentStatus': 0,
'IsTrading': False,
'IsRecent': False,
'ProductTradeQuota': 1,
'ContractTradeQuota': 0,
'ProductOpenInterestQuota': 14592,
'ContractOpenInterestQuota': 0}获取可转债行情
为了获取转债的日线/1m/1d的k数据,以通过数据订阅形式获取最新行情subscribe_quote。如果您需要获取历史数据,可以使用download_history_data函数下载相关数据,然后使用get_market_data_ex函数提取所需的信息。这样,使用者就能获得最新和详细的转债最新数据,有助于做出更精准的投资决策。
调用方法
# coding=utf-8
from xtquant import xtdata
# 订阅指定合约最新行情
xtdata.subscribe_quote(stock_code, period='', start_time='', end_time='', count=0, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data(stock_code, period, start_time='', end_time='')
# 获取指定合约历史行情
xtdata.get_market_data_ex(field_list = [], stock_list = [], period = '', start_time = '', end_time = '', count = -1, dividend_type = 'none', fill_data = True)参数
- xtdata.subscribe_quote
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | str | 股票代码 |
start_time | str | 开始时间格式YYYYMMDD/YYYYMMDDhhmmss |
end_time | str | 结束时间 |
count | int | 数量 -1全部/n: 从结束时间向前数n个 |
period | str | 周期 分笔"tick" 分钟线"1m"/"5m" 日线"1d" |
- xtdata.get_market_data_ex
| 参数名称 | 类型 | 描述 |
|---|---|---|
field_list | list | 表示所有字段。不同的数据周期,取值范围有所不同。 |
stock_list | list | 合约代码列表 |
period | str | 数据周期,默认是当前主图周期。可选值如下: 'tick' (分笔线), '1d' (日线), '1m' (1分钟线), '5m' (5分钟线), '15m' (15分钟线), 'l2quote' (Level2行情快照), 'l2quoteaux' (Level2行情快照补充), 'l2order' (Level2逐笔委托), 'l2transaction' (Level2逐笔成交),'l2transactioncount' (Level2大单统计), 'l2orderqueue' (Level2委买委卖队列) |
start_time | str | 开始时间。为空时默认为最早时间。时间格式为'20201231'或'20201231093000' |
end_time | str | 结束时间。为空时默认为最新时间。时间格式为'20201231'或'20201231235959' |
count | int | 数据最大个数。-1表示不做个数限制 |
dividend_type | str | 复权方式,默认是当前主图复权方式。可选值包括: 'none' (不复权), 'front'(前复权), 'back' (后复权), 'front_ratio' (等比前复权), 'back_ratio' (等比后复权) |
fill_data | bool | 停牌填充方式 |
返回值
- period为
1m5m1dK线周期时 - 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick分笔周期时 - 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time增序排列
示例与返回值
# coding=utf-8
from xtquant import xtdata
# 订阅指定合约最新行情
xtdata.subscribe_quote('123219.SZ', period='1m', start_time='', end_time='20231026150000', count=1, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data('123219.SZ', '1m', '20231026093000', '20231026150000')
# 获取指定合约历史行情
min_data = xtdata.get_market_data_ex(field_list=[], stock_list=['123219.SZ'], period='1m', start_time='', end_time='20231026150000', count=10, dividend_type='none', fill_data=True)
print(min_data){'123219.SZ': time open ... preClose suspendFlag
20231026111800 1698290280000 121.398 ... 121.380 0
20231026111900 1698290340000 121.269 ... 121.229 0
20231026112000 1698290400000 121.269 ... 121.269 0
20231026112100 1698290460000 121.269 ... 121.269 0
20231026112200 1698290520000 121.269 ... 121.269 0
20231026112300 1698290580000 121.269 ... 121.269 0
20231026112400 1698290640000 121.265 ... 121.269 0
20231026112500 1698290700000 121.465 ... 121.468 0
20231026112600 1698290760000 121.461 ... 121.356 0
20231026112700 1698290820000 121.352 ... 121.461 0
[10 rows x 11 columns]}获取基金数据
此函数被设计为只支持单一基金查询,用于获取详细的股票信息。该函数可以让您接收关于特定基金的深度信息,包括但不限于其涨跌停价格、上市日期、退市日期以及期权到期日等重要数据。这将为您提供详尽的信息,以便更好地理解并分析股票的历史和现状。
调用方法
# coding=utf-8
from xtquant import xtdata
xtdata.get_instrument_detail(stock_code)参数
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | string | 合约代码 |
返回值
- 字典,{ field1 : value1, field2 : value2, ... },找不到指定合约时返回
None
| 字段 | 类型 | 说明 |
|---|---|---|
| ExchangeID | str | 合约市场代码 |
| InstrumentID | str | 合约代码 |
| ProductID | str | 合约的品种ID(期货) |
| ProductName | str | 合约的品种名称(期货) |
| CreateDate | str | 上市日期(期货) |
| OpenDate | str | IPO日期(股票) |
| ExpireDate | int | 退市日或者到期日 |
| PreClose | float | 前收盘价格 |
| SettlementPrice | float | 前结算价格 |
| UpStopPrice | float | 当日涨停价 |
| DownStopPrice | float | 当日跌停价 |
| FloatVolume | float | 流通股本 |
| TotalVolume | float | 总股本 |
| LongMarginRatio | float | 多头保证金率 |
| ShortMarginRatio | float | 空头保证金率 |
| PriceTick | float | 最小价格变动单位 |
| VolumeMultiple | int | 合约乘数(对期货以外的品种,默认是1) |
| MainContract | int | 主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约 |
| LastVolume | int | 昨日持仓量 |
| InstrumentStatus | int | 合约已停牌日期(停牌第一天值为0,第二天为1,以此类推。注意,正常交易的股票该值也是0)获取股票停牌状态参考 get_full_tick openInt字段 |
| IsTrading | bool | 合约是否可交易 |
| IsRecent | bool | 是否是近月合约 |
示例与返回值
# coding=utf-8
from xtquant import xtdata
code_detail = xtdata.get_instrument_detail('159733.SZ')
print(code_detail){'ExchangeID': 'SZ',
'InstrumentID': '159733',
'InstrumentName': '消费电子50ETF',
'ProductID': '',
'ProductName': '',
'CreateDate': '0',
'OpenDate': '20210929',
'ExpireDate': 99999999,
'PreClose': 0.6950000000000001,
'SettlementPrice': 0.6941,
'UpStopPrice': 0.765,
'DownStopPrice': 0.626,
'FloatVolume': 41156925.0,
'TotalVolume': 41156925.0,
'LongMarginRatio': 1.7976931348623157e+308,
'ShortMarginRatio': 1.7976931348623157e+308,
'PriceTick': 0.001,
'VolumeMultiple': 1,
'MainContract': 2147483647,
'LastVolume': 2147483647,
'InstrumentStatus': 0,
'IsTrading': False,
'IsRecent': False,
'ProductTradeQuota': 0,
'ContractTradeQuota': 0,
'ProductOpenInterestQuota': 0,
'ContractOpenInterestQuota': 0}ETF申赎清单
提示
1. 使用前需要调用xtdata.download_etf_info()下载数据 2. VIP 权限数据
调用方法
from xtquant import xtdata
xtdata.get_etf_info()参数
None
返回值
一个多层嵌套的dict
现金替代标志:
- 深市ETF的成分股现金替代标记取值范围
- 0 = 禁止现金替代(必须有证券)
- 1 = 可以进行现金替代(先用证券,证券不足时差额部分用现金替代)
- 2 = 必须用现金替代
- 沪市ETF的成分股现金替代标记取值范围
- 0 = 沪市不可被替代
- 1 = 沪市可以被替代
- 2 = 沪市必须被替代
- 3 = 深市退补现金替代
- 4 = 深市必须现金替代
- 5 = 成份证券退补现金替代
- 6 = 成份证券必须现金替代
- 7 = 港市退补现金替代
- 8 = 港市必须现金替代
是否需要公布IOPV:
- 0: 否
- 1: 是
申购的允许情况:
- 0: 否
- 1: 是
赎回的允许情况:
- 0: 否
- 1: 是
示例与返回值
from xtquant import xtdata
xtdata.download_etf_info()
all_etf_info = xtdata.get_etf_info()
print(list(all_etf_info.keys())[:20]) # 打印第一层key
target_etf_info = all_etf_info["510050.SH"]
print(target_etf_info.keys()) # 打印第二层key
data = target_etf_info["成份股信息"]
print(data[:10]) # 打印成份股信息['515110.SH', '515020.SH', '515330.SH', '513750.SH', '513220.SH', '512800.SH', '513190.SH', '513660.SH', '513860.SH', '513200.SH', '513360.SH', '513310.SH', '513560.SH', '515310.SH', '513550.SH', '513590.SH', '513330.SH', '513700.SH', '513880.SH', '513530.SH']
dict_keys(['market', 'stock', '基金代码', '基金名称', '现金差额', '最小申购、赎回单位净值', '基金份额净值', '预估现金差额', '现金替代比例上限', '是否需要公布IOPV', '最小申购、赎回单位', '申购的允许情况', '赎回的允许情况', '申购上限', '赎回上限', '成份股信息'])
[{'成份股代码': '600010.SH', '成份股名称': '包钢股份', '成份股数量': 7900, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600028.SH', '成份股名称': '中国石化', '成份股数量': 6600, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600030.SH', '成份股名称': '中信证券', '成份股数量': 3400, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600031.SH', '成份股名称': '三一重工', '成份股数量': 2100, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600036.SH', '成份股名称': '招商银行', '成份股数量': 4300, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600048.SH', '成份股名称': '保利发展', '成份股数量': 2500, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600050.SH', '成份股名称': '中国联通', '成份股数量': 6600, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600089.SH', '成份股名称': '特变电工', '成份股数量': 1700, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600104.SH', '成份股名称': '上汽集团', '成份股数量': 1600, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}, {'成份股代码': '600111.SH', '成份股名称': '北方稀土', '成份股数量': 900, '现金替代标志': 1, '申购现金替代溢价比率': 0.1, '申购替代金额': 0.0, '赎回现金替代折价比率': 0.0, '赎回替代金额': 0.0, '成份股所属市场': 'SH', '映射代码': '', '是否实物对价申赎': 0, '占净值比例': 0.0, '持股数': 0, '持仓市值': 0.0}]基金份额参考净值
函数是一个特定于Python的内部函数,它旨在获得基金的份额参考净值(IOPV - Indicative Optimized Portfolio Value)。使用此函数,可以轻松获取ETF(交易型开放式指数基金)当前的估算净值,帮助投资者了解基金及其底层资产的实时价值,从而进行更准确的投资决策。
调用方法
get_etf_iopv(stock_code)参数
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | string | 合约代码 |
返回值
- IOPV, 基金份额参考净值
示例与返回值
# coding:gbk
def init(C):
pass
def handlebar(C):
print(get_etf_iopv("510050.SH"))2.3079基金实时申赎数据
提示
1. 通过指定period为etfstatistics获取该数据 2. 该数据为 VIP 权限数据 3. 获取时需要先通过 subscribe_quote 进行订阅
原生python
调用方法
from xtquant import xtdata
xtdata.download_history_data(stock, 'etfstatistics', start_time, end_time, incrementally = True)
data = xtdata.get_market_data_ex([], stock_list, period = 'etfstatistics', start_time = "", end_time = "")参数 除period参数需指定为 etfstatistics 外,其余参数于 get_market_data_ex 函数一致
返回值
分两种,当使用gmd_ex函数获取时:
- 一个
{stock_code:pd.DataFrame}结构的dict对象,其中pd.DataFrame的结构为: index: 自增序列,int类型值columns: \['time', '申购笔数', '申购数量', '申购金额', '赎回笔数', '赎回数量', '赎回金额'\]
当使用callback函数时:
- 一个
{stock_code:[{field1:values1,field2:values2,...}]}的dict嵌套对象
示例
示例gmd返回值callback
import datetime
from xtquant import xtdata
from datetime import datetime
start_time = datetime.now().strftime("%Y%m%d")
end_time = ''
print('start_time:', start_time, ' end_time:', end_time)
stock_list = ['159001.SZ', '159003.SZ', '159005.SZ', '159150.SZ', '159306.SZ', '159309.SZ', '159502.SZ']
for stock in stock_list:
'''下载etf实时申赎信息'''
xtdata.download_history_data(stock, 'etfstatistics', start_time, end_time, incrementally = True)
print('download finished ' + stock)
data = xtdata.get_market_data_ex([], stock_list, 'etfstatistics', start_time, end_time, -1)
# 打印"159001.SZ"最后5条数据
print(data["159001.SZ"].iloc[-5:])
def f(data):
print(data)
for i in stock_list:
xtdata.subscribe_quote(i,period="etfstatistics",callback=f)返回值:
# 打印"159001.SZ"最后5条数据
time 申购笔数 申购数量 申购金额 赎回笔数 赎回数量 赎回金额
17628 1721629992000 417 647341.0 0.0 84 890490.0 0.0
17629 1721629995000 417 647341.0 0.0 84 890490.0 0.0
17630 1721630001000 417 647341.0 0.0 84 890490.0 0.0
17631 1721630007000 417 647341.0 0.0 84 890490.0 0.0
17632 1721630019000 417 647341.0 0.0 84 890490.0 0.0{'159150.SZ': [{'time': 1721630379000, 'buyNumber': 0, 'buyAmount': 0.0, 'buyMoney ': 0.0, 'sellNumber': 2, 'sellAmount': 2000000.0, 'sellMoney': 0.0}]}
{'159502.SZ': [{'time': 1721630379000, 'buyNumber': 1, 'buyAmount': 1000000.0, 'buyMoney ': 0.0, 'sellNumber': 0, 'sellAmount': 0.0, 'sellMoney': 0.0}]}
{'159003.SZ': [{'time': 1721630382000, 'buyNumber': 9, 'buyAmount': 10022.0, 'buyMoney ': 0.0, 'sellNumber': 21, 'sellAmount': 33857.0, 'sellMoney': 0.0}]}
{'159502.SZ': [{'time': 1721630382000, 'buyNumber': 1, 'buyAmount': 1000000.0, 'buyMoney ': 0.0, 'sellNumber': 0, 'sellAmount': 0.0, 'sellMoney': 0.0}]}
{'159309.SZ': [{'time': 1721630382000, 'buyNumber': 0, 'buyAmount': 0.0, 'buyMoney ': 0.0, 'sellNumber': 1, 'sellAmount': 1000000.0, 'sellMoney': 0.0}]}
{'159005.SZ': [{'time': 1721630382000, 'buyNumber': 37, 'buyAmount': 2670.0, 'buyMoney ': 0.0, 'sellNumber': 39, 'sellAmount': 30663.0, 'sellMoney': 0.0}]}获取场内基金tick数据
要获取场内基金的tick数据,您需要先进行数据订阅subscribe_quote以获取最新的tick数据。如果您需要获取历史数据,可以使用download_history_data函数下载相关数据,然后使用get_market_data_ex函数提取所需的信息。这两个函数的组合可以帮助您获取即时和历史的场内基金数据,使您能够对市场情况有更全面、准确的了解,并帮助您做出更明智的投资决策。
调用方法
# coding=utf-8
from xtquant import xtdata
# 订阅指定合约最新行情
xtdata.subscribe_quote(stock_code, period='', start_time='', end_time='', count=0, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data(stock_code, period, start_time='', end_time='')
# 获取指定合约历史行情
xtdata.get_market_data_ex(field_list = [], stock_list = [], period = '', start_time = '', end_time = '', count = -1, dividend_type = 'none', fill_data = True)参数
- xtdata.subscribe_quote
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | str | 股票代码 |
start_time | str | 开始时间格式YYYYMMDD/YYYYMMDDhhmmss |
end_time | str | 结束时间 |
count | int | 数量 -1全部/n: 从结束时间向前数n个 |
period | str | 周期 分笔"tick" 分钟线"1m"/"5m" 日线"1d" |
- xtdata.get_market_data_ex
| 参数名称 | 类型 | 描述 |
|---|---|---|
field_list | list | 表示所有字段。不同的数据周期,取值范围有所不同。 |
stock_list | list | 合约代码列表 |
period | str | 数据周期,默认是当前主图周期。可选值如下: 'tick' (分笔线), '1d' (日线), '1m' (1分钟线), '5m' (5分钟线), '15m' (15分钟线), 'l2quote' (Level2行情快照), 'l2quoteaux' (Level2行情快照补充), 'l2order' (Level2逐笔委托), 'l2transaction' (Level2逐笔成交),'l2transactioncount' (Level2大单统计), 'l2orderqueue' (Level2委买委卖队列) |
start_time | str | 开始时间。为空时默认为最早时间。时间格式为'20201231'或'20201231093000' |
end_time | str | 结束时间。为空时默认为最新时间。时间格式为'20201231'或'20201231235959' |
count | int | 数据最大个数。-1表示不做个数限制 |
dividend_type | str | 复权方式,默认是当前主图复权方式。可选值包括: 'none' (不复权), 'front'(前复权), 'back' (后复权), 'front_ratio' (等比前复权), 'back_ratio' (等比后复权) |
fill_data | bool | 停牌填充方式 |
返回值
- period为
1m5m1dK线周期时 - 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick分笔周期时 - 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time增序排列
示例
# coding=utf-8
from xtquant import xtdata
# 订阅指定合约最新行情
xtdata.subscribe_quote('513330.SH', period='tick', start_time='', end_time='20231026150000', count=1, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data('513330.SH', 'tick', '20231026093000', '20231026150000')
# 获取指定合约历史行情
tick_data = xtdata.get_market_data_ex(field_list=[], stock_list=['513330.SH'], period='tick', start_time='', end_time='20231026150000', count=10, dividend_type='none', fill_data=True)
print(tick_data)返回值
{'513330.SH': time lastPrice ... settlementPrice transactionNum
20231026111832 1698290312000 0.372 ... 0.0 28429
20231026111835 1698290315000 0.372 ... 0.0 28430
20231026111838 1698290318000 0.372 ... 0.0 28432
20231026111841 1698290321000 0.372 ... 0.0 28433
20231026111844 1698290324000 0.371 ... 0.0 28434
20231026111847 1698290327000 0.372 ... 0.0 28436
20231026111850 1698290330000 0.372 ... 0.0 28439
20231026111853 1698290333000 0.372 ... 0.0 28439
20231026111856 1698290336000 0.371 ... 0.0 28442
20231026111859 1698290339000 0.372 ... 0.0 28445
[10 rows x 18 columns]}基金列表
函数可以实时获取上市的场内基金、ETF(交易所交易基金)以及LOF(Listed Open-end Fund,列出的开放式基金)的列表。这个功能能帮助投资者了解当前上市并且可交易的基金合约,提供最新的数据支持,从而进行更精准的投资决策。
调用方法
# coding=utf-8
from xtquant import xtdata
xtdata.get_stock_list_in_sector(sector_name)参数
| 字段 | 类型 | 说明 |
|---|---|---|
sector_name | str | 板块名 |
返回值
- list:内含成份股代码,代码形式为 'stockcode.market',如 \['159659.SZ', '513330.SH'\]
示例:
# coding=utf-8
from xtquant import xtdata
ret_sector_data = get_stock_list_in_sector('沪深基金') [:10]
print(ret_sector_data)返回值:
['588400.SH', '518890.SH', '501208.SH', '516330.SH', '515020.SH',
'513600.SH', '515860.SH', '510510.SH', '516900.SH', '510760.SH']获取期货合约信息
市场简称代码
| 市场 | 市场代码 | 迅投市场代码 |
|---|---|---|
上期所 | SHFE | SF |
大商所 | DCE | DF |
郑商所 | CZCE | ZF |
中金所 | CFFEX | IF |
能源中心 | INE | INE |
广期所 | GFEX | GF |
获取期货交易日历
获取期货交易日历
from xtquant import xtdata
xtdata.get_trading_dates(market, start_time='', end_time='', count=-1)参数
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
market | string | 市场代码 |
start_time | string | 起始时间(格式:%Y%m%d) |
end_time | string | 结束时间(格式:%Y%m%d) |
count | int | 数据个数 (-1代表获取所有日历) |
返回值
list时间戳列表,\[ date1, date2, ... \]
示例:
示例与返回值
from xtquant import xtdata
date_list = xtdata.get_trading_dates('SF', start_time='', end_time='', count=30)
print(date_list)[1692288000000,
1692547200000,
1692633600000,
1692720000000,
1692806400000,
1692892800000,
1693152000000,
1693238400000,
1693324800000,
1693411200000,
1693497600000,
1693756800000,
1693843200000,
1693929600000,
1694016000000,
1694102400000,
1694361600000,
1694448000000,
1694534400000,
1694620800000,
1694707200000,
1694966400000,
1695052800000,
1695139200000,
1695225600000,
1695312000000,
1695571200000,
1695657600000,
1695744000000,
1695830400000]获取当前所有期货代码
提示
需要先下载板块分类信息
from xtquant import xtdata
xtdata.get_stock_list_in_sector(sector_name)参数
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
sector_name | string | 市场代码 |
返回值
list 成分股列表,\[ code1, code2, ... \]
示例
示例与返回值
from xtquant import xtdata
# 获取上海期货交易所所有标的的代码
SF_list = xtdata.get_stock_list_in_sector("SF")
SF_list = xtdata.get_stock_list_in_sector("上期所期货")
# 主力合约列表
main_list = xtdata.get_stock_list_in_sector("主力板块")
# 显示列表返回值的前十个代码
print(SF_list[:10])
print(main_list[:10])['ag00.SHFE', 'ag01.SHFE', 'ag02.SHFE', 'ag03.SHFE', 'ag04.SHFE', 'ag05.SHFE', 'ag06.SHFE', 'ag07.SHFE', 'ag08.SHFE', 'ag09.SHFE']获取合约基础信息
from xtquant import xtdata
xtdata.get_instrument_detail(stock_code)参数
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
stock_code | string | 合约代码 |
返回值
dict 数据字典,{ field1 : value1, field2 : value2, ... },找不到指定合约时返回None
| 参数名称 | 数据类型 | 描述 |
|---|---|---|
ExchangeID | string | 合约市场代码 |
InstrumentID | string | 合约代码 |
InstrumentName | string | 合约名称 |
ProductID | string | 合约的品种ID(期货) |
ProductName | string | 合约的品种名称(期货) |
CreateDate | str | 上市日期(期货) |
OpenDate | str | IPO日期(股票) |
ExpireDate | int | 退市日或者到期日 |
PreClose | float | 前收盘价格 |
SettlementPrice | float | 前结算价格 |
UpStopPrice | float | 当日涨停价 |
DownStopPrice | float | 当日跌停价 |
FloatVolume | float | 流通股本 |
TotalVolume | float | 总股本 |
LongMarginRatio | float | 多头保证金率 |
ShortMarginRatio | float | 空头保证金率 |
PriceTick | float | 最小价格变动单位 |
VolumeMultiple | int | 合约乘数(对期货以外的品种,默认是1) |
MainContract | int | 主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约 |
LastVolume | int | 昨日持仓量 |
InstrumentStatus | int | 合约已停牌日期(停牌第一天值为0,第二天为1,以此类推。注意,正常交易的股票该值也是0) |
IsTrading | bool | 合约是否可交易 |
IsRecent | bool | 是否是近月合约 |
示例
示例与返回值
from xtquant import xtdata
print(xtdata.get_instrument_detail("rb2401.SF")){"ExchangeID": "SHFE",
"InstrumentID": "rb2401",
"InstrumentName": "螺纹钢2401",
"ProductID": "rb",
"ProductName": "",
"ExchangeCode": None,
"UniCode": None,
"CreateDate": "0",
"OpenDate": "20230117",
"ExpireDate": 20240115,
"PreClose": 3682.0,
"SettlementPrice": 3684.0,
"UpStopPrice": 3941.0,
"DownStopPrice": 3426.0,
"FloatVolume": 0.0,
"TotalVolume": 0.0,
"LongMarginRatio": 0.09,
"ShortMarginRatio": 0.09,
"PriceTick": 1.0,
"VolumeMultiple": 10,
"MainContract": 1,
"LastVolume": 1767758,
"InstrumentStatus": 2147483647,
"IsTrading": True,
"IsRecent": False,
"ProductTradeQuota": 0,
"ContractTradeQuota": 0,
"ProductOpenInterestQuota": 0,
"ContractOpenInterestQuota": 176776}获取当前主力合约
xtdata.get_main_contract(code)| 参数名称 | 数据类型 | 描述 |
|---|---|---|
code | str | 品种代码如rb00.SF(螺纹钢连续合约) |
返回值
str,主力合约代码
示例
示例与返回值
from xtquant import xtdata
main_symbol = xtdata.get_main_contract('rb00.SF')
print(main_symbol)# 返回的主力合约代码
"rb2401.SF"获取历史主力合约
内置python
提示
1. 该数据为 VIP数据 2. 该函数支持实盘/回测两种模式 3. 若要使用该函数获取历史主力合约,必须要先下载历史主力合约数据 4. 历史主力合约数据目前通过界面端数据管理 - 过期合约数据 - 历史主力合约下载
原型
ContextInfo.get_main_contract(codemarket)
ContextInfo.get_main_contract(codemarket,date="")
ContextInfo.get_main_contract(codemarket,startDate="",endDate="")释义
获取当前期货主力合约
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
codemarket | string | 合约和市场,合约格式为品种名加00,如IF00.IF,zn00.SF |
startDate | string | 开始日期(可以不写),如20180608 |
endDate | string | 结束日期(可以不写),如20190608 |
返回值
str,合约代码
示例
示例与返回值
# coding:gbk
def init(C):
pass
def handlebar(C):
symbol1 = C.get_main_contract('IF00.IF')# 获取当前主力合约
symbol2 = C.get_main_contract('IF00.IF',"20190101")# 获取指定日期主力合约
symbol3 = C.get_main_contract('IF00.IF',"20181101","20190101") # 获取时间段内全部主力合约
print(symbol1, symbol2)
print("="*10)
print(symbol3)IF2312
==========
IF1901
==========
1540137600000 IF1811
1545321600000 IF1901
dtype: object原生python
提示
1. 获取该数据前,需要通过download_history_data接口下载数据,下载时period参数需指定为historymaincontract 2. 该数据通过get_market_data_ex函数进行获取 3. 该数据为 VIP数据
period = "historymaincontract" # 通过指定period参数 从gmd_ex接口获取历史主力合约信息
symbol = "IF00.IF" # 示例合约
xtdata.get_market_data_ex([], [symbol], period=period, start_time='', end_time='', count=-1,dividend_type='none', fill_data=False)参数
- period参数需填写为
"historymaincontract" - stock_list里的合约需为主力连续合约,如
IF00.IF
其余参数与get_market_data_ex一致
返回值
dict类型数据,其中:
- key为symbol
- values为pandas.DataFrame
- values.index为自增行,columns为\[time,合约在交易所的代码\]
示例
from xtquant import xtdata
symbol = 'IF00.IF' # 合约需要是主连合约
period = "historymaincontract" # period需指定为 "historymaincontract"
# 下载历史主力合约
xtdata.download_history_data(symbol, period, '', '') # 获取之前需要先下载到本地
his_main_contract = xtdata.get_market_data_ex([],[symbol],period) # 获取数据查看
print(his_main_contract){'IF00.IF': time 合约在交易所的代码
0 1366128000000 IF1304
1 1366300800000 IF1305
2 1368633600000 IF1306
3 1371657600000 IF1307
4 1374163200000 IF1308
.. ... ...
130 1694966400000 IF2310
131 1697731200000 IF2311
132 1700064000000 IF2312
133 1702828800000 IF2401
134 1705593600000 IF2402
[135 rows x 2 columns]}获取期货行情数据
获取行情数据
提示
使用该接口时,需要先订阅实时行情(subscribe_quote)或下载过历史行情(download_history_data)
from xtquant import xtdata
xtdata.get_market_data_ex(field_list=[], stock_list=[], period='1d', start_time='', end_time='', count=-1, dividend_type='none', fill_data=True)参数
| 名称 | 类型 | 描述 |
|---|---|---|
field | list | 数据字段,详情见下方field字段表 |
stock_list | list | 合约代码列表 |
period | str | 数据周期——1m、5m、1d、tick、10m、15m、30m、1h、1w |
start_time | str | 数据起始时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S,填""为获取历史最早一天 |
end_time | str | 数据结束时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S ,填""为截止到最新一天 |
count | int | 数据个数 |
dividend_type | str | 除权方式 |
fill_data | bool | 是否填充数据 |
field字段可选:
| field | 数据类型 | 含义 |
|---|---|---|
time | int | 时间 |
open | float | 开盘价 |
high | float | 最高价 |
low | float | 最低价 |
close | float | 收盘价 |
volume | float | 成交量 |
amount | float | 成交额 |
settle | float | 今结算 |
openInterest | float | 持仓量 |
preClose | float | 前收盘价 |
suspendFlag | int | 停牌 1停牌,0 不停牌 |
period周期为tick时,field字段可选:
| 字段名 | 数据类型 | 含义 |
|---|---|---|
time | int | 时间戳 |
stime | string | 时间戳字符串形式 |
lastPrice | float | 最新价 |
open | float | 开盘价 |
high | float | 最高价 |
low | float | 最低价 |
lastClose | float | 前收盘价 |
amount | float | 成交总额 |
volume | int | 成交总量(手) |
pvolume | int | 原始成交总量(未经过股手转换的成交总量)【不推荐使用】 |
stockStatus | int | 证券状态 |
openInterest | int | 若是股票,则openInt含义为股票状态,非股票则是持仓量 openInt字段说明 |
transactionNum | float | 成交笔数(期货没有,单独计算) |
lastSettlementPrice | float | 前结算(股票为0) |
settlementPrice | float | 今结算(股票为0) |
askPrice | list[float] | 多档委卖价 |
askVol | list[int] | 多档委卖量 |
bidPrice | list[float] | 多档委买价 |
bidVol | list[int] | 多档委买量 |
返回值
- period为
1m5m1dK线周期时 - 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick分笔周期时 - 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time增序排列
获取日线行情数据
示例
示例与返回值
from xtquant import xtdata
xtdata.get_market_data_ex([],['rb2401.SF'],period='1d')# 返回结果
{'rb2401.SF': time open high low close volume
20230117 1673884800000 4001.0 4027.0 3973.0 4011.0 1038
20230118 1673971200000 4027.0 4051.0 4014.0 4037.0 314
20230119 1674057600000 4043.0 4085.0 4043.0 4080.0 352
20230120 1674144000000 4075.0 4076.0 4050.0 4070.0 502
20230130 1675008000000 4127.0 4157.0 4080.0 4084.0 992
... ... ... ... ... ... ...
20231017 1697472000000 3658.0 3672.0 3637.0 3647.0 1068036
20231018 1697558400000 3652.0 3660.0 3605.0 3615.0 1361935
20231019 1697644800000 3615.0 3650.0 3595.0 3644.0 1313338
20231020 1697731200000 3650.0 3659.0 3601.0 3610.0 1418587
20231023 1697990400000 3600.0 3616.0 3558.0 3573.0 1513440
amount settelementPrice openInterest preClose suspendFlag
20230117 4.148817e+07 3996.0 573 4061.0 0
20230118 1.267393e+07 4036.0 713 4011.0 0
20230119 1.431537e+07 4066.0 821 4037.0 0
20230120 2.040859e+07 4065.0 944 4080.0 0
20230130 4.090941e+07 4123.0 1201 4070.0 0
... ... ... ... ... ...
20231017 3.900789e+10 3652.0 1870289 3657.0 0
20231018 4.950385e+10 3634.0 1951142 3647.0 0
20231019 4.759753e+10 3624.0 1886883 3615.0 0
20231020 5.149242e+10 3629.0 1880167 3644.0 0
20231023 5.423026e+10 0.0 1961524 3610.0 0
[183 rows x 11 columns]}获取tick行情
示例
示例与返回值
from xtquant import xtdata
xtdata.get_market_data_ex([],['rb2401.SF'],period='tick')
time lastPrice open high low lastClose amount volume pvolume stockStatus openInt lastSettlementPrice askPrice bidPrice askVol bidVol settlementPrice transactionNum
20230925085900 1695603540500 3778.0 3786.0 3787.0 3766.0 3779.0 1.291532e+10 341961 0 0 1651554 3773.0 [3779.0, 3780.0, 3781.0, 3782.0, 3783.0] [3777.0, 3776.0, 3775.0, 3774.0, 3773.0] [635, 0, 0, 0, 0] [138, 0, 0, 0, 0] 0.0 0
20230925090000 1695603600500 3779.0 3786.0 3787.0 3766.0 3779.0 1.296989e+10 343405 0 0 1652373 3773.0 [3780.0, 3781.0, 3782.0, 3783.0, 3784.0] [3778.0, 3777.0, 3776.0, 3775.0, 3774.0] [916, 0, 0, 0, 0] [168, 0, 0, 0, 0] 0.0 0
20230925090001 1695603601000 3780.0 3786.0 3787.0 3766.0 3779.0 1.307600e+10 346211 0 0 1651646 3773.0 [3787.0, 3788.0, 3789.0, 3790.0, 3791.0] [3779.0, 3778.0, 3777.0, 3776.0, 3775.0] [420, 0, 0, 0, 0] [20, 0, 0, 0, 0] 0.0 0
20230925090001 1695603601500 3783.0 3786.0 3787.0 3766.0 3779.0 1.309460e+10 346703 0 0 1651496 3773.0 [3784.0, 3785.0, 3786.0, 3787.0, 3788.0] [3776.0, 3775.0, 3774.0, 3773.0, 3772.0] [46, 0, 0, 0, 0] [89, 0, 0, 0, 0] 0.0 0
20230925090002 1695603602000 3783.0 3786.0 3787.0 3766.0 3779.0 1.312842e+10 347597 0 0 1651258 3773.0 [3784.0, 3785.0, 3786.0, 3787.0, 3788.0] [3782.0, 3781.0, 3780.0, 3779.0, 3778.0] [41, 0, 0, 0, 0] [7, 0, 0, 0, 0] 0.0 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
20230928145958 1695884398500 3690.0 3690.0 3717.0 3684.0 3682.0 3.781059e+10 1021634 0 0 1697198 3684.0 [3690.0, 0.0, 0.0, 0.0, 0.0] [3690.0, 0.0, 0.0, 0.0, 0.0] [54, 0, 0, 0, 0] [126, 0, 0, 0, 0] 0.0 0
20230928145959 1695884399000 3690.0 3690.0 3717.0 3684.0 3682.0 3.781148e+10 1021658 0 0 1697179 3684.0 [3690.0, 0.0, 0.0, 0.0, 0.0] [3690.0, 0.0, 0.0, 0.0, 0.0] [20, 0, 0, 0, 0] [112, 0, 0, 0, 0] 0.0 0
20230928145959 1695884399500 3690.0 3690.0 3717.0 3684.0 3682.0 3.781395e+10 1021725 0 0 1697158 3684.0 [3690.0, 0.0, 0.0, 0.0, 0.0] [3690.0, 0.0, 0.0, 0.0, 0.0] [20, 0, 0, 0, 0] [46, 0, 0, 0, 0] 0.0 0
20230928150000 1695884400000 3690.0 3690.0 3717.0 3684.0 3682.0 3.781502e+10 1021754 0 0 1697143 3684.0 [3690.0, 0.0, 0.0, 0.0, 0.0] [3690.0, 0.0, 0.0, 0.0, 0.0] [10, 0, 0, 0, 0] [63, 0, 0, 0, 0] 0.0 0
20230928150000 1695884400500 3690.0 3690.0 3717.0 3684.0 3682.0 3.781502e+10 1021754 0 0 1697143 3684.0 [3690.0, 0.0, 0.0, 0.0, 0.0] [3690.0, 0.0, 0.0, 0.0, 0.0] [10, 0, 0, 0, 0] [63, 0, 0, 0, 0] 3700.0 0
149943 rows × 18 columns获取5档盘口行情
提示
1. 该数据为 VIP数据
示例五档返回值
from xtquant import xtdata
import time
symbol_list = ["rb2405.SF","ec2404.INE"] # 五档行情支持上期所,上期能源
period = "l2quote" # 获取5档盘口tick
for symbol in symbol_list:
xtdata.subscribe_quote(symbol,period = period,count=-1)
time.sleep(1)
data = xtdata.get_market_data_ex(["askPrice","bidPrice"],symbol_list,period = period,count=-1)
print(data)
{'ec2404.INE': askPrice
20240115085900 [2300.0, 2300.2, 2304.0, 2306.0, 2310.0, 0.0, ...
20240115090000 [2266.0, 2280.0, 2280.9, 2285.0, 2287.9, 0.0, ...
20240115090001 [2261.6000000000004, 2262.0000000000005, 2262....
20240115090001 [2253.4, 2253.5, 2253.6, 2254.6, 2255.0, 0.0, ...
20240115090002 [2244.6, 2246.6, 2246.7999999999997, 2248.8999...
... ...
20240115140227 [2138.3, 2138.6000000000004, 2138.700000000000...
20240115140228 [2138.0, 2138.3, 2138.6000000000004, 2138.7000...
20240115140228 [2137.7999999999997, 2137.8999999999996, 2137....
20240115140229 [2137.2999999999997, 2137.7999999999997, 2137....
20240115140229 [2136.4, 2137.1, 2137.7999999999997, 2137.8999...
bidPrice
20240115085900 [2288.0, 2280.0, 2266.0, 2265.0, 2262.1, 0.0, ...
20240115090000 [2222.1, 2222.0, 2220.0, 2219.0, 2216.0, 0.0, ...
20240115090001 [2227.0000000000005, 2226.8000000000006, 2226....
20240115090001 [2230.2000000000003, 2230.0000000000005, 2229....
20240115090002 [2233.2000000000003, 2223.4, 2222.0, 2220.0, 2...
... ...
20240115140227 [2137.1, 2135.2999999999997, 2134.999999999999...
20240115140228 [2137.1, 2135.2999999999997, 2134.999999999999...
20240115140228 [2137.1, 2135.2999999999997, 2134.999999999999...
20240115140229 [2137.1, 2135.2999999999997, 2134.999999999999...
20240115140229 [2135.0, 2134.0, 2132.4, 2132.0, 2131.0, 0.0, ...
[15942 rows x 2 columns],
'rb2405.SF': askPrice
20240112205900 [3906.0, 3907.0, 3908.0, 3909.0, 3910.0, 0.0, ...
20240112210000 [3904.0, 3905.0, 3906.0, 3907.0, 3908.0, 0.0, ...
20240112210001 [3905.0, 3906.0, 3907.0, 3908.0, 3909.0, 0.0, ...
20240112210001 [3905.0, 3906.0, 3907.0, 3908.0, 3909.0, 0.0, ...
20240112210002 [3905.0, 3906.0, 3907.0, 3908.0, 3909.0, 0.0, ...
... ...
20240115140227 [3911.0, 3912.0, 3913.0, 3914.0, 3915.0, 0.0, ...
20240115140227 [3911.0, 3912.0, 3913.0, 3914.0, 3915.0, 0.0, ...
20240115140228 [3911.0, 3912.0, 3913.0, 3914.0, 3915.0, 0.0, ...
20240115140228 [3911.0, 3912.0, 3913.0, 3914.0, 3915.0, 0.0, ...
20240115140229 [3911.0, 3912.0, 3913.0, 3914.0, 3915.0, 0.0, ...
bidPrice
20240112205900 [3905.0, 3904.0, 3903.0, 3902.0, 3901.0, 0.0, ...
20240112210000 [3903.0, 3902.0, 3901.0, 3900.0, 3899.0, 0.0, ...
20240112210001 [3904.0, 3903.0, 3902.0, 3901.0, 3900.0, 0.0, ...
20240112210001 [3904.0, 3903.0, 3902.0, 3901.0, 3900.0, 0.0, ...
20240112210002 [3904.0, 3903.0, 3902.0, 3901.0, 3900.0, 0.0, ...
... ...
20240115140227 [3910.0, 3909.0, 3908.0, 3907.0, 3906.0, 0.0, ...
20240115140227 [3910.0, 3909.0, 3908.0, 3907.0, 3906.0, 0.0, ...
20240115140228 [3910.0, 3909.0, 3908.0, 3907.0, 3906.0, 0.0, ...
20240115140228 [3910.0, 3909.0, 3908.0, 3907.0, 3906.0, 0.0, ...
20240115140229 [3910.0, 3909.0, 3908.0, 3907.0, 3906.0, 0.0, ...
[35329 rows x 2 columns]}期货结算价与持仓量
| 字段 | 数据类型 | 含义 |
|---|---|---|
settelementPrice | float | 结算价 |
openInterest | float | 持仓量 |
| 示例 |
示例与返回值
from xtquant import xtdata
xtdata.get_market_data_ex(['settelementPrice','openInterest'],['rb2401.SF'],period='1d'){'rb2401.SF': settelementPrice openInterest
20230117 3996.0 573
20230118 4036.0 713
20230119 4066.0 821
20230120 4065.0 944
20230130 4123.0 1201
... ... ...
20230922 3773.0 1643925
20230925 3741.0 1710023
20230926 3697.0 1772900
20230927 3684.0 1767758
20230928 3700.0 1697143
[172 rows x 2 columns]}期货仓单
提示
1.该数据通过get_market_data和get_market_data_ex接口获取
2.获取数据前需要先用download_history_data下载历史数据
3. VIP 权限数据
参数
period参数传入warehousereceipt
返回值
- 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
示例
示例与返回值
from xtquant import xtdata
# 下载期货仓单
xtdata.download_history_data('','warehousereceipt','','')
#查询螺纹钢仓单数据
xtdata.get_market_data_ex([],['rb.SF'],period='warehousereceipt'){'rb.SF': time warehouse receipt
20200102 1577894400000 上港物流共青 0
20200102 1577894400001 广物物流 0
20200102 1577894400002 中储无锡 0
20200102 1577894400003 惠龙港 0
20200102 1577894400004 金驹物流 0
... ... ... ...
20230928 1695830400007 鞍钢股份 0
20230928 1695830400008 沙钢集团 0
20230928 1695830400009 镔钢集团 4500
20230928 1695830400010 河钢集团承钢 0
20230928 1695830400011 河钢集团邯钢 0
[11104 rows x 3 columns]}期货席位
提示
1.该数据通过get_market_data和get_market_data_ex接口获取
2.获取数据前需要先用download_history_data下载历史数据
3. VIP 权限数据
参数
period参数传入futureholderrank
返回值
- 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
示例
示例与返回值
from xtquant import xtdata
# 下载期货席位
xtdata.download_history_data('','futureholderrank','','')
#查询螺纹钢席位数据,period参数填写'futureholderrank'
print(xtdata.get_market_data_ex([],['rb2401.SF'],period='futureholderrank')['rb2401.SF']){'rb2401.SF': time tradingVolumeRank
20230406 1680710400000 [{'4': '国泰君安', '5': 2400, '6': 382}, {'4': '东证...
20230407 1680796800000 [{'4': '中信期货', '5': 2847, '6': 2079}, {'4': '东...
20230410 1681056000000 [{'4': '中泰期货', '5': 4791, '6': 4239}, {'4': '东...
20230411 1681142400000 [{'4': '东证期货', '5': 4925, '6': 1081}, {'4': '中...
20230412 1681228800000 [{'4': '华泰期货', '5': 6743, '6': 5298}, {'4': '浙...
... ... ...
20230922 1695312000000 [{'4': '东证期货', '5': 363143, '6': -235457}, {'4...
20230925 1695571200000 [{'4': '东证期货', '5': 470528, '6': 107385}, {'4'...
20230926 1695657600000 [{'4': '东证期货', '5': 427734, '6': -42794}, {'4'...
20230927 1695744000000 [{'4': '东证期货', '5': 291031, '6': -136703}, {'4...
20230928 1695830400000 [{'4': '东证期货', '5': 323971, '6': 32940}, {'4':...
buyPositionRank
20230406 [{'4': '海证期货', '5': 18021, '6': 11}, {'4': '中泰...
20230407 [{'4': '海证期货', '5': 18035, '6': 14}, {'4': '中泰...
20230410 [{'4': '海证期货', '5': 18048, '6': 13}, {'4': '中泰...
20230411 [{'4': '海证期货', '5': 18048, '6': 0}, {'4': '中泰期...
20230412 [{'4': '海证期货', '5': 18083, '6': 35}, {'4': '浙商...
... ...
20230922 [{'4': '国泰君安', '5': 119476, '6': -8964}, {'4':...
20230925 [{'4': '国泰君安', '5': 118274, '6': -1202}, {'4':...
20230926 [{'4': '国泰君安', '5': 129658, '6': 11384}, {'4':...
20230927 [{'4': '国泰君安', '5': 123275, '6': -6383}, {'4':...
20230928 [{'4': '国泰君安', '5': 118341, '6': -4934}, {'4':...
sellPositionRank
20230406 [{'4': '中泰期货', '5': 13816, '6': 99}, {'4': '光大...
20230407 [{'4': '中泰期货', '5': 13695, '6': -121}, {'4': '...
20230410 [{'4': '中泰期货', '5': 16135, '6': 2440}, {'4': '...
20230411 [{'4': '中泰期货', '5': 15623, '6': -512}, {'4': '...
20230412 [{'4': '中泰期货', '5': 15620, '6': -3}, {'4': '财信...
... ...
20230922 [{'4': '国泰君安', '5': 152616, '6': -6835}, {'4':...
20230925 [{'4': '国泰君安', '5': 159635, '6': 7019}, {'4': ...
20230926 [{'4': '国泰君安', '5': 152998, '6': -6637}, {'4':...
20230927 [{'4': '国泰君安', '5': 148873, '6': -4125}, {'4':...
20230928 [{'4': '国泰君安', '5': 146983, '6': -1890}, {'4':...
[121 rows x 4 columns]}现货数据
提示
1.该数据通过get_market_data和get_market_data_ex接口获取
2.获取数据前需要先用download_history_data下载历史数据
3. VIP 权限数据
返回值
- 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
示例
示例与返回值
from xtquant import xtdata
# 获取现货市场代码
spot_list = xtdata.get_stock_list_in_sector('现货市场指数')
print(spot_list)
# 获取现货数据
spot_data = xtdata.get_market_data_ex(field_list=[],
stock_list=['S0010020001.spot'],
period='1d',
fill_data=False)
print(spot_data)# 预计输出
['S0010010001.SPOT', 'S0010020001.SPOT', 'S0010030001.SPOT', 'S0010030002.SPOT', 'S0010040001.SPOT', 'S0010050001.SPOT', 'S0010050002.SPOT', 'S0010050003.SPOT', 'S0010050004.SPOT', 'S0010070001.SPOT', 'S0010080001.SPOT', 'S0010090001.SPOT', 'S0020010001.SPOT', 'S0020020001.SPOT', 'S0020030001.SPOT', 'S0020040001.SPOT', 'S0020050001.SPOT', 'S0020060001.SPOT', 'S0020070001.SPOT', 'S0020080001.SPOT', 'S0020090001.SPOT', 'S0020100001.SPOT', 'S0030010001.SPOT', 'S0030010002.SPOT', 'S0030020001.SPOT', 'S0030030001.SPOT', 'S0030040001.SPOT', 'S0030070001.SPOT', 'S0030080001.SPOT', 'S0030090001.SPOT', 'S0030090002.SPOT', 'S0030100001.SPOT', 'S0030110001.SPOT', 'S0030120001.SPOT', 'S0030120002.SPOT', 'S0030120003.SPOT', 'S0030120004.SPOT', 'S0030120005.SPOT', 'S0030140001.SPOT', 'S0030150001.SPOT', 'S0030150002.SPOT', 'S0030150003.SPOT', 'S0030150004.SPOT', 'S0030160001.SPOT', 'S0030170001.SPOT', 'S0030180001.SPOT', 'S0030180002.SPOT', 'S0030180003.SPOT', 'S0030190001.SPOT', 'S0030200001.SPOT', 'S0040010001.SPOT', 'S0040020001.SPOT', 'S0040030001.SPOT', 'S0040040001.SPOT', 'S0040050001.SPOT', 'S0040060001.SPOT', 'S0040070001.SPOT', 'S0040080001.SPOT', 'S0040090001.SPOT', 'S0040100001.SPOT', 'S0040110001.SPOT', 'S0040120001.SPOT', 'S0040130001.SPOT', 'S0040150001.SPOT', 'S0040160001.SPOT', 'S0040170001.SPOT']
{'S0010020001.SPOT': amount close high low open openInterest preClose
19970701 0.0 2748.0 2748.0 2748.0 2748.0 0 0.0
19970801 0.0 2720.0 2720.0 2720.0 2720.0 0 0.0
19970901 0.0 2692.0 2692.0 2692.0 2692.0 0 0.0
19971001 0.0 2720.0 2720.0 2720.0 2720.0 0 0.0
19971101 0.0 2720.0 2720.0 2720.0 2720.0 0 0.0
19971201 0.0 2720.0 2720.0 2720.0 2720.0 0 0.0
settelementPrice suspendFlag time volume
19970701 2748.0 0 867686400000 0
19970801 2720.0 0 870364800000 0
19970901 2692.0 0 873043200000 0
19971001 2720.0 0 875635200000 0
19971101 2720.0 0 878313600000 0
19971201 2720.0 0 880905600000 0
...期货列表
金融期货列表
提供当前时间段内有效的金融期货合约数据(如行情数据等),
支持的金融期货种类
沪深 300 指数期货合约表
| 信息 | 内容 |
|---|---|
| 合约标的 | 沪深 300 指数 |
| 合约乘数 | 每点 300 元 |
| 报价单位 | 指数点 |
| 最小变动价位 | 0.2 点 |
| 合约月份 | 当月、下月及随后两个季月 |
| 交易时间 | 上午:9:30-11:30,下午:13:00-15:00 |
| 每日价格最大波动限制 | 上一个交易日结算价的±10% |
| 最低交易保证金 | 合约价值的 8% |
| 最后交易日 | 合约到期月份的第三个周五,遇国家法定假日顺延 |
| 交割日期 | 同最后交易日 |
| 交割方式 | 现金交割 |
| 交易代码 | IF |
| 上市交易所 | 中国金融期货交易所 |
上证 50 股指期货合约表
| 信息 | 内容 |
|---|---|
| 合约标的 | 上证 50 指数 |
| 合约乘数 | 每点 300 元 |
| 报价单位 | 指数点 |
| 最小变动价位 | 0.2 点 |
| 合约月份 | 当月、下月及随后两个季月 |
| 交易时间 | 上午: 9:30-11:30,下午:13:00-15:00 |
| 每日价格最大波动限制 | 上一个交易日结算价的±10% |
| 最低交易保证金 | 合约价值的 8% |
| 最后交易日 | 合约到期月份的第三个周五,遇国家法定假日顺延 |
| 交割日期 | 同最后交易日 |
| 交割方式 | 现金交割 |
| 交易代码 | IH |
| 上市交易所 | 中国金融期货交易所 |
中证 500 股指期货合约表
| 信息 | 内容 |
|---|---|
| 合约标的 | 中证 500 指数 |
| 合约乘数 | 每点 200 元 |
| 报价单位 | 指数点 |
| 最小变动价位 | 0.2 点 |
| 合约月份 | 当月、下月及随后两个季月 |
| 交易时间 | 上午: 9:30-11:30, 下午:13:00-15:00 |
| 每日价格最大波动限制 | 上一个交易日结算价的±10% |
| 最低交易保证金 | 合约价值的 8% |
| 最后交易日 | 合约到期月份的第三个周五,遇国家法定假日顺延 |
| 交割日期 | 同最后交易日 |
| 交割方式 | 现金交割 |
| 交易代码 | IC |
| 上市交易所 | 中国金融期货交易所 |
中证 1000 股指期货合约表
| 信息 | 内容 |
|---|---|
| 合约标的 | 中证 1000 指数 |
| 合约乘数 | 每点 200 元 |
| 报价单位 | 指数点 |
| 最小变动价位 | 0.2 点 |
| 合约月份 | 当月、下月及随后两个季月 |
| 交易时间 | 上午: 9:30-11:30, 下午:13:00-15:00 |
| 每日价格最大波动限制 | 上一个交易日结算价的±10% |
| 最低交易保证金 | 合约价值的 8% |
| 最后交易日 | 合约到期月份的第三个周五,遇国家法定假日顺延 |
| 交割日期 | 同最后交易日 |
| 交割方式 | 现金交割 |
| 交易代码 | IM |
| 上市交易所 | 中国金融期货交易所 |
2 年期国债期货合约表
| 信息 | 内容 |
|---|---|
| 合约标的 | 面值为 200 万元人民币、票面利率为 3%的名义中短期国债 |
| 可交割国债 | 发行期限不高于 5 年,合约到期月份首日剩余期限为 1.5-2.25 年的记账式附息国债 |
| 报价方式 | 百元净价报价 |
| 最小变动价位 | 0.005 元 |
| 合约月份 | 最近的三个季月(3 月、6 月、9 月、12 月中的最近三个月循环) |
| 交易时间 | 9:15 - 11:30, 13:00 - 15:15 |
| 最后交易日交易时间 | 9:15 - 11:30 |
| 每日价格最大波动限制 | 上一交易日结算价的±0.5% |
| 最低交易保证金 | 合约价值的 0.5% |
| 最后交易日 | 合约到期月份的第二个星期五 |
| 最后交割日 | 最后交易日后的第三个交易日 |
| 交割方式 | 实物交割 |
| 交易代码 | TS |
| 上市交易所 | 中国金融期货交易所 |
5 年期国债期货合约表
| 信息 | 内容 |
|---|---|
| 合约标的 | 面值为 100 万元人民币、票面利率为 3%的名义中期国债 |
| 可交割国债 | 合约到期月份首日剩余期限为 4-5.25 年的记账式附息国债 |
| 报价方式 | 百元净价报价 |
| 最小变动价位 | 0.005 元 |
| 合约月份 | 最近的三个季月(3 月、6 月、9 月、12 月中的最近三个月循环) |
| 交易时间 | 09:15—11:30, 13:00—15:15 |
| 最后交易日交易时间 | 09:15—11:30 |
| 每日价格最大波动限制 | 上一交易日结算价的±1.2% |
| 最低交易保证金 | 合约价值的 1% |
| 最后交易日 | 合约到期月份的第二个星期五 |
| 最后交割日 | 最后交易日后的第三个交易日 |
| 交割方式 | 实物交割 |
| 交易代码 | TF |
| 上市交易所 | 中国金融期货交易所 |
10 年期国债期货合约表
| 信息 | 内容 |
|---|---|
| 合约标的 | 面值为 100 万元人民币、票面利率为 3%的名义长期国债 |
| 可交割国债 | 合约到期月份首日剩余期限为 6.5-10.25 年的记账式附息国债 |
| 报价方式 | 百元净价报价 |
| 最小变动价位 | 0.005 元 |
| 合约月份 | 最近的三个季月(3 月、6 月、9 月、12 月中的最近三个月循环) |
| 交易时间 | 9:15 - 11:30,13:00 - 15:15 |
| 最后交易日交易时间 | 9:15 - 11:30 |
| 每日价格最大波动限制 | 上一交易日结算价的±2% |
| 最低交易保证金 | 合约价值的 2% |
| 最后交易日 | 合约到期月份的第二个星期五 |
| 最后交割日 | 最后交易日后的第三个交易日 |
| 交割方式 | 实物交割 |
| 交易代码 | T |
| 上市交易所 | 中国金融期货交易所 |
商品期货列表
主力连续合约及加权
主力合约生成规则
每个品种只有一个主连合约。主连合约于下一个交易日进行指向切换,切换前主连合约不变。当日成交量和持仓量都为最大的合约,确定为下一日主连合约,若当日成交量和持仓量都为最大的合约有多个,取其中的近月合约确定为下一日主连合约,若无当日成交量和持仓量同时最大的合约,取成交量最大的合约确定为下一日主连合约。
加权品种的价格规则
由当前品种全部可交易合约以实时持仓量为权重加权平均计算得到。 具体的计算方式是将该品种下所有交易合约价格和持仓量的乘积相加,得到的结果再除以这些合约持仓量的总和。

月份连续合约生成规则
月份连续合约是指将所有的相同月份合约连续拼接起来,生成的连续合约;
以AP01.ZF为例:ap01的合成规则是将AP401.ZF,AP301.ZF,AP201.ZF,AP101.ZF.....等苹果一月份合约拼接起来的连续合约
中金所
| 名称 | 主力连续代码 | 加权合约代码 | 开始时间 | 退市时间 | 备注 |
|---|---|---|---|---|---|
| 沪深 300 合约 | IF00.IF | IFJQ00.IF | 2010-04-16 | ||
| 5 年期国债合约 | TF00.IF | TFJQ00.IF | 2013-09-06 | ||
| 10 年期国债合约 | T00.IF | TJQ00.IF | 2015-03-20 | ||
| 中证 500 合约 | IC00.IF | ICJQ00.IF | 2015-04-16 | ||
| 上证 50 合约 | IH00.IF | IHJQ00.IF | 2015-04-16 | ||
| 2 年期国债合约 | TS00.IF | TSJQ00.IF | 2018-08-17 | ||
| 中证 1000 合约 | IM00.IF | IMJQ00.IF | 2022-07-22 | ||
| 30 年期国债合约 | TL00.IF | TLJQ00.IF | 2023-04-21 |
大商所
| 名称 | 主力连续代码 | 加权合约代码 | 开始时间 | 退市时间 | 备注 |
|---|---|---|---|---|---|
| 豆一合约 | a00.DF | aJQ00.DF | 2005-01-03 | ||
| 豆二合约 | b00.DF | bJQ00.DF | 2005-01-03 | ||
| 豆粕合约 | m00.DF | mJQ00.DF | 2005-01-03 | ||
| 玉米合约 | c00.DF | cJQ00.DF | 2005-01-03 | ||
| 豆油合约 | y00.DF | yJQ00.DF | 2006-01-09 | ||
| 聚乙烯合约 | l00.DF | lJQ00.DF | 2007-07-31 | ||
| 棕榈油合约 | p00.DF | pJQ00.DF | 2007-10-29 | ||
| 聚氯乙烯合约 | v00.DF | vJQ00.DF | 2009-05-25 | ||
| 焦炭合约 | j00.DF | jJQ00.DF | 2011-04-15 | ||
| 焦煤合约 | jm00.DF | jmJQ00.DF | 2013-03-22 | ||
| 铁矿石合约 | i00.DF | iJQ00.DF | 2013-10-18 | ||
| 鸡蛋合约 | jd00.DF | jdJQ00.DF | 2013-11-08 | ||
| 胶合板合约 | bb00.DF | bbJQ00.DF | 2013-12-06 | ||
| 纤维板合约 | fb00.DF | fbJQ00.DF | 2013-12-06 | ||
| 聚丙烯合约 | pp00.DF | ppJQ00.DF | 2014-02-28 | ||
| 玉米淀粉合约 | cs00.DF | csJQ00.DF | 2014-12-19 | ||
| 乙二醇合约 | eg00.DF | egJQ00.DF | 2018-12-10 | ||
| 粳米合约 | rr00.DF | rrJQ00.DF | 2019-08-16 | ||
| 苯乙烯合约 | eb00.DF | ebJQ00.DF | 2019-09-26 | ||
| 液化石油气合约 | pg00.DF | pgJQ00.DF | 2020-03-30 | ||
| 生猪合约 | lh00.DF | lhJQ00.DF | 2021-01-08 |
上海国际能源交易中心
| 名称 | 主力连续代码 | 加权合约代码 | 开始时间 | 退市时间 | 备注 |
|---|---|---|---|---|---|
| 原油合约 | sc00.INE | scJQ00.INE | 2018-03-27 | ||
| 20 号胶合约 | nr00.INE | nrJQ00.INE | 2019-08-12 | ||
| 低硫燃料油合约 | lu00.INE | luJQ00.INE | 2020-06-22 | ||
| 阴极铜合约 | bc00.INE | bcJQ00.INE | 2020-11-19 | ||
| 集运指数(欧线)合约 | ec00.INE | ecJQ00.INE | 2023-08-18 |
广期所
| 名称 | 主力连续代码 | 加权合约代码 | 开始时间 | 退市时间 | 备注 |
|---|---|---|---|---|---|
| 碳酸锂 | lc00.GF | lcJQ00.GF | 2023-07-21 | ||
| 工业硅 | si00.GF | siJQ00.GF | 2022-12-22 |
上期所
| 名称 | 主力连续代码 | 加权合约代码 | 开始时间 | 退市时间 | 备注 |
|---|---|---|---|---|---|
| 铝合约 | al00.SF | alJQ00.SF | 2005-01-03 | ||
| 天然橡胶合约 | ru00.SF | ruJQ00.SF | 2005-01-03 | ||
| 燃料油合约 | fu00.SF | fuJQ00.SF | 2005-01-03 | ||
| 铜合约 | cu00.SF | cuJQ00.SF | 2005-01-03 | ||
| 锌合约 | zn00.SF | znJQ00.SF | 2007-03-26 | ||
| 黄金合约 | au00.SF | auJQ00.SF | 2008-01-09 | ||
| 线材合约 | wr00.SF | wrJQ00.SF | 2009-03-27 | ||
| 螺纹钢合约 | rb00.SF | rbJQ00.SF | 2009-03-27 | ||
| 铅合约 | pb00.SF | pbJQ00.SF | 2011-03-24 | ||
| 白银合约 | ag00.SF | agJQ00.SF | 2012-05-10 | ||
| 石油沥青合约 | bu00.SF | buJQ00.SF | 2013-10-09 | ||
| 热轧卷板合约 | hc00.SF | hcJQ00.SF | 2014-03-21 | ||
| 锡合约 | sn00.SF | snJQ00.SF | 2015-03-27 | ||
| 镍合约 | ni00.SF | niJQ00.SF | 2015-03-27 | ||
| 纸浆合约 | sp00.SF | spJQ00.SF | 2018-11-27 | ||
| 不锈钢合约 | ss00.SF | ssJQ00.SF | 2019-09-25 | ||
| 氧化铝合约 | ao00.SF | aoJQ00.SF | 2023-06-19 | ||
| 丁二烯橡胶合约 | br00.SF | brJQ00.SF | 2023-07-28 |
郑商所
| 名称 | 主力连续代码 | 加权合约代码 | 开始时间 | 退市时间 | 备注 |
|---|---|---|---|---|---|
| 硬白小麦合约 | WT00.ZF | WTJQ00.ZF | 2005-01-03 | 2012-11-22 | |
| 强麦合约 | WS00.ZF | WSJQ00.ZF | 2005-01-03 | 2013-05-23 | WS为旧的强麦合约代码,自WS 1305 停止执行 |
| 绿豆合约 | GN00.ZF | GNJQ00.ZF | 2005-01-03 | 2010-03-23 | |
| 棉花合约 | CF00.ZF | CFJQ00.ZF | 2005-01-03 | ||
| 白糖合约 | SR00.ZF | SRJQ00.ZF | 2006-01-06 | ||
| PTA合约 | TA00.ZF | TAJQ00.ZF | 2006-12-18 | ||
| 菜籽油合约 | RO00.ZF | ROJQ00.ZF | 2007-06-08 | 2013-05-15 | RO为旧的菜籽油合约, 自RO 1305 停止执行 |
| 早籼稻合约 | ER00.ZF | ERJQ00.ZF | 2009-04-20 | 2013-05-23 | ER为旧的早籼稻合约, 自ER 1305 停止执行 |
| 甲醇合约 | MA00.ZF | MAJQ00.ZF | 2011-10-28 | 2015-05-15 | |
| 普麦合约 | PM00.ZF | PMJQ00.ZF | 2012-01-17 | ||
| 菜籽油合约 | OI00.ZF | OIJQ00.ZF | 2012-07-16 | OI为新的菜籽油合约, 自OI 1307 开始执行 | |
| 强麦合约 | WH00.ZF | WHJQ00.ZF | 2012-07-24 | WH为新的强麦合约代码,自WH 1307 开始执行 | |
| 早籼稻合约 | RI00.ZF | RIJQ00.ZF | 2012-07-24 | RI为新的早籼稻合约, 自RI 1307 开始执行 | |
| 玻璃合约 | FG00.ZF | FGJQ00.ZF | 2012-12-03 | ||
| 菜籽粕合约 | RM00.ZF | RMJQ00.ZF | 2012-12-28 | ||
| 油菜籽合约 | RS00.ZF | RSJQ00.ZF | 2012-12-28 | ||
| 动力煤合约 | TC00.ZF | TCJQ00.ZF | 2013-09-26 | 2016-04-08 | TC为旧的动力煤合约,自TC 1605 停止执行 |
| 粳稻谷合约 | JR00.ZF | JRJQ00.ZF | 2013-11-18 | ||
| 甲醇合约 | MA00.ZF | MAJQ00.ZF | 2014-06-17 | MA为新的甲醇合约代码,自MA 1506 开始执行 | |
| 晚籼稻合约 | LR00.ZF | LRJQ00.ZF | 2014-07-08 | ||
| 硅铁合约 | SF00.ZF | SFJQ00.ZF | 2014-08-08 | ||
| 锰硅合约 | SM00.ZF | SMJQ00.ZF | 2014-08-08 | ||
| 动力煤合约 | ZC00.ZF | ZCJQ00.ZF | 2015-05-18 | ZC为新的动力煤合约,自ZC 1605 开始执行 | |
| 棉纱合约 | CY00.ZF | CYJQ00.ZF | 2017-08-18 | ||
| 苹果合约 | AP00.ZF | APJQ00.ZF | 2017-12-22 | ||
| 红枣合约 | CJ00.ZF | CJJQ00.ZF | 2019-04-30 | ||
| 尿素合约 | UR00.ZF | URJQ00.ZF | 2019-08-09 | ||
| 纯碱合约 | SA00.ZF | SAJQ00.ZF | 2019-12-06 | ||
| 短纤合约 | PF00.ZF | PFJQ00.ZF | 2020-10-12 | ||
| 花生合约 | PK00.ZF | PKJQ00.ZF | 2021-02-01 | ||
| 烧碱合约 | SH00.ZF | SHJQ00.ZF | 2023-09-15 | ||
| 对二甲苯合约 | PX00.ZF | PXJQ00.ZF | 2023-09-15 |
关于迅投指数计算规则的说明
指数数据计算规则说明
迅投指数的计算规则为
1. 普通代码上市超过20个交易日后加入计算,债券为5个交易日。 2. 涨停打开超过3个交易日后加入计算。 3. 复牌股涨跌幅超25%不加入计算。 4. 指数成分等权进行计算。
获取沪深指数数据
获取指数代码列表
提示
为了获取指数合约列表,首先需要使用函数get_sector_list来获取需要查询的指数索引。具体的索引信息可以通过键入您感兴趣的索引名(例如:"沪深指数"或"上证指数")等获得。接下来,通过调用函数get_stock_list_in_sector并输入指定的索引名称,你就可以返回相应的指数合约列表。这部分合约列表包含了所有与特定指数相关的现有合约,这对于投资者在进行投资策略分析和决策时具有重要参考价值。
调用方法
# coding=utf-8
from xtquant import xtdata
# 获取板块列表
xtdata.get_sector_list()
# 根据板块列表找查询指数索引名称
xtdata.get_stock_list_in_sector(sector_name)参数
| 字段 | 类型 | 说明 |
|---|---|---|
sector_name | string | 板块名称 |
返回
- 列表,包含指定板块成分代码。
示例与返回值(板块列表)返回值(板块数据)
# coding=utf-8
from xtquant import xtdata
# 获取板块列表
ret_sector_list = xtdata.get_sector_list()
print(f'获取板块目录: {ret_sector_list}')
# 根据板块列表找查询指数索引名称
ret_sector_data = xtdata.get_stock_list_in_sector('沪深指数')
print(f'获取板块合约: {ret_sector_data}')# 板块目录以列表形式,截取部分展示!
['上证指数', '上证新兴', '上证材料', '上证民企', '上证沪企', '上证流通', '上证海外', '上证消费', '上证环保', '上证电信', '上证能源', '上证资源', '上证转债', '上证金融', '上证银行', '上证高新', '上证龙头', '专利领先', '两融标的', '中关村50', '中关村60', '中关村A', '中创100', '中创100R', '中创400', '中创500', ...]# 指数合约以列表形式返回,截取部分展示!
['000001.SH', '000002.SH', '000003.SH', '000004.SH', '000005.SH', '000006.SH', '000007.SH', '000008.SH', '000009.SH', '000010.SH', '000011.SH', '000012.SH', '000013.SH', '000015.SH', '000016.SH', '000017.SH', '000018.SH', '000019.SH', '000020.SH', '000021.SH', '000022.SH', '000025.SH', '000026.SH', '000027.SH', '000028.SH', '000029.SH', '000030.SH',...]获取指数成份股权重
如果你的本地环境中缺少合约权重数据,那么可以先通过函数download_index_weight进行数据下载。下载后,再使用get_index_weight函数来取得相关指数下各个合约的权重信息。这两步操作能帮助你获得详尽而全面的权重数据,进一步增强你对投资环境的理解和掌握,帮助做出更明智的投资决策。
调用方法
# coding=utf-8
from xtquant import xtdata
# 下载权重相关信息
xtdata.download_index_weight()
# 获取权重相关信息
xtdata.get_index_weight(index_code)参数
| 字段 | 类型 | 说明 |
|---|---|---|
index_code | string | 指数代码 |
- index_code:字符串格式,指数代码,例如 000300.SH
返回
- 字典, key为成分代码, value为权重
示例与返回值
# coding=utf-8
from xtquant import xtdata
# 下载权重相关信息
xtdata.download_index_weight()
# 获取权重相关信息
ret_weight_data = xtdata.get_index_weight('000300.SH')
print(ret_weight_data){'000001.SZ': 0.583, '000002.SZ': 0.501, '000063.SZ': 0.61, '000069.SZ': 0.096, ...}获取指数行情数据
获取行情数据,最新行情需要数据订阅subscribe_quote。如果您需要获取历史数据,可以使用download_history_data函数下载相关数据,然后使用get_market_data_ex函数提取所需的信息。这样,使用者就能获得最新和详细的合约最新数据,有助于做出更精准的投资决策。
调用方法
# coding=utf-8
from xtquant import xtdata
# 订阅指定合约最新行情
xtdata.subscribe_quote(stock_code, period='', start_time='', end_time='', count=0, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data(stock_code, period, start_time='', end_time='')
# 获取指定合约历史行情
xtdata.get_market_data_ex(field_list = [], stock_list = [], period = '', start_time = '', end_time = '', count = -1, dividend_type = 'none', fill_data = True)参数
- xtdata.subscribe_quote
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | str | 股票代码 |
start_time | str | 开始时间格式YYYYMMDD/YYYYMMDDhhmmss |
end_time | str | 结束时间 |
count | int | 数量 -1全部/n: 从结束时间向前数n个 |
period | str | 周期 分笔"tick" 分钟线"1m"/"5m" 日线"1d" |
- xtdata.get_market_data_ex
| 参数名称 | 类型 | 描述 |
|---|---|---|
field_list | list | 表示所有字段。不同的数据周期,取值范围有所不同。 |
stock_list | list | 合约代码列表 |
period | str | 数据周期,默认是当前主图周期。可选值如下: 'tick' (分笔线), '1d' (日线), '1m' (1分钟线), '5m' (5分钟线), '15m' (15分钟线), 'l2quote' (Level2行情快照), 'l2quoteaux' (Level2行情快照补充), 'l2order' (Level2逐笔委托), 'l2transaction' (Level2逐笔成交),'l2transactioncount' (Level2大单统计), 'l2orderqueue' (Level2委买委卖队列) |
start_time | str | 开始时间。为空时默认为最早时间。时间格式为'20201231'或'20201231093000' |
end_time | str | 结束时间。为空时默认为最新时间。时间格式为'20201231'或'20201231235959' |
count | int | 数据最大个数。-1表示不做个数限制 |
dividend_type | str | 复权方式,默认是当前主图复权方式。可选值包括: 'none' (不复权), 'front'(前复权), 'back' (后复权), 'front_ratio' (等比前复权), 'back_ratio' (等比后复权) |
fill_data | bool | 停牌填充方式 |
返回值
- period为
1m5m1dK线周期时 - 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick分笔周期时 - 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time增序排列
示例与返回值
# coding=utf-8
from xtquant import xtdata
# 获取迅投板块指数代码列表
xt_sector_index_list = xtdata.get_stock_list_in_sector("迅投一级行业板块加权指数")
# 获取迅投板块指数合约信息
xt_sector_index_info = xtdata.get_instrument_detail(xt_sector_index_list[0])
xt_sector_index = xt_sector_index_list[0]
print(xt_sector_index_info)
# 订阅合约数据
xtdata.subscribe_quote(xt_sector_index, period='1d', start_time='', end_time='20231026', count=1, callback=None)
# 下载指定合约历史行情
xtdata.download_history_data(xt_sector_index, '1d', '20231020', '20231026')
# 获取指定合约历史行情
day_data = xtdata.get_market_data_ex(field_list=[], stock_list=[xt_sector_index], period='1d', start_time='',end_time='20231026', count=5, dividend_type='none', fill_data=True)
print(day_data){'ExchangeID': 'BKZS', 'InstrumentID': '260992', 'InstrumentName': 'SW1农林牧渔加权', 'ProductID': '', 'ProductName': '', 'ExchangeCode': '260992', 'UniCode': '260992', 'CreateDate': '0', 'OpenDate': '0', 'ExpireDate': 0, 'PreClose': 26232.32, 'SettlementPrice': 1.7976931348623157e+308, 'UpStopPrice': 1.7976931348623157e+308, 'DownStopPrice': 1.7976931348623157e+308, 'FloatVolume': 1.7976931348623157e+308, 'TotalVolume': 1.7976931348623157e+308, 'LongMarginRatio': 1.7976931348623157e+308, 'ShortMarginRatio': 1.7976931348623157e+308, 'PriceTick': 0.01, 'VolumeMultiple': 1, 'MainContract': 2147483647, 'LastVolume': 2147483647, 'InstrumentStatus': 2147483647, 'IsTrading': False, 'IsRecent': False, 'ProductTradeQuota': None, 'ContractTradeQuota': None, 'ProductOpenInterestQuota': None, 'ContractOpenInterestQuota': None}
{'260992.BKZS': time open high low close volume
20231020 1697731200000 24602.81 24703.36 24401.10 24472.14 11904789
20231023 1697990400000 24403.87 24668.01 24071.37 24185.03 12184223
20231024 1698076800000 24197.98 24566.55 24095.19 24539.91 11494663
20231025 1698163200000 24717.87 25125.34 24717.87 24973.70 12586106
20231026 1698249600000 24887.32 25203.12 24809.58 25138.33 12035455
amount settelementPrice openInterest preClose suspendFlag
20231020 1.012435e+10 0.0 15 24683.79 0
20231023 9.617285e+09 0.0 15 24472.14 0
20231024 9.028663e+09 0.0 15 24185.03 0
20231025 1.105085e+10 0.0 15 24539.91 0
20231026 1.008865e+10 0.0 15 24973.70 0 }获取指数tick数据
获取全推tick数据的函数是用户主动调用的工具。所谓"全推tick数据",指的是以tick(最小报价单位)为单位的实时市场数据,包括每一笔交易的信息,如成交金额、成交量、收盘价等。通过主动调用这个函数,用户能实时获得最新的市场动态,从而做出及时和准确的投资决策。
调用方法
# coding=utf-8
from xtquant import xtdata
xtdata.get_full_tick(code_list)参数
| 字段 | 类型 | 说明 |
|---|---|---|
code_list | list | 合约列表 |
- code_list:字符串格式, 例如 \['000001.SH', '000300.SH'\]
返回值
- dict 数据集 { stock1 : tick1, stock2 : tick2, ... }, tick字段如下
| 字段 | 类型 | 说明 |
|---|---|---|
| timetag | str | 时间 |
| lastPrice | float | 最新价 |
| open | float | 开盘价 |
| low | float | 最低价 |
| amount | float | 成交额 |
| volume | int | 成交总量 |
| pvolume | int | 原始成交总量 |
| openInt | int | 持仓量 |
| stockStatus | str | 证券状态 |
| lastClose | float | 前收盘价 |
| lastSettlementPrice | float | 前结算价 |
| settlementPrice | float | 今结算价 |
| askPrice | list | 多档委卖价 |
| bidPrice | list | 多档委买价 |
| askVol | list | 多档委卖量 |
| bidVol | list | 多档委买量 |
示例与返回值
# coding=utf-8
from xtquant import xtdata
# 获取迅投板块指数代码列表
xt_sector_index_list = xtdata.get_stock_list_in_sector("迅投一级行业板块加权指数")
# 获取迅投板块指数信息
xt_sector_index_info = xtdata.get_instrument_detail(xt_sector_index_list[0])
# 获取迅投板块指数tick数据
ret_full_tick = xtdata.get_full_tick([xt_sector_index])
print(ret_full_tick){'260992.BKZS': {'timetag': '20231114 15:00:09',
'lastPrice': 26327.94,
'open': 26190.7,
'high': 26430.76,
'low': 26186.34,
'lastClose': 26232.32,
'amount': 7523740134,
'volume': 9392934,
'pvolume': 9392934,
'stockStatus': 5,
'openInt': 15,
'settlementPrice': 0,
'lastSettlementPrice': 0,
'askPrice': [0, 0, 0, 0, 0],
'bidPrice': [0, 0, 0, 0, 0],
'askVol': [0, 0, 0, 0, 0],
'bidVol': [0, 0, 0, 0, 0]}}获取迅投商品市场指数行情数据
提示
1.获取迅投商品市场指数行情数据,如要获取历史数据需要进行下载download_history_data,再根据函数get_market_data_ex获取
2. VIP 权限数据
调用方法
# coding=utf-8
from xtquant import xtdata
# 下载合约
xtdata.download_history_data(stock_code,period = "1d")
# 获取迅投商品市场指数行情数据
xtdata.get_market_data_ex([],[stock_code],period='1d')参数
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | str | 合约列表 |
返回值
- period为
1m5m1dK线周期时 - 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick分笔周期时 - 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time增序排列
示例与返回值
# coding=utf-8
from xtquant import xtdata
xtdata.download_history_data('290000.BKZS',period = "1d")
# 获取迅投商品市场指数行情数据
xtdata.get_market_data_ex([],['290000.BKZS'],period='1d'){'290000.BKZS': time open high low close volume
19960102 820512000000 138.55 138.55 138.55 138.55 0
19960103 820598400000 137.86 137.86 137.86 137.86 0
19960104 820684800000 137.86 137.86 137.86 137.86 0
19960105 820771200000 137.90 137.90 137.90 137.90 0
19960108 821030400000 137.82 137.82 137.82 137.82 0
... ... ... ... ... ... ...
20231017 1697472000000 240.20 240.23 238.14 238.40 23597871
20231018 1697558400000 238.39 239.81 237.67 237.89 24646472
20231019 1697644800000 238.02 239.21 237.31 238.64 24785048
20231020 1697731200000 238.60 239.34 236.77 237.10 25381186
20231023 1697990400000 237.18 237.45 234.96 235.61 27538299
amount settelementPrice openInterest preClose suspendFlag
19960102 0.000000e+00 0.0 0 138.69 0
19960103 0.000000e+00 0.0 0 138.55 0
19960104 0.000000e+00 0.0 0 137.86 0
19960105 0.000000e+00 0.0 0 137.86 0
19960108 0.000000e+00 0.0 0 137.90 0
... ... ... ... ... ...
20231017 1.400718e+12 0.0 13 239.99 0
20231018 1.499089e+12 0.0 13 238.40 0
20231019 1.449394e+12 0.0 13 237.89 0
20231020 1.513323e+12 0.0 13 238.64 0
20231023 1.549690e+12 0.0 13 237.10 0
[6742 rows x 11 columns]}Token 使用相关
无法连接 xtquant 服务
描述:
Exception: 无法连接xtquant服务,请检查QMT-投研版或QMT-极简版是否开启
提示
您未成功启动数据服务或请检查端口是否正确填写port=XXXXX。
Token 失效后是否再次订阅
描述:
如果token刷新失效后,换成新的token,是否需要再次进行订阅操作?
提示
需要让xtdatacenter调整token后重新连接行情,这个可以直接重启xtdatacenter的进程,这会导致下游的xtdata连接断开,断开后重连上需要重新订阅
获取行情相关
k 线数据缺失
描述:
获取到的数据 1m 的 K 线数据缺失。
提示
如果是get_market_data_ex获取K线可以用fill_data=True来填充。
这个填充现在只对 k 线这种标准的数据做了,其他的特色数据没有处理填充的操作。
因此其他函数如果在获取k线数据的时候,如果存在数据缺失,用fill_data=True来填充,并不适用。
订阅数据相关
描述:
盘中订阅完行情全推后,切换行情站点需要重新订阅吗?
提示
1. 对于内置python策略来说,需要重新订阅 2. 对于xtquant.xtdata来说,不需要重新订阅,除非xtdata断开
数据更新时间相关
描述:
收盘后什么时候能够下载到完整的当日行情数据
提示
股票收盘有两个时间点
大部分股票是 15:00,在交易所撮合尾盘竞价成交后下发行情,一般会延后几秒,大约是15:00:03左右
创业板、科创板有盘后定价交易,如果需要获取这部分数据的话,在15:30收盘之后获取,不需要的话也在15:00获取
期货一般在15:00收盘后有最新的收盘价,在16:30左右有结算价