编程

小果全能大QMT量化交易助手

试用

小果全能大QMT量化交易助手 - 专业级QMT策略开发全能助手 本助手是专为「迅投QMT极速策略交易系统」打造的量化交易策略开发专家。由小果(微信:xg_quant)精心打造,深度封装了QMT平台的全部API接口、运行机制、数据结构和实战经验,能够根据用户的自然语言描述,自动生成从基础到高级、从回测到实盘的完整量化交易策略代码。 【核心功能矩阵】 ✅ 策略开发:根据需求描述自动生成QMT策略代码,支持股票/期货/期权/ETF/可转债/两融等多品种 ✅ 策略回测:生成完整的回测模型代码,包含历史数据获取、撮合规则、绩效分析 ✅ 实盘交易:生成实盘模型代码,支持逐K线生效和立即下单两种模式 ✅

它能做什么

小果全能大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

技能文档

小果大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	购买力,指账户可用于购买投资

相关技能

小果(微信:xg_quant)量化交易平台助手技能。小果量化是一个专业的量化交易系统,提供完整的回测、模拟交易、社区策略分享等功能。 【核心功能】 - 📊 历史行情数据获取(股票、ETF、可转债) - 📈 多维度因子数据提取(技术指标、Alpha因子、动量因子等) - 💰 财务数据分析(资产负债表、利润表、现金流量表等) - 🔄 多种策略回测(定投、动量、资产配置、网格、海龟、均值方差等) - 🤖 模拟交易和社区策略管理 - 📉 多标的量化分析(相关性矩阵、协方差矩阵、投资组合优化) - 📊 股票组合收益分析(绩效指标、夏普比率、最大回撤等) - ⏰ 分钟级K线数据

QMT(迅投极速策略交易系统)智能编程助手。提供QMT API查询、策略代码生成、回测/实盘配置指导、行情/交易函数用法、枚举常量/数据结构查档、常见问题排查。当用户明确请求QMT相关的API查询、策略代码生成或问题排查时调用本Skill;不主动介入非QMT上下文。

1 次安装

小果量化回测系统助手 (微信:xg_quant)。基于业界领先的Backtrader回测框架,提供从数据加载、策略开发、回测执行到绩效分析的全流程量化交易解决方案。 支持多品种(股票、期货、外汇、加密货币)、多周期(Tick, 秒, 分钟, 日, 周, 月)、多策略回测与参数优化。 具备完整的订单管理(市价、限价、止损、止损限价、跟踪止损)、佣金方案配置(固定、百分比、期货)、滑点模拟和绩效分析(夏普比率、回撤、年化收益等)能力。 作者:小果 (xg_quant),联系方式:微信 xg_quant。 触发关键词:小果、xg_quant、回测系统、量化回测、Backtrader、策略开发、策略回

小果(微信xg_quant)量化交易Ptrade全能助手基于 Ptrade 量化交易平台的一站式策略辅助工具。 支持策略回测参数配置、Python 策略代码自动生成、交易日志深度分析、 实盘交易信号指导、绩效归因与风险评估。

小果(微信:xg_quant)股票量化分析助手专注于股票量化分析工具,基于小果量化策略系统,提供股票历史行情数据、股票分钟数据、股票因子数据、股票财务数据、指数数据、 股票策略回测、股票组合分析等核心功能。 适用于股票投资者、量化研究员和策略开发者。 触发关键词:股票量化、股票回测、股票分析、股票策略、股票数据、分钟数据、财务数据、指数数据。

小果(微信:xg_quant)基金量化分析助手专注于基金量化分析工具,基于小果量化策略系统,提供基金历史行情数据、基金因子数据、基金策略回测、基金组合分析等核心功能。适用于基金投资者、资产配置研究员和量化策略开发者。