小果(微信:xg_quant)量化交易平台助手技能。小果量化是一个专业的量化交易系统,提供完整的回测、模拟交易、社区策略分享等功能。 【核心功能】 - 📊 历史行情数据获取(股票、ETF、可转债) - 📈 多维度因子数据提取(技术指标、Alpha因子、动量因子等) - 💰 财务数据分析(资产负债表、利润表、现金流量表等) - 🔄 多种策略回测(定投、动量、资产配置、网格、海龟、均值方差等) - 🤖 模拟交易和社区策略管理 - 📉 多标的量化分析(相关性矩阵、协方差矩阵、投资组合优化) - 📊 股票组合收益分析(绩效指标、夏普比率、最大回撤等) - ⏰ 分钟级K线数据
Coding
小果全能大QMT量化交易助手
Try it小果全能大QMT量化交易助手 - 专业级QMT策略开发全能助手 本助手是专为「迅投QMT极速策略交易系统」打造的量化交易策略开发专家。由小果(微信:xg_quant)精心打造,深度封装了QMT平台的全部API接口、运行机制、数据结构和实战经验,能够根据用户的自然语言描述,自动生成从基础到高级、从回测到实盘的完整量化交易策略代码。 【核心功能矩阵】 ✅ 策略开发:根据需求描述自动生成QMT策略代码,支持股票/期货/期权/ETF/可转债/两融等多品种 ✅ 策略回测:生成完整的回测模型代码,包含历史数据获取、撮合规则、绩效分析 ✅ 实盘交易:生成实盘模型代码,支持逐K线生效和立即下单两种模式 ✅
What it does
小果全能大QMT量化交易助手 - 专业级QMT策略开发全能助手 本助手是专为「迅投QMT极速策略交易系统」打造的量化交易策略开发专家。由小果(微信:xg_quant)精心打造,深度封装了QMT平台的全部API接口、运行机制、数据结构和实战经验,能够根据用户的自然语言描述,自动生成从基础到高级、从回测到实盘的完整量化交易策略代码。 【核心功能矩阵】 ✅ 策略开发:根据需求描述自动生成QMT策略代码,支持股票/期货/期权/ETF/可转债/两融等多品种 ✅ 策略回测:生成完整的回测模型代码,包含历史数据获取、撮合规则、绩效分析 ✅ 实盘交易:生成实盘模型代码,支持逐K线生效和立即下单两种模式 ✅ 代码检查:自动检测QMT策略常见错误(ContextInfo回滚、全局变量、白名单、阻塞操作等) ✅ 策略模板:提供双均线、MACD、RSI、布林带、网格交易、多因子选股等多种内置模板 ✅ 函数查询:详细解释QMT全部API函数的用法、参数和示例 ✅ 问题诊断:针对QMT运行报错提供解决方案和修复建议 ✅ 数据管理:提供历史数据下载、财务数据获取、实时行情订阅的完整方案 版本:2.0.0 作者:小果 微信:xg_quant 更新日期:2026-08-31
The skill document
小果大QMT量化交易系统助手
完整策略开发手册 v2.0 - 全函数库终极完整版
📖 第一部分:系统概述与核心规范
1.1 QMT系统简介
QMT(极速策略交易系统)是迅投科技推出的专业量化交易平台,内置Python 3.6运行环境,提供行情数据获取与交易下单两大核心功能。
1.2 QMT运行机制对比
| 机制类型 | 函数/方法 | 触发方式 | 适用场景 |
|---|---|---|---|
| 逐K线驱动 | handlebar | 历史K线逐根回放;盘中每个tick触发 | 传统趋势策略,需要回测验证 |
| 事件驱动 | subscribe_quote | 订阅品种新分笔到达时触发 | 盘中实时监控,高频交易 |
| 定时任务 | run_time/schedule_run | 固定时间间隔触发 | 轮询监控,固定频率执行 |
1.3 强制编码规范
#coding:gbk # 【必须】代码第一行,否则中文报错
# 【必须】缩进统一使用4个空格或Tab
# 【必须】必须定义 init 和 handlebar 函数
# 【禁止】使用 time.sleep()、死循环等阻塞操作
# 【禁止】在 ContextInfo 对象上存储状态
# 【推荐】使用全局类实例 g = G() 存储状态
1.4 回测与实盘核心差异
维度 回测模式 实盘模式
数据来源 本地历史数据 (subscribe=False) 实时订阅数据 (subscribe=True)
撮合规则 价格在K线高低点内按指定价,否则按收盘价 交易所实际规则:价格笼子、T+1、数量限制
成交确认 立即按规则撮合 等待交易所回报,异步处理
状态保存 每次handlebar调用自动保存 K线结束时的信号才生效,需用全局变量
策略模板
#coding:gbk
"""
策略名称: {策略名称}
策略描述: {策略描述}
作者: 小果
微信: xg_quant
创建日期: {日期}
运行模式: 回测/实盘
"""
# ==================== 导入依赖库 ====================
import pandas as pd
import numpy as np
import talib
import datetime
import time
import json
import os
import math
import random
from collections import defaultdict
# ==================== 全局变量定义 ====================
class G():
"""
全局状态存储类
注意:QMT的ContextInfo对象有逐K线回滚机制,不能直接在上面存属性
所有策略状态必须使用全局类实例存储
"""
pass
g = G() # 实例化全局变量
# ==================== 必须函数1: init ====================
def init(ContextInfo):
"""
【必须定义】策略初始化函数,策略启动时仅执行一次
参数:
ContextInfo: QMT上下文对象,包含K线信息和系统接口
功能说明:
1. 初始化策略参数和变量
2. 设置交易标的和资金账号
3. 订阅行情数据(如需)
4. 注册定时任务(如需)
5. 设置回测起止时间(回测模式)
6. 设置回测初始资金(回测模式)
7. 设置股票池和板块
8. 初始化状态变量
注意事项:
- init执行完成前部分接口无法使用(如get_trading_dates)
- 非VIP用户订阅数量有限制(通常300个)
- 可使用ContextInfo.start/end设置回测区间
- 可使用ContextInfo.capital设置初始资金
"""
# -------- 1. 设置交易标的 --------
g.stock = ContextInfo.stockcode + '.' + ContextInfo.market
g.stock_name = ContextInfo.get_stock_name(g.stock)
# -------- 2. 设置策略参数 --------
g.fast_line = 10 # 快线周期
g.slow_line = 20 # 慢线周期
g.trade_amount = 10000 # 每次交易金额
g.stop_loss = -0.05 # 止损比例
g.take_profit = 0.10 # 止盈比例
# -------- 3. 设置资金账号 --------
if ContextInfo.do_back_test:
g.accountid = "testS" # 回测账号
else:
g.accountid = account # 实盘账号(模型交易界面自动传入)
g.account_type = accountType
# -------- 4. 设置回测参数 --------
if ContextInfo.do_back_test:
ContextInfo.start = "2020-01-01 00:00:00"
ContextInfo.end = "2023-12-31 00:00:00"
ContextInfo.capital = 1000000
# -------- 5. 初始化状态变量 --------
g.position = 0 # 当前持仓数量
g.avg_price = 0 # 持仓均价
g.trade_count = 0 # 交易次数
g.waiting_list = [] # 待确认委托列表
g.order_ref = {} # 委托记录
print(f"策略初始化完成,交易标的: {g.stock} {g.stock_name}")
# ==================== 必须函数2: handlebar ====================
def handlebar(ContextInfo):
"""
【必须定义】核心行情处理函数
调用时机:
- 回测模式:历史K线从左向右逐根调用
- 实盘模式:每个新tick(约3秒)触发调用
功能说明:
1. 获取行情数据
2. 计算技术指标
3. 判断交易信号
4. 执行下单操作
5. 更新策略状态
"""
# -------- 1. 跳过实盘历史K线 --------
if not ContextInfo.do_back_test and not ContextInfo.is_last_bar():
return
# -------- 2. 获取当前K线信息 --------
bar_date = timetag_to_datetime(
ContextInfo.get_bar_timetag(ContextInfo.barpos),
'%Y%m%d%H%M%S'
)
# -------- 3. 获取行情数据 --------
data = ContextInfo.get_market_data_ex(
fields=['open', 'high', 'low', 'close'],
stock_list=[g.stock],
period=ContextInfo.period,
count=max(g.fast_line, g.slow_line) + 10,
dividend_type='front_ratio',
fill_data=True,
subscribe=not ContextInfo.do_back_test
)
if g.stock not in data or len(data[g.stock]) < max(g.fast_line, g.slow_line):
return
close_prices = data[g.stock]['close'].values
current_price = close_prices[-1]
# -------- 4. 计算技术指标 --------
fast_ma = np.mean(close_prices[-g.fast_line:])
slow_ma = np.mean(close_prices[-g.slow_line:])
# -------- 5. 获取账户与持仓信息 --------
account_info = get_trade_detail_data(g.accountid, 'stock', 'account')
if not account_info:
return
available_cash = account_info[0].m_dAvailable
positions = get_trade_detail_data(g.accountid, 'stock', 'position')
pos_dict = {p.m_strInstrumentID + '.' + p.m_strExchangeID: p.m_nVolume for p in positions}
g.position = pos_dict.get(g.stock, 0)
# -------- 6. 交易信号判断 --------
signal = None
if g.position == 0 and fast_ma > slow_ma:
signal = 'buy'
elif g.position > 0 and fast_ma < slow_ma:
signal = 'sell'
# -------- 7. 执行交易 --------
if signal == 'buy':
vol = int(g.trade_amount / current_price / 100) * 100
if vol > 0 and available_cash > g.trade_amount:
msg = f"{bar_date} 买入 {vol}股"
passorder(23, 1101, g.accountid, g.stock, 5, current_price, vol,
'小果策略', 2 if not ContextInfo.do_back_test else 0, msg, ContextInfo)
g.waiting_list.append(msg)
g.trade_count += 1
elif signal == 'sell' and g.position > 0:
msg = f"{bar_date} 卖出 {g.position}股"
passorder(24, 1101, g.accountid, g.stock, 5, current_price, g.position,
'小果策略', 2 if not ContextInfo.do_back_test else 0, msg, ContextInfo)
g.waiting_list.append(msg)
g.trade_count += 1
# ==================== 可选函数1: after_init ====================
def after_init(ContextInfo):
"""
【可选定义】后初始化函数,在init完成后、handlebar前执行一次
用于执行一次性操作、立即下单(需quickTrade=2)
"""
# 可在此执行立即下单
# passorder(23, 1101, g.accountid, g.stock, 5, -1, 100, '开盘买入', 2, '', ContextInfo)
pass
# ==================== 可选函数2: stop ====================
def stop(ContextInfo):
"""
【可选定义】策略停止函数,策略被停止时调用
注意:stop被调用时交易连接已断开,不能下单
"""
print(f"策略停止,共交易{g.trade_count}次")
############################
函数名 必须 调用时机 功能说明 参数 注意事项
init(ContextInfo) ✅ 策略启动时执行一次 初始化策略参数、订阅行情、注册定时器、设置回测参数 ContextInfo 部分接口在init中不可用
handlebar(ContextInfo) ✅ 历史K线逐根调用;实盘每个tick调用 核心策略逻辑:获取数据→计算指标→判断信号→执行下单 ContextInfo 实盘中只有K线结束的信号才生效
after_init(ContextInfo) ❌ init完成后、handlebar前执行一次 执行一次性操作、立即下单、调用init中不支持的函数 ContextInfo 可调用get_trading_dates等函数
stop(ContextInfo) ❌ 策略被停止时调用 清理资源、反订阅行情、输出日志 ContextInfo 此时交易连接已断开,不能下单
##########################################
ContextInfo核心属性
属性名 类型 功能说明 使用场景
ContextInfo.start str 回测开始时间,格式'%Y-%m-%d %H:%M:%S' 设置回测起始日期
ContextInfo.end str 回测结束时间 设置回测截止日期
ContextInfo.capital float 回测初始资金,默认1000000 设置回测资金
ContextInfo.period str 当前K线周期,如'1d','1m','5m'等 获取策略运行周期
ContextInfo.barpos int 当前K线索引号,从0开始 获取当前处理到哪根K线
ContextInfo.stockcode str 当前主图代码 获取主图品种代码
ContextInfo.market str 当前主图市场 获取主图市场代码
ContextInfo.dividend_type str 当前复权方式 获取复权设置
ContextInfo.benchmark str 回测基准标的代码 获取回测基准
ContextInfo.do_back_test bool 是否为回测模式 判断运行模式
ContextInfo.time_tick_size int 当前图K线数量 获取K线总数
3.3 行情数据函数(Data Functions)
📊 核心行情获取函数
函数名 功能 参数详解 返回值 使用场景
get_market_data_ex(fields, stock_list, period, start_time, end_time, count, dividend_type, fill_data, subscribe) 最核心行情函数,获取K线、Tick、Level2等数据 fields: ['open','high','low','close'];stock_list: ['000001.SZ'];period: 'tick','1m','5m','15m','30m','1h','1d','1w','1mon';start_time/end_time: '20230101'或'20230101093000';count: 数据条数;dividend_type: 'none','front','back','front_ratio','back_ratio';fill_data: True/False;subscribe: True实时/False本地 dict{stock_code: DataFrame} 几乎所有行情获取场景
get_full_tick(stock_code) 获取最新分笔快照(含盘口买卖盘) stock_code: ['000001.SZ'] dict{stock_code: {time,lastPrice,open,high,low,lastClose,amount,volume,openInt,askPrice,askVol,bidPrice,bidVol}} 获取最新价、买卖盘、涨跌幅
get_local_data(stock_code, start_time, end_time, period, divid_type, count) 仅取本地历史数据(不订阅不更新) 同get_market_data_ex dict{timestamp: {open,high,low,close,volume,amount}} 回测或离线分析
get_history_data(len, period, field, dividend_type, skip_paused) ⚠️已弃用 使用get_market_data_ex替代 - 旧版兼容
get_market_data(fields, stock_code, start_time, end_time, skip_paused, period, dividend_type, count) ⚠️已弃用 使用get_market_data_ex替代 - 旧版兼容
📊 Level2行情数据
函数名 功能 period参数 返回数据
get_market_data_ex Level2逐笔成交 period='l2transaction' time,price,volume,amount,tradeIndex,buyNo,sellNo,tradeType,tradeFlag
get_market_data_ex Level2逐笔委托 period='l2order' time,price,volume,entrustNo,entrustType,entrustDirection
get_market_data_ex Level2十档快照 period='l2quote' time,lastPrice,open,high,low,askPrice(10档),askVol(10档),bidPrice(10档),bidVol(10档)
get_market_data_ex Level2大单统计 period='l2transactioncount' bidNumber,offNumber,ddx,ddy,ddz等
get_market_data_ex Level2委买委卖队列 period='l2orderqueue' 委买委卖队列数据
3.4 行情订阅函数(Subscribe Functions)
函数名 功能 参数详解 返回值 使用场景
subscribe_quote(stock_code, period, dividend_type, result_type, callback) 订阅指定品种行情,触发回调函数 stock_code: '000001.SZ';period: 'tick','1m','5m','1d';dividend_type: 复权方式;result_type: 'DataFrame','dict','list';callback: 自定义回调函数 int: 订阅号 事件驱动策略、盘中实时监控
subscribe_whole_quote(code_list, callback) 订阅全推数据(全市场分笔) code_list: ['SH','SZ'];callback: 数据推送回调 int: 订阅号 VIP用户实时全市场监控
unsubscribe_quote(subId) 反订阅行情释放资源 subId: subscribe_quote返回的订阅号 bool: 是否成功 策略停止时清理订阅
3.5 财务数据函数(Financial Data Functions)
函数名 功能 参数详解 返回值 使用场景
get_financial_data(fieldList, stockList, startDate, endDate, report_type) 获取财务数据(资产负债表、利润表、现金流等) fieldList: ['ASHAREBALANCESHEET.fix_assets','利润表.净利润'];stockList: ['600000.SH'];report_type: 'announce_time'或'report_time' Series/DataFrame/Panel 基本面分析、因子选股
get_raw_financial_data(fieldList, stockList, startDate, endDate, report_type) 获取原始财务数据(不填充交易日) 同get_financial_data Series/DataFrame/Panel 获取未经处理的财报数据
get_last_volume(stockcode) 获取最新流通股本 stockcode: '000001.SZ' int: 流通股本 计算市值、换手率
get_total_share(stockcode) 获取总股本 stockcode: '000001.SZ' int: 总股本 计算每股指标
get_turnover_rate(stock_list, startTime, endTime) 获取换手率 stock_list: ['000001.SZ'] DataFrame 计算换手率指标
3.6 合约信息函数(Contract Info Functions)
函数名 功能 参数详解 返回值 使用场景
get_instrument_detail(stockcode) 获取合约详细信息 stockcode: '000001.SZ' dict: ExchangeID,InstrumentID,InstrumentName,ProductID,ProductName,OpenDate,ExpireDate,PreClose,UpStopPrice,DownStopPrice,FloatVolume,TotalVolume,PriceTick,VolumeMultiple,MainContract,IsTrading等 获取涨停跌停价、合约乘数、上市日期
get_stock_list_in_sector(sectorname) 获取板块成份股 sectorname: '沪深300' list: 成份股代码列表 构建股票池
get_stock_name(stockcode) 获取股票名称 stockcode: '000001.SZ' str: 股票名称 获取名称
get_open_date(stockcode) 获取股票上市日期 stockcode: '000001.SZ' number: 上市日期 判断次新股
get_main_contract(codemarket) 获取期货主力合约 codemarket: 'IF00.IF' str: 主力合约代码 期货交易
get_contract_multiplier(contractcode) 获取合约乘数 contractcode: 'rb2401.SF' int: 合约乘数 期货价值计算
get_contract_expire_date(codemarket) 获取期货合约到期日 codemarket: 'IF2311.IF' str: 到期日 期货移仓换月
get_his_contract_list(market) 获取已退市合约列表 market: 'SH' list: 退市合约代码 获取历史数据
3.7 期权函数(Option Functions)
函数名 功能 参数详解 返回值
get_option_detail_data(optioncode) 获取期权品种详细信息 optioncode: '10002235.SHO' dict: ExchangeID,InstrumentID,ExpireDate,OptExercisePrice,OptUndlCode等
get_option_list(undl_code, dedate, opttype, isavailable) 获取期权列表 undl_code: '510300.SH';dedate: '202101'或'20210104';opttype: 'CALL'/'PUT';isavailable: True/False list: 期权合约列表
get_option_undl_data(undl_code_ref) 获取期权标的对应期权品种 undl_code_ref: '510300.SH' list或dict
bsm_price(optionType,objectPrices,strikePrice,riskFree,sigma,days,dividend) BS模型计算期权理论价格 optionType: 'C'/'P' float或list
bsm_iv(optionType,objectPrices,strikePrice,optionPrice,riskFree,days,dividend) BS模型计算隐含波动率 optionType: 'C'/'P' double
3.8 板块操作函数(Sector Functions)
函数名 功能 参数详解 返回值
create_sector(parent_node, sector_name, overwrite) 创建板块 parent_node: '';sector_name: '我的板块' str: 实际创建的板块名
create_sector_folder(parent_node, folder_name, overwrite) 创建板块目录节点 parent_node: '';folder_name: '新建分类' str: 实际创建的节点名
get_sector_list(node) 获取板块目录信息 node: '我的' list: [[板块列表],[目录列表]]
reset_sector_stock_list(sector, stock_list) 设置板块成分股 sector: '我的自选';stock_list: ['000001.SZ'] bool: 成功/失败
remove_stock_from_sector(sector, stock_code) 移除板块成分股 sector: '我的自选';stock_code: '000001.SZ' bool: 成功/失败
add_stock_to_sector(sector, stock_code) 添加板块成分股 sector: '我的自选';stock_code: '000001.SZ' bool: 成功/失败
3.9 数据下载函数(Data Download Functions)
函数名 功能 参数详解 使用场景
download_history_data(stockcode, period, startTime, endTime) 下载指定合约历史行情数据 stockcode: '000001.SZ';period: '1d','1m','5m','tick';startTime: '20230101' 回测前下载历史数据
download_history_data(stockcode, period, startTime, endTime, incrementally=True) 增量下载历史数据 同上,增加增量下载参数 每日更新数据
3.10 交易下单函数(Trade Order Functions)
函数名 功能 参数详解 返回值 使用场景
passorder(opType, orderType, accountid, orderCode, prType, price, volume, strategyName, quickTrade, userOrderId, ContextInfo) 核心综合下单函数 opType: 23买入/24卖出/27融资买入/33担保品买入;orderType: 1101单股/1102金额/1113比例;prType: 5最新价/11指定价/14对手价;quickTrade: 0逐K生效/1最新K立即/2立即下单 无 所有交易场景
algo_passorder(opType, orderType, accountid, orderCode, prType, price, volume, strategyName, quickTrade, userOrderId, userOrderParam, ContextInfo) 算法交易(拆单)函数 同passorder,增加userOrderParam拆单参数 无 大额交易拆单
smart_algo_passorder(opType, orderType, accountid, orderCode, prType, price, volume, strategyName, quickTrade, userOrderId, smartAlgoType, limitOverRate, minAmountPerOrder, targetPriceLevel, startTime, endTime, limitControl, ContextInfo) 智能算法交易(VWAP/TWAP) smartAlgoType: 'VWAP','TWAP';limitOverRate: 量比;targetPriceLevel: 目标价格 无 智能算法交易
cancel(orderId, accountId, accountType, ContextInfo) 撤销委托 orderId: 委托号;accountType: 'STOCK'/'FUTURE'/'CREDIT' bool: 是否成功 撤单
cancel_task(taskId, accountId, accountType, ContextInfo) 撤销任务 taskId: 任务号 bool: 是否成功 撤销算法交易任务
pause_task(taskId, accountId, accountType, ContextInfo) 暂停任务 taskId: 任务号 bool: 是否成功 暂停算法交易
resume_task(taskId, accountId, accountType, ContextInfo) 继续任务 taskId: 任务号 bool: 是否成功 恢复算法交易
3.11 交易查询函数(Trade Query Functions)
函数名 功能 参数详解 返回值 使用场景
get_trade_detail_data(accountID, strAccountType, strDatatype, strategyName) 核心交易查询函数 accountID: 资金账号;strAccountType: 'STOCK','FUTURE','CREDIT';strDatatype: 'account','position','order','deal','task';strategyName: 可选,按策略名筛选 list: 对应对象列表 获取资金、持仓、委托、成交信息
get_last_order_id(accountID, strAccountType, strDatatype, strategyName) 获取最新委托号 同get_trade_detail_data str: 委托号 获取最新委托ID
get_value_by_order_id(orderId, accountID, strAccountType, strDatatype) 根据委托号获取委托信息 orderId: 委托号 Order或Deal对象 查询特定委托状态
get_history_trade_detail_data(accountID, strAccountType, strDatatype, strStartDate, strEndDate) 查询历史交易明细 增加strStartDate和strEndDate list: 历史交易数据 查询历史交易记录
3.12 两融函数(Credit Functions)
函数名 功能 参数详解 返回值
get_assure_contract(accId) 获取两融担保标的明细 accId: 信用账户 list: StkSubjects对象列表
get_enable_short_contract(accId) 获取可融券明细 accId: 信用账户 list: CreditSloEnableAmount对象列表
query_credit_account(accountId, seq, ContextInfo) 查询信用账户明细 accountId: 两融账号;seq: 查询序列号 需配合credit_account_callback
query_credit_opvolume(accountId, stockCode, opType, prType, price, seq, ContextInfo) 查询两融最大可下单量 stockCode: 股票代码或列表 需配合credit_opvolume_callback
get_unclosed_compacts(accountID, accountType) 获取未了结负债合约 accountType: 'CREDIT' list: 负债合约列表
get_closed_compacts(accountID, accountType) 获取已了结负债合约 accountType: 'CREDIT' list: 负债合约列表
3.13 期权持仓函数(Option Position Functions)
函数名 功能 参数详解 返回值
get_option_subject_position(accountID) 取期权标的持仓 accountID: 账号 list: CLockPosition对象列表
get_comb_option(accountID) 取期权组合持仓 accountID: 账号 list: CStkOptCombPositionDetail对象列表
3.14 辅助工具函数(Utility Functions)
函数名 功能 参数详解 返回值
timetag_to_datetime(timetag, format) QMT时间戳转日期时间 timetag: QMT时间戳;format: '%Y%m%d%H%M%S' str: 日期时间字符串
get_trading_calendar(market, start_time, end_time) 获取交易日历 market: 'SH';start_time: '20170101' list: 交易日列表
get_trading_dates(stockcode, start_date, end_date, count, period) 获取K线交易日信息 同get_market_data_ex list: 交易日列表
get_ipo_data(type) 获取当日新股新债信息 type: 'STOCK'/'BOND'/空 dict: 新股新债数据
get_new_purchase_limit(accid) 获取新股申购额度 accid: 资金账号 dict: 申购额度
get_st_status(stockcode) 获取历史ST状态 stockcode: '000004.SZ' dict: ST历史
get_his_st_data(stockcode) 获取股票ST历史 stockcode: '000004.SZ' dict: ST历史
3.15 画图函数(Plotting Functions)
函数名 功能 参数详解 使用场景
ContextInfo.paint(name, value, index, line_style, color, limit) 在副图上画指标线 name: 指标名;value: 数值;line_style: 0曲线/42柱状线;color: 颜色;limit: 'noaxis'/'nodraw' 回测可视化
ContextInfo.draw_text(condition, position, text) 在图形上显示文字 condition: 条件;position: 位置;text: 文字 标记买卖信号
ContextInfo.draw_number(cond, height, number, precision) 在图形上显示数字 precision: 小数位数 显示数值
ContextInfo.draw_vertline(cond, number1, number2, color, limit) 绘制垂直线 同上 标记区间
ContextInfo.draw_icon(cond, height, type) 绘制小图标 type: 0矩形/1椭圆 标记信号
ContextInfo.set_output_index_property(index_name, draw_style, color, noaxis, nodraw, noshow) 设定指标绘制属性 index_name: 指标名称 控制指标显示
3.16 ETF函数(ETF Functions)
函数名 功能 参数详解 返回值
get_etf_info(stockcode) 获取ETF申赎清单 stockcode: '510050.SH' dict: 成份股信息
get_etf_iopv(stockcode) 获取ETF基金份额参考净值 stockcode: '510050.SH' float: IOPV
#######################################################
北向资金函数(Northbound Fund Functions)
函数名 功能 参数详解 返回值
get_north_finance_change(period) 获取北向资金数据 period: '1d'/'1m' dict: 北向资金数据
get_hkt_details(stockcode) 获取北向持股明细 stockcode: '600000.SH' dict: 持股明细
get_hkt_statistics(stockcode) 获取北向持股统计 stockcode: '600000.SH' dict: 持股统计
get_hkt_exchange_rate(accountID, accountType) 获取沪深港通汇率 accountType: 'HUGANGTONG'/'SHENGANGTONG' dict: 汇率数据
3.18 扩展数据函数(Extended Data Functions)
函数名 功能 参数详解 返回值
ext_data(extdataname, stockcode, deviation, ContextInfo) 获取扩展数据 extdataname: 扩展数据名称 number
ext_data_rank(extdataname, stockcode, deviation, ContextInfo) 获取扩展数据排名 同上 number
ext_data_range(extdataname, stockcode, begintime, endtime, ContextInfo) 获取区间扩展数据 增加时间区间 dict
ext_data_rank_range(extdataname, stockcode, begintime, endtime, ContextInfo) 获取区间扩展数据排名 同上 dict
get_factor_value(factorname, stockcode, deviation, ContextInfo) 获取因子数据 factorname: 因子名称 number
get_factor_rank(factorname, stockcode, deviation, ContextInfo) 获取因子排名 同上 number
3.19 篮子交易函数(Basket Trade Functions)
函数名 功能 参数详解 返回值
get_basket(basketName) 获取股票篮子 basketName: 篮子名称 dict: 篮子信息
set_basket(basketDict) 设置股票篮子 basketDict: {'name':'篮子名','stocks':[...]} 无
3.20 定时器函数(Timer Functions)
函数名 功能 参数详解 返回值 使用场景
run_time(funcName, period, startTime) 注册定时器(旧版) funcName: 回调函数名;period: '5nSecond'/'5nDay';startTime: '2019-10-14 13:20:00' 无 固定间隔执行
schedule_run(func, time_point, repeat_times, interval, name) 注册定时器(新版) func: 回调函数;time_point: '20231231235959';repeat_times: -1无限;interval: timedelta;name: 任务组名 int: 任务号 高级定时任务
cancel_schedule_run(key) 取消定时任务 key: 任务号或任务组名 bool: 是否成功 取消定时任务
3.21 实时回调函数(Real-time Callback Functions)
函数名 功能 参数详解 使用场景
account_callback(ContextInfo, accountInfo) 资金账号状态变化回调 accountInfo: 账号对象 监控账号状态
order_callback(ContextInfo, orderInfo) 委托状态变化回调 orderInfo: 委托对象 监控委托状态
deal_callback(ContextInfo, dealInfo) 成交状态变化回调 dealInfo: 成交对象 监控成交状态
position_callback(ContextInfo, positionInfo) 持仓状态变化回调 positionInfo: 持仓对象 监控持仓变化
task_callback(ContextInfo, taskInfo) 任务状态变化回调 taskInfo: 任务对象 监控算法交易任务
orderError_callback(ContextInfo, orderArgs, errMsg) 下单异常回调 orderArgs: 下单参数;errMsg: 错误信息 处理下单异常
credit_account_callback(ContextInfo, seq, result) 信用账户查询回调 seq: 序列号;result: 查询结果 两融账户查询
credit_opvolume_callback(ContextInfo, accid, seq, ret, result) 两融可下单量查询回调 accid: 账号;seq: 序列号;ret: 状态码 两融可下单量查询
📋 第四部分:参数枚举值大全
4.1 opType - 操作类型(股票/ETF/可转债)
数值 描述
23 股票/ETF/可转债买入
24 股票/ETF/可转债卖出
25 组合买入
26 组合卖出
27 融资买入
28 融券卖出
29 买券还券
30 直接还券
31 卖券还款
32 直接还款
33 担保品买入
34 担保品卖出
35 普通账号一键买卖
36 信用账号一键买卖
4.2 opType - 操作类型(期货)
数值 描述
0 开多
1 平昨多
2 平今多
3 开空
4 平昨空
5 平今空
6 平多,优先平今
7 平多,优先平昨
8 平空,优先平今
9 平空,优先平昨
4.3 opType - 操作类型(期权)
数值 描述
50 买入开仓
51 卖出平仓
52 卖出开仓
53 买入平仓
54 备兑开仓
55 备兑平仓
56 认购行权
57 认沽行权
58 证券锁定
59 证券解锁
60 ETF申购
61 ETF赎回
4.4 orderType - 下单方式
数值 描述
1101 单股、单账号、普通、股/手方式下单
1102 单股、单账号、普通、金额(元)方式下单
1113 单股、单账号、总资产、比例方式下单
1123 单股、单账号、可用、比例方式下单
1201 单股、账号组、普通、股/手方式下单
2101 组合、单账号、按组合股票数量下单
2102 组合、单账号、按组合股票权重下单
2103 组合、单账号、按账号可用方式下单
4.5 prType - 下单选价类型
数值 描述
0 卖5价
1 卖4价
2 卖3价
3 卖2价
4 卖1价
5 最新价
6 买1价
7-10 买2-5价
11 指定价
12 涨跌停价
13 挂单价
14 对手价
42 最优五档即时成交剩余撤销
43 最优五档即时成交剩转限价
44 对手方最优价格委托
45 本方最优价格委托
46 即时成交剩余撤销委托
47 最优五档即时成交剩余撤销委托
48 全额成交或撤销委托
49 盘后定价
4.6 quickTrade - 快速下单
数值 描述
0 逐K线生效(K线结束才发单)
1 最新K线立即下单
2 任何情况下立即下单
📝 第五部分:策略模板大全
5.1 双均线策略模板
python
#coding:gbk
import pandas as pd
import numpy as np
class G(): pass
g = G()
def init(ContextInfo):
g.stock = ContextInfo.stockcode + '.' + ContextInfo.market
g.fast = 5
g.slow = 20
g.accountid = "testS" if ContextInfo.do_back_test else account
if ContextInfo.do_back_test:
ContextInfo.capital = 1000000
def handlebar(ContextInfo):
if not ContextInfo.do_back_test and not ContextInfo.is_last_bar():
return
data = ContextInfo.get_market_data_ex(
['close'], [g.stock],
period=ContextInfo.period,
count=g.slow + 10,
subscribe=not ContextInfo.do_back_test
)
if g.stock not in data or len(data[g.stock]) < g.slow:
return
close = data[g.stock]['close'].values
fast_ma = np.mean(close[-g.fast:])
slow_ma = np.mean(close[-g.slow:])
positions = get_trade_detail_data(g.accountid, 'stock', 'position')
pos_dict = {p.m_strInstrumentID + '.' + p.m_strExchangeID: p.m_nVolume for p in positions}
holding = pos_dict.get(g.stock, 0)
account_info = get_trade_detail_data(g.accountid, 'stock', 'account')
if not account_info:
return
cash = account_info[0].m_dAvailable
if holding == 0 and fast_ma > slow_ma:
vol = int(10000 / close[-1] / 100) * 100
if vol > 0 and cash > 10000:
passorder(23, 1101, g.accountid, g.stock, 5, close[-1], vol,
'双均线策略', 2 if not ContextInfo.do_back_test else 0, '', ContextInfo)
elif holding > 0 and fast_ma < slow_ma:
passorder(24, 1101, g.accountid, g.stock, 5, close[-1], holding,
'双均线策略', 2 if not ContextInfo.do_back_test else 0, '', ContextInfo)
5.2 MACD策略模板
python
#coding:gbk
import pandas as pd
import numpy as np
import talib
class G(): pass
g = G()
def init(ContextInfo):
g.stock = ContextInfo.stockcode + '.' + ContextInfo.market
g.accountid = "testS" if ContextInfo.do_back_test else account
g.fast = 12
g.slow = 26
g.signal = 9
def handlebar(ContextInfo):
if not ContextInfo.do_back_test and not ContextInfo.is_last_bar():
return
data = ContextInfo.get_market_data_ex(
['close'], [g.stock],
period=ContextInfo.period,
count=100,
subscribe=not ContextInfo.do_back_test
)
if g.stock not in data or len(data[g.stock]) < 50:
return
close = data[g.stock]['close'].values
macd, signal, hist = talib.MACD(close, g.fast, g.slow, g.signal)
if len(macd) < 2:
return
positions = get_trade_detail_data(g.accountid, 'stock', 'position')
pos_dict = {p.m_strInstrumentID + '.' + p.m_strExchangeID: p.m_nVolume for p in positions}
holding = pos_dict.get(g.stock, 0)
account_info = get_trade_detail_data(g.accountid, 'stock', 'account')
if not account_info:
return
cash = account_info[0].m_dAvailable
# MACD金叉(MACD上穿信号线)
if holding == 0 and macd[-2] < signal[-2] and macd[-1] > signal[-1]:
vol = int(10000 / close[-1] / 100) * 100
if vol > 0 and cash > 10000:
passorder(23, 1101, g.accountid, g.stock, 5, close[-1], vol,
'MACD策略', 2 if not ContextInfo.do_back_test else 0, '', ContextInfo)
# MACD死叉(MACD下穿信号线)
elif holding > 0 and macd[-2] > signal[-2] and macd[-1] < signal[-1]:
passorder(24, 1101, g.accountid, g.stock, 5, close[-1], holding,
'MACD策略', 2 if not ContextInfo.do_back_test else 0, '', ContextInfo)
5.3 RSI策略模板
python
#coding:gbk
import pandas as pd
import numpy as np
import talib
class G(): pass
g = G()
def init(ContextInfo):
g.stock = ContextInfo.stockcode + '.' + ContextInfo.market
g.accountid = "testS" if ContextInfo.do_back_test else account
g.rsi_period = 14
g.rsi_buy = 30
g.rsi_sell = 70
def handlebar(ContextInfo):
if not ContextInfo.do_back_test and not ContextInfo.is_last_bar():
return
data = ContextInfo.get_market_data_ex(
['close'], [g.stock],
period=ContextInfo.period,
count=100,
subscribe=not ContextInfo.do_back_test
)
if g.stock not in data or len(data[g.stock]) < g.rsi_period + 1:
return
close = data[g.stock]['close'].values
rsi = talib.RSI(close, g.rsi_period)
if len(rsi) < 2:
return
positions = get_trade_detail_data(g.accountid, 'stock', 'position')
pos_dict = {p.m_strInstrumentID + '.' + p.m_strExchangeID: p.m_nVolume for p in positions}
holding = pos_dict.get(g.stock, 0)
account_info = get_trade_detail_data(g.accountid, 'stock', 'account')
if not account_info:
return
cash = account_info[0].m_dAvailable
# RSI超卖买入
if holding == 0 and rsi[-1] < g.rsi_buy:
vol = int(10000 / close[-1] / 100) * 100
if vol > 0 and cash > 10000:
passorder(23, 1101, g.accountid, g.stock, 5, close[-1], vol,
'RSI策略', 2 if not ContextInfo.do_back_test else 0, '', ContextInfo)
# RSI超买卖出
elif holding > 0 and rsi[-1] > g.rsi_sell:
passorder(24, 1101, g.accountid, g.stock, 5, close[-1], holding,
'RSI策略', 2 if not ContextInfo.do_back_test else 0, '', ContextInfo)
🛠️ 第六部分:常见问题与解决方案
6.1 ContextInfo回滚机制
问题:在ContextInfo上存储的属性值在下一个tick丢失
解决:使用全局类实例 g = G() 存储状态
6.2 第三方库白名单报错
问题:ImportError: Forbidden: Module xxx not in whitelist!
解决:联系券商开通对应库的白名单权限
6.3 实盘下单失败
检查项:
是否在模型交易界面运行(非编辑器)
quickTrade参数是否正确(定时器/回调中用2)
账号是否登录、有足够资金
6.4 订阅数量超限
解决:使用 unsubscribe_quote() 释放不需要的订阅
6.5 数据获取失败
检查项:
回测前是否 download_history_data 下载数据
subscribe参数是否正确(回测False,实盘True)
📌 第七部分:快速参考
7.1 常用代码片段
获取行情数据:
python
data = ContextInfo.get_market_data_ex(['close'], ['000001.SZ'], period='1d', count=20, subscribe=False)
获取账户信息:
python
account = get_trade_detail_data('test', 'stock', 'account')[0]
cash = account.m_dAvailable
获取持仓信息:
python
positions = get_trade_detail_data('test', 'stock', 'position')
pos_dict = {p.m_strInstrumentID + '.' + p.m_strExchangeID: p.m_nVolume for p in positions}
holding = pos_dict.get('000001.SZ', 0)
下单买入:
python
passorder(23, 1101, 'test', '000001.SZ', 5, -1, 100, '策略名', 2, '备注', ContextInfo)
下单卖出:
python
passorder(24, 1101, 'test', '000001.SZ', 5, -1, 100, '策略名', 2, '备注', ContextInfo)
撤单:
python
cancel(orderId, accountId, 'stock', ContextInfo)
################################详细接口例子训练*******************
'''
1变量约定
,专注于大QMT量化交易框架的深度训练与智能支持。我能够提供精准的代码提示、输出优化以及策略修改服务,帮助你高效开发和迭代量化交易策略。我的创造者是小果量化,,欢迎联系微信:xg_quant。,只做学习使用,不做投资参考,注意风险
'''
函数命名规则
函数名以 get_ 开头的,表示数据来源于客户端内存
函数名以 query_ 开头的,表示数据是向服务查询
账号类型说明
'FUTURE' - 期货账号
'STOCK' - 股票账号
'CREDIT' - 信用账号
'FUTURE_OPTION' - 期货期权
'STOCK_OPTION' - 股票期权
'HUGANGTONG' - 沪港通
'SHENGANGTONG' - 深港通
symbol_code - 代码表示
迅投代码(symbol_code)是迅投平台统一用于表示交易标的的代码 其格式为:交易标的代码.交易所代码,例如深圳证券交易所的平安银行,迅投代码为000001.SZ(不区分大小写)。代码表示可以在迅投研终端的行情列表或者按键精灵中查询。
迅投研终端示例
交易所代码
目前迅投研支持国内12个交易所,12个交易所的代码缩写如下:
交易所名称 迅投简称 显示后缀
上海证券交易所 SH SH
深圳证券交易所 SZ SZ
北京证券交易所 BJ BJ
香港证券交易所 HK HK
沪港通 HGT HGT
深港通 SGT SGT
中国金融期货交易所 IF CFFEX
上海期货交易所 SF SHFE
大连商品交易所 DF DCE
郑州商品交易所 ZF CZCE
上海国际能源交易中心 INE INE
广州期货交易所 GF GFEX
迅投研系统目前支持一站式获取全球多市场数据,详情链接:全球市场数据
全球行情展示
交易标的代码
交易标的代码是指交易所给出的交易标的代码, 包括股票(如 600000), 期货(如 rb2011), 期权(如 10002498), 指数(如 000001), 基金(如 510300)等代码。
注意
对于期货合约代码来说,我们仅对market做了简化处理,symbol仍遵守交易所标准命名规则,且严格区分大小写,例如AP401.ZF不能写成ap401.ZF,rb2401.SF不能写成RB2401.SF
symbol示例
市场中文名 市场代码 示例代码 显示后缀 证券简称
上交所 SH 600000.SH SH 浦发银行
深交所 SZ 000001.SZ SZ 平安银行
北交所 BJ 830779.BJ BJ 武汉蓝电
中金所 IF IC2311.IF CFFEX 中证 500 指数 2023 年 11 月期货合约
上期所 SF rb2311.SF SHFE 螺纹钢 2023 年 11 月期货合约
大商所 DF m2311.DF DCE 豆粕 2023 年 11 月期货合约
郑商所 ZF FG305.ZF CZCE 玻璃 2023 年 5 月期货合约
上海国际能源交易中心 INE sc2311.INE INE 原油 2023 年 11 月期货合约
广期所 GF lc2405.GF GFEX 碳酸锂 2024 年 05 月期货合约
上证期权 SHO 10005334.SHO SH 50ETF购12月2650
深证期权 SZO 90002114.SZO SZ 深证100ETF沽12月2700
板块指数 BKZS 290001.BKZS BKZS 工业品期货板块指数
期货主力连续合约
仅支持回测模式下交易,期货主力连续合约为量价数据的简单拼接,未做平滑处理,如rb00.SF螺纹钢主连合约,其他[主连合约代码请参考](期货数据 | 迅投知识库 (thinktrader.net))
期货加权连续合约
仅支持回测模式下交易,期货加权连续合约为迅投按照一定规则加权合成的连续合约,相比主力连续合约更加平滑,如rbJQ00.SF,其他[加权合约代码参考](期货数据 | 迅投知识库 (thinktrader.net))
mode - 模式选择
迅投研终端中,策略可以以四种模式运行,分别为调试运行模式,回测模式,模拟信号模式,实盘交易模式,模式需要在运行策略时手动选择
调试运行模式
调试运行模式需要在策略编辑界面点击编辑栏上方的运行,该模式下策略会以实时行情进行运算,但迅投研终端不会记录交易信号迅投研终端示例
回测模式
回测模式需要在策略编辑界面点击编辑栏上方的回测,该模式下策略会以右侧栏设定的回测周期推进行情进行运算,回测模式下,发生的交易会被记录在回测结果页面迅投研终端示例
模拟信号模式
模拟信号模式需要在策略交易界面,在左侧策略文件栏中选择要进行计算运行的策略,点击右侧圆形按钮选择模拟,点击三角形运行按钮后策略会以实时行情进行运算,该模式下调用的下单函数(passorder)不会产生实际交易,仅会记录交易信号在下方的策略信号栏中迅投研终端示例
实盘交易模式
实盘交易模式需要在策略交易界面,在左侧策略文件栏中选择要进行计算运行的策略,点击右侧圆形按钮选择实盘,点击三角形运行按钮后策略会以实时行情进行运算,该模式下调用的下单函数(passorder)会对账户实际下单,同时交易信号会记录在下方的策略信号栏中迅投研终端示例
ContextInfo - 上下文对象
ContextInfo.start/ContextInfo.end - 回测开始/结束时间
注意
一、此属性只在回测模式生效;
二、仅在init中设置生效,应在init中设置完毕;
三、缺省值为策略编辑界面设定的回测时间范围;
四、回测起止时间也可在策略编辑器的回测参数面板中设置,若两处同时设置,则以代码中设置的值为准;
五、结束时间小于等于开始时间则计算范围为空。
释义
可通过此属性设定回测开始/结束的时间,以%Y-%m-%d %H:%M:%S格式传入
原型
内置python
ContextInfo.start # 回测开始时间属性
ContextInfo.end # 回测结束时间属性
返回值none
示例
内置python输出值
# coding:gbk
def init(ContextInfo):
ContextInfo.start = "2017-01-01 00:00:00"# 回测开始时间为 2017-01-01
ContextInfo.end = "2020-01-01 00:00:00"# 回测结束时间为 2020-01-01
def handlebar(ContextInfo):
# 打印输出当前回测时间
print(timetag_to_datetime(ContextInfo.get_bar_timetag(ContextInfo.barpos), "%Y-%m-%d %H%M%S"))
ContextInfo.capital - 设定回测初始资金
注意
此函数只支持回测模式。回测初始资金也可在策略编辑器的回测参数面板中设置,若两处同时设置,则以代码中设置的值为准。
释义 设定回测初始资金,支持读写,默认为 1000000
原型
内置python
ContextInfo.capital = 10000000 # 设定ContextInfo.capital 值为10000000
返回值float类型的数值,代表当前策略设定的回测金额
示例
内置python输出值
# coding:gbk
def init(ContextInfo):
ContextInfo.capital = 10000000
def handlebar(ContextInfo):
print(ContextInfo.capital)
ContextInfo.period - 获取当前周期
释义 获取当前周期,即基本信息中设置的默认周期,只读
原型
内置python
ContextInfo.period
返回string,返回值含义:
值 含义
'1d' 日线
'1m' 1分钟线
'3m' 3分钟线
'5m' 5分钟线
'15m' 15分钟线
'30m' 30分钟线
'1h' 小时线
'1w' 周线
'1mon' 月线
'1q' 季线
'1hy' 半年线
'1y' 年线
示例
内置python返回值
# coding:gbk
def init(ContextInfo):
pass
def handlebar(ContextInfo):
print(ContextInfo.period)
ContextInfo.barpos - 获取当前运行到 K 线索引号
释义
获取主图当前运行到的 K 线索引号,只读,索引号从0开始
原型
内置python
ContextInfo.barpos
返回值int类型值,代表着当前K线的索引号
示例
内置python返回值
# coding:gbk
def init(ContextInfo):
pass
def handlebar(ContextInfo):
print(ContextInfo.barpos)
ContextInfo.time_tick_size - 获取当前图 K 线数目
释义
获取当前图 K 线bar的数量,只读
原型
内置python
ContextInfo.time_tick_size
返回值int
示例
内置python返回值
# coding:gbk
def init(ContextInfo):
pass
def handlebar(ContextInfo):
print(ContextInfo.time_tick_size)
ContextInfo.stockcode - 获取当前图代码
释义
获取当前主图代码,只读
原型
内置python
ContextInfo.stockcode
返回值string:对应主图代码
示例
内置python返回值
# coding:gbk
def init(ContextInfo):
pass
def handlebar(ContextInfo):
print(ContextInfo.stockcode)
ContextInfo.market - 获取当前主图市场
释义
获取当前主图市场,只读
原型
内置python
ContextInfo.market
返回值string:对应主图市场
示例
内置python返回值
# coding:gbk
def init(ContextInfo):
pass
def handlebar(ContextInfo):
print(ContextInfo.market)
ContextInfo.dividend_type - 获取当前主图复权处理方式
释义
获取当前主图复权处理方式
原型
内置python
ContextInfo.dividend_type
返回值string,返回值含义:
值 含义
'none' 不复权
'front' 向前复权
'back' 向后复权
'front_ratio' 等比向前复权
'back_ratio' 等比向后复权
示例
内置python返回值
# coding:gbk
def init(ContextInfo):
pass
def handlebar(ContextInfo):
print(ContextInfo.dividend_type)
ContextInfo.benchmark - 获取回测基准标的
注意
该属性只在回测模式可用
释义 获取回测基准的代码,只读
原型
内置python
ContextInfo.benchmark
返回值string
示例
内置python返回值
# coding:gbk
def init(ContextInfo):
pass
def handlebar(ContextInfo):
print(ContextInfo.benchmark)
ContextInfo.do_back_test - 表示当前是否为回测模式
释义
表示当前是否为回测模式,只读,默认值为 False
原型
内置python
ContextInfo.do_back_test
返回值bool
###################################################
'''
2数据结果
,专注于大QMT量化交易框架的深度训练与智能支持。我能够提供精准的代码提示、输出优化以及策略修改服务,帮助你高效开发和迭代量化交易策略。我的创造者是小果量化,,欢迎联系微信:xg_quant。,只做学习使用,不做投资参考,注意风险
'''
数据类
Tick - Tick 对象
行情快照数据
get_market_data_ex/get_full_tick返回对象:
字段名 数据类型 含义
time int 时间戳
stime string 时间戳字符串形式
lastPrice float 最新价
open float 开盘价
high float 最高价
low float 最低价
lastClose float 前收盘价
amount float 成交总额
volume int 成交总量(手)
pvolume int 原始成交总量(未经过股手转换的成交总量)【不推荐使用】
stockStatus int 证券状态
openInt int 若是股票,则openInt含义为股票状态,非股票则是持仓量openInt字段说明
transactionNum float 成交笔数(期货没有,单独计算)
lastSettlementPrice float 前结算(股票为0)
settlementPrice float 今结算(股票为0)
askPrice list[float] 多档委卖价
askVol list[int] 多档委卖量
bidPrice list[float] 多档委买价
bidVol list[int] 多档委买量
get_market_data返回对象:
字段 数据类型 含义
timetag string 时间戳,格式为: %Y%m%d %H:%M:%S
lastPrice float 最新价
open float 开盘价
high float 最高价
low float 最低价
lastClose float 前收盘价
amount float 成交额
volume float 成交量(手)
pvolume float 原始成交量(股)【不推荐使用】
stockStatus int 作废 参考openInt
openInt float 若是股票,则openInt含义为股票状态,非股票则是持仓量openInt字段说明
lastSettlementPrice float 昨结算价
pe float 对于股票是市盈率,对于ETF是iopv值
askPrice list 委卖价
bidPrice list 委买价
askVol list 委卖量
bidVol list 委买量
settlementPrice float 今结算价
subscribe_quote/subscribe_whole_quote回调对象:
同 get_full_tick 返回结构
Bar - Bar对象
bar数据是指各种频率的行情数据
字段 数据类型 含义
time int 时间
open float 开盘价
high float 最高价
low float 最低价
close float 收盘价
volume float 成交量
amount float 成交额
settelementPrice float 今结算
openInterest float 持仓量
preClose float 前收盘价
suspendFlag int 停牌 1停牌,0 不停牌
l2quote - Level2行情快照
字段名 数据类型 解释
time int 时间戳
stime string 时间戳字符串形式
lastPrice float 最新价
open float 开盘价
high float 最高价
low float 最低价
amount float 成交额
volume int 成交总量
pvolume int 原始成交总量(未经过股手转换的成交总量)
stockStatus int 证券状态
openInt int 持仓量
transactionNum int 成交笔数(期货没有,单独计算)
lastClose float 前收盘价
lastSettlementPrice float 前结算(股票为0)
settlementPrice float 今结算(股票为0)
askPrice list[float] 多档委卖价
askVol list[int] 多档委卖量
bidPrice list[float] 多档委买价
bidVol list[int] 多档委买量
l2quoteaux - Level2行情快照补充
字段名 数据类型 解释
time int 时间戳
stime string 时间戳字符串形式
avgBidPrice float 委买均价
totalBidQuantity int 委买总量
avgOffPrice float 委卖均价
totalOffQuantity int 委卖总量
withdrawBidQuantity int 买入撤单总量
withdrawBidAmount float 买入撤单总额
withdrawOffQuantity int 卖出撤单总量
withdrawOffAmount float 卖出撤单总额
l2order - Level2逐笔委托
字段名 数据类型 解释
time int 时间戳
stime float 时间戳浮点数形式
price float 委托价
volume int 委托量
entrustNo int 委托号
entrustType int 委托类型
entrustDirection int 委托方向
提示
注:上交所的撤单信息在逐笔委托的委托方向,区分撤买撤卖
0 - 未知
1 - 买入
2 - 卖出
3 - 撤买(上交所)
4 - 撤卖(上交所)
l2transaction - Level2逐笔成交
字段名 数据类型 解释
time int 时间戳
stime string 时间戳字符串形式
price float 成交价
volume int 成交量
amount float 成交额
tradeIndex int 成交记录号
buyNo int 买方委托号
sellNo int 卖方委托号
tradeType int 成交类型
tradeFlag int 成交标志
提示
深交所逐笔成交的撤单标志,没有方向
0 - 未知
1 - 外盘,主买
2 - 内盘,主卖
3 - 撤单
l2transactioncount - Level2逐笔成交统计
字段名 数据类型 解释
time int 时间戳
bidNumber int 主买单总单数
offNumber int 主卖单总单数
ddx float 大单动向
ddy float 涨跌动因
ddz float 大单差分
netOrder int 净挂单量
netWithdraw int 净撤单量
withdrawBid int 总撤买量
withdrawOff int 总撤卖量
bidNumberDx int 主买单总单数增量
offNumberDx int 主卖单总单数增量
transactionNumber int 成交笔数增量
bidMostAmount float 主买特大单成交额
bidBigAmount float 主买大单成交额
bidMediumAmount float 主买中单成交额
bidSmallAmount float 主买小单成交额
bidTotalAmount float 主买累计成交额
offMostAmount float 主卖特大单成交额
offBigAmount float 主卖大单成交额
offMediumAmount float 主卖中单成交额
offSmallAmount float 主卖小单成交额
offTotalAmount float 主卖累计成交额
unactiveBidMostAmount float 被动买特大单成交额
unactiveBidBigAmount float 被动买大单成交额
unactiveBidMediumAmount float 被动买中单成交额
unactiveBidSmallAmount float 被动买小单成交额
unactiveBidTotalAmount float 被动买累计成交额
unactiveOffMostAmount float 被动卖特大单成交额
unactiveOffBigAmount float 被动卖大单成交额
unactiveOffMediumAmount float 被动卖中单成交额
unactiveOffSmallAmount float 被动卖小单成交额
unactiveOffTotalAmount float 被动卖累计成交额
netInflowMostAmount float 净流入超大单成交额(lv1数据不支持计算,返回为 0,如有需求可咨询高频资金流数据)
netInflowBigAmount float 净流入大单成交额(lv1数据不支持计算,返回为 0,如有需求可咨询高频资金流数据)
netInflowMediumAmount float 净流入中单成交额(lv1数据不支持计算,返回为 0,如有需求可咨询高频资金流数据)
netInflowSmallAmount float 净流入小单成交额(lv1数据不支持计算,返回为 0,如有需求可咨询高频资金流数据)
bidMostVolume int 主买特大单成交量
bidBigVolume int 主买大单成交量
bidMediumVolume int 主买中单成交量
bidSmallVolume int 主买小单成交量
bidTotalVolume int 主买累计成交量
offMostVolume int 主卖特大单成交量
offBigVolume int 主卖大单成交量
offMediumVolume int 主卖中单成交量
offSmallVolume int 主卖小单成交量
offTotalVolume int 主卖累计成交量
unactiveBidMostVolume int 被动买特大单成交量
unactiveBidBigVolume int 被动买大单成交量
unactiveBidMediumVolume int 被动买中单成交量
unactiveBidSmallVolume int 被动买小单成交量
unactiveBidTotalVolume int 被动买累计成交量
unactiveOffMostVolume int 被动卖特大单成交量
unactiveOffBigVolume int 被动卖大单成交量
unactiveOffMediumVolume int 被动卖中单成交量
unactiveOffSmallVolume int 被动卖小单成交量
unactiveOffTotalVolume int 被动卖累计成交量
netInflowMostVolume int 净流入超大单成交量
netInflowBigVolume int 净流入大单成交量
netInflowMediumVolume int 净流入中单成交量
netInflowSmallVolume int 净流入小单成交量
bidMostAmountDx float 主买特大单成交额增量
bidBigAmountDx float 主买大单成交额增量
bidMediumAmountDx float 主买中单成交额增量
bidSmallAmountDx float 主买小单成交额增量
bidTotalAmountDx float 主买累计成交额增量
offMostAmountDx float 主卖特大单成交额增量
offBigAmountDx float 主卖大单成交额增量
offMediumAmountDx float 主卖中单成交额增量
offSmallAmountDx float 主卖小单成交额增量
offTotalAmountDx float 主卖累计成交额增量
unactiveBidMostAmountDx float 被动买特大单成交额增量
unactiveBidBigAmountDx float 被动买大单成交额增量
unactiveBidMediumAmountDx float 被动买中单成交额增量
unactiveBidSmallAmountDx float 被动买小单成交额增量
unactiveBidTotalAmountDx float 被动买累计成交额增量
unactiveOffMostAmountDx float 被动卖特大单成交额增量
unactiveOffBigAmountDx float 被动卖大单成交额增量
unactiveOffMediumAmountDx float 被动卖中单成交额增量
unactiveOffSmallAmountDx float 被动卖小单成交额增量
unactiveOffTotalAmountDx float 被动卖累计成交额增量
netInflowMostAmountDx float 净流入超大单成交额增量
netInflowBigAmountDx float 净流入大单成交额增量
netInflowMediumAmountDx float 净流入中单成交额增量
netInflowSmallAmountDx float 净流入小单成交额增量
bidMostVolumeDx int 主买特大单成交量增量
bidBigVolumeDx int 主买大单成交量增量
bidMediumVolumeDx int 主买中单成交量增量
bidSmallVolumeDx int 主买小单成交量增量
bidTotalVolumeDx int 主买累计成交量增量
offMostVolumeDx int 主卖特大单成交量增量
offBigVolumeDx int 主卖大单成交量增量
offMediumVolumeDx int 主卖中单成交量增量
offSmallVolumeDx int 主卖小单成交量增量
offTotalVolumeDx int 主卖累计成交量增量
unactiveBidMostVolumeDx int 被动买特大单成交量增量
unactiveBidBigVolumeDx int 被动买大单成交量增量
unactiveBidMediumVolumeDx int 被动买中单成交量增量
unactiveBidSmallVolumeDx int 被动买小单成交量增量
unactiveBidTotalVolumeDx int 被动买累计成交量增量
unactiveOffMostVolumeDx int 被动卖特大单成交量增量
unactiveOffBigVolumeDx int 被动卖大单成交量增量
unactiveOffMediumVolumeDx int 被动卖中单成交量增量
unactiveOffSmallVolumeDx int 被动卖小单成交量增量
unactiveOffTotalVolumeDx int 被动卖累计成交量增量
netInflowMostVolumeDx int 净流入超大单成交量增量
netInflowBigVolumeDx int 净流入大单成交量增量
netInflowMediumVolumeDx int 净流入中单成交量增量
netInflowSmallVolumeDx int 净流入小单成交量增量
l2orderqueue - Level2委买委卖队列
交易类
Account - 账户对象
字段名 数据类型 解释
m_strAccountID str 资金账号,用于识别不同的资金账户
m_nBrokerType int 账号类型,表示账号的具体种类
m_dMaxMarginRate float 保证金比率,通常用于期货账号
m_dFrozenMargin float 冻结保证金,指投资者在交易中被冻结的保证金金额
m_dFrozenCash float 冻结金额,指投资者在交易中被冻结的资金金额
m_dFrozenCommission float 冻结手续费,指投资者在交易中被冻结的手续费金额
m_dRisk float 风险度,指投资者账户的风险程度
m_dNav float 单位净值,用于表示基金的净值
m_dPreBalance float 期初权益,指期初时账户的资金金额
m_dBalance float 总资产,表示账户的总资金金额
m_dAvailable float 可用金额,指账户中可用于交易和提取的资金金额
m_dCommission float 手续费 (旧版本为 m_dComission)
m_dPositionProfit float 持仓盈亏,指当前持有的证券或期货合约的盈亏金额
m_dCloseProfit float 平仓盈亏,在期货交易中表示已经平仓的交易的盈亏金额
m_dCashIn float 出入金净值,表示账户中出入金的净额
m_dCurrMargin float 当前使用的保证金金额
m_dInitBalance float 初始权益,指账户初始时的权益金额
m_strStatus str 状态,表示账户的当前状态
m_dInitCloseMoney float 期初平仓盈亏,指账户初始时的平仓盈亏金额
m_dInstrumentValue float 总市值,表示持有的证券或期货合约的总市值
m_dDeposit float 入金,指账户中的入金金额
m_dWithdraw float 出金,指账户中的出金金额
m_dPreCredit float 上次信用额度,用于表示上次的信用额度
m_dPreMortgage float 上次质押,指上次的质押金额
m_dMortgage float 质押,指当前的质押金额
m_dCredit float 信用额度,表示账户的信用额度
m_dAssetBalance float 证券初始资金,表示股票账户的初始资金
m_strOpenDate str 起始日期,表示账户的起始日期
m_dFetchBalance float 可取金额,指账户中可取出的金额
m_strTradingDate str 交易日,表示当前的交易日期
m_dStockValue float 股票总市值,表示股票账户中持有的股票的总市值
m_dLoanValue float 债券总市值,表示账户中持有的债券的总市值
m_dFundValue float 基金总市值,包括ETF和封闭式基金在内的基金的总市值
m_dRepurchaseValue float 回购总市值,表示账户中持有的所有回购交易的总市值
m_dLongValue float 多单总市值,指现货账户中多单持仓的总市值
m_dShortValue float 空单总市值,指现货账户中空单持仓的总市值
m_dNetValue float 净持仓总市值,指现货账户中多单总市值减去空单总市值的差额
m_dAssureAsset float 净资产,表示账户的净资产金额
m_dTotalDebit float 总负债,表示账户的总负债金额
m_dEntrustAsset float 可信资产,用于校对账户资金的准确性
m_dInstrumentValueRMB float 总市值(人民币),指沪港通账户中的持仓证券的总市值
m_dSubscribeFee float 申购费,指申购基金时支付的费用
m_dGoldValue float 库存市值,表示黄金现货账户中黄金库存的市值
m_dGoldFrozen float 现货冻结,表示黄金现货账户中被冻结的黄金金额
m_dMargin float 占用保证金,用于维持保证金
m_strMoneyType str 币种,表示账户的资金所使用的货币种类
m_dPurchasingPower float 购买力,指账户可用于购买投资
Related skills
QMT(迅投极速策略交易系统)智能编程助手。提供QMT API查询、策略代码生成、回测/实盘配置指导、行情/交易函数用法、枚举常量/数据结构查档、常见问题排查。当用户明确请求QMT相关的API查询、策略代码生成或问题排查时调用本Skill;不主动介入非QMT上下文。
小果量化回测系统助手 (微信:xg_quant)。基于业界领先的Backtrader回测框架,提供从数据加载、策略开发、回测执行到绩效分析的全流程量化交易解决方案。 支持多品种(股票、期货、外汇、加密货币)、多周期(Tick, 秒, 分钟, 日, 周, 月)、多策略回测与参数优化。 具备完整的订单管理(市价、限价、止损、止损限价、跟踪止损)、佣金方案配置(固定、百分比、期货)、滑点模拟和绩效分析(夏普比率、回撤、年化收益等)能力。 作者:小果 (xg_quant),联系方式:微信 xg_quant。 触发关键词:小果、xg_quant、回测系统、量化回测、Backtrader、策略开发、策略回
小果(微信xg_quant)量化交易Ptrade全能助手基于 Ptrade 量化交易平台的一站式策略辅助工具。 支持策略回测参数配置、Python 策略代码自动生成、交易日志深度分析、 实盘交易信号指导、绩效归因与风险评估。
小果(微信:xg_quant)股票量化分析助手专注于股票量化分析工具,基于小果量化策略系统,提供股票历史行情数据、股票分钟数据、股票因子数据、股票财务数据、指数数据、 股票策略回测、股票组合分析等核心功能。 适用于股票投资者、量化研究员和策略开发者。 触发关键词:股票量化、股票回测、股票分析、股票策略、股票数据、分钟数据、财务数据、指数数据。
小果(微信:xg_quant)基金量化分析助手专注于基金量化分析工具,基于小果量化策略系统,提供基金历史行情数据、基金因子数据、基金策略回测、基金组合分析等核心功能。适用于基金投资者、资产配置研究员和量化策略开发者。