Skip to content

一、概述

QMT(迅投极速策略交易系统)内置 Python(常见 3.6),做行情与下单。策略默认跑在你的电脑或服务器上。

先看本页概述

QMT 教程大纲

和 PTrade:QMT 本地、后缀 .SH;PTrade 托管、后缀 .SS。下单 QMT 用 passorder

开通留言公众号 qmt咨询

写策略三条路

机制分类回测典型用途
handlebar逐 K可以均线、跟 K 走
subscribe_quote分笔推送盘中跟 tick
run_time定时无效定点轮询

源码第一行:#coding:gbk


回测与实盘差异

本页概述

场景需求

回测:历史 K 从左到右遍历,模拟资金,看净值。
实盘:收最新行情,下单到柜台,要管委托状态和报撤。

「模型交易里选模拟/实盘」和「账号是模拟柜台还是真实柜台」不是一回事。

回测模型

  1. 先下载历史:操作 → 数据管理,选周期和板块
  2. 右下角行情 → 批量下载,勾选定时下载
  3. 回测读本地:get_market_data_ex(..., subscribe=False)
  4. 撮合:价在当根高低点之间按指定价,超出按收盘;量超过可用按可用
  5. 回测用副图模式,不要主图 / 主图叠加

实盘模型

  • quicktrade=0(默认):逐 K 生效。分钟图上每 3 秒分笔会进 handlebar,但只在 K 走完后才把暂存信号发出。一根 1 分钟 K 大约 20 个分笔,前 19 次信号会丢。
  • quicktrade=2:立刻下单。状态用普通全局对象(class a()),不要存在 ContextInfo 属性里。
  • 股票价格笼子约 2%,超了废单;量超可用也废单。

运行机制对比

机制分类特点
handlebar事件历史 + 盘中分笔,可模拟逐 K
subscribe事件订阅品种分笔回调
run_time定时固定间隔;回测无效

handlebar

启动时历史 K 从左到右每根调一次;盘中主图每个新分笔再调。盘中是分笔驱动、逐 K 生效。

subscribe

ContextInfo.subscribe_quote(stock, period=..., callback=...)。新分笔到了调 callback。


使用须知

使用须知

安装路径的选择

在安装 QMT 软件时,请不要安装在C盘,以避免因权限问题导致的使用问题

若是只能安装到C盘,请在启动时选择以管理员权限启动

下载python库

初次使用 QMT 时,请确保补全所需的 Python 库。安装完毕后,不要忘记重启客户端。

提示

在盘中,下载速度会很慢,建议盘前或盘后更新。

下载python库

关于ContextInfo

由于底层机制的限制,ContextInfo中存储的变量值将会回滚,即在对ContextInfo中的变量进行修改之后,在下一次handlebar调用时,这些修改将不会保留。具体细节请参阅常见问题。因此,在完全理解ContextInfo机制之前,请避免在其中存储任何变量。

推荐用法

class G(): pass

g = G()

def init(ContextInfo):
    g.stock_list = ['000001.SZ']

def handlebar(ContextInfo):
    g.stock_list.append('600000.SH')

错误用法

警告

下面的示例请勿使用

def init(ContextInfo):
    ContextInfo.stock_list = ['000001.SZ']

def handlebar(ContextInfo):
    ContextInfo.stock_list.append('600000.SH')

关于线程和进程

QMT中,python无法使用多线程和多进程,而且所有策略都在同一线程中执行,所以策略中应该尽量避免阻塞类的写法,否则会影响其他策略的执行。

主图解析

如下图所示,策略执行依赖于K线图。这里所说的主图即是K线图,策略正是在K线图上运行,也是由它驱动的(也有非K线驱动的策略写法,详见快速入门)。

K线回放:策略在客户端运行时会从第一根K线开始,依次调用handlebar函数,直至最后一根K线。并且在盘中,每一个新的行情快照都会触发一次handlebar函数调用(无论主图的周期如何)。如果想要过滤掉某些K线,可以设置右侧的快速计算,或使用ContextInfo. is_last_bar ()函数进行过滤。

Alt text

策略运行无反应/运行报错提示 "run script failed! "

最快解决方法是点击右上角布局按钮,选择恢复默认布局

如果策略运行后无任何反应,首先检查客户端是否有其他策略正在运行,如果有,请先将其停止,然后重试。检查方法如下图所示:

Alt text

Alt text

Alt text

Alt text

提示

最后建议重启客户端

内置 Python 常见 3.6.8 / 64 位。自带 numpy、pandas、scipy、talib 等。自己装的库写到 {安装目录}\bin.x64\Lib\site-packages,装完重启。券商开了白名单会报 not in whitelist,找营业部加库。 不要升级自带的 pandas。策略里别 sleep / 死循环:所有模型共一个线程。

界面操作

如何创建策略

最短路径:新建 Python 模型 → 写 init + handlebar → 补历史数据 → 编译保存 → 回测或运行
界面操作。券商客户端菜单有的叫「模型研究」,有的叫「策略开发」,步骤一样。

最小可运行模板

没有 inithandlebar,策略跑不起来。哪怕暂时不写逻辑,这两个函数也得在。

python
#coding:gbk

def init(C):
    print('hello init')

def handlebar(C):
    print('hello handlebar', C.barpos)
  • init:模型加载时只跑一次。设股票池、账号、全局变量。可以写 pass,但不能缺这个函数。
  • handlebar:每根 K(Bar)调一次。买卖条件、取数、下单写这里。
  • C 就是 ContextInfo,系统对象。盘中逐 K 回退时它会回到上一根结束状态,长期状态用普通全局对象(class a())存。

第一行必须 #coding:gbk。缩进统一空格或统一 tab,不要混。

新建一个 Python 策略

三种入口,任选一个:

  1. 从示例改:在「我的 / 模型研究」里找到预置示例,点后面的「编辑」,在弹出来的策略编辑器里改。
  2. 空白新建:同一界面点「新建模型」,选 Python 模型,从头写。
  3. 列表右键:模型管理面板右键 → 新建模型 → Python 模型。

从示例编辑

新建 Python 模型

右键新建

投研端也可以在【我的】主页点「新建策略」→「python策略」。写完点「编译」再关编辑器。本地 .rzrk 可以在模型研究里右键导入。

安装不要选 C 盘。通信设置里行情服务器连不上,后面取数会空。

QMT 选择安装位置

QMT 通信设置

策略怎么写

打开后是策略编辑器:左边代码,右边能设默认周期、默认品种、基本信息和回测参数。

策略编辑器

要记住这几条:

说明
编码第一行 #coding:gbk
必有函数init(C)handlebar(C)
三方库自带 numpy / pandas / talib 等;自己装的库必须在券商白名单里
回测显示副图,不要选主图 / 主图叠加
盘中信号默认不是每个 tick 都下单。只有当根 K 走完(最后一个 tick)的改动会留下,委托一般在下一根 K 的第一个 tick才发出。日线及以上当天可能发不出去,要用 passorder(..., quickTrade=1 或 2)do_order

右侧基本信息常用项:名称、默认周期、默认品种、复权、位置(副图 / 主图叠加 / 主图)、快速计算(只算最近 n 根,0 表示从第一根算到尾)。

回测参数:起止日期、基准、初始资金、滑点、佣金 / 印花税、最大成交比例。期货再看保证金、平今平昨。

字段说明见基本信息 · 回测参数

先补数据

回测读的是本机行情。没下过对应周期和板块,回测是空的或报缺数。

菜单:操作 → 数据管理,选周期(如日线)、板块(如沪深 A 股)、时间范围(可先选全部)。右下角「行情 → 批量下载」里勾定时下载,后面每天会自己补。

数据管理

回测用 get_market_data_ex(..., subscribe=False) 读本地,不要去订实时。

运行

写完点编译:Python 策略里编译只保存,不查语法。再点运行看效果,报错出在日志。

策略运行

  • 你在行情 / 交易页:先把主图品种和周期设好,运行就挂在当前主图上。
  • 你在我的 / 模型研究 / 模型交易:按编辑器基本信息里的默认品种、默认周期跑。

关掉正在跑的策略:

位置怎么关
副图关掉主图下面那张附图
主图叠加主图右键,取消叠加指标
主图键盘精灵输入 KLINE
任意策略编辑器上的停止

要真往柜台发单:进模型交易,新建策略交易,把模型加进去,运行模式选「实盘」。这里的「模拟 / 实盘」和账号是模拟柜台还是真柜台不是一回事。

调试

跑挂了先看编辑器下面的日志输出。更完整的日志在安装目录 userdata/log。全推行情档位没开,get_full_tick 会缺字段。

调试日志

不要随手开「独立 Python 进程」:勾上之后当普通脚本跑,不会再调 init / handlebar

回测

编译保存后点回测。先设好:

  1. 基本信息:默认品种、周期(建议副图)
  2. 回测参数:起止日期、资金、费率
  3. 数据管理:把这段日期、这个周期的行情下完

正常会跳到默认标的 K 线,右边出绩效。十字光标左右移,年化、回撤、当日买卖、持仓会跟着变。列表都能右键复制 / 导出。

策略回测

回测里的买卖列表可以点「买入 / 卖出」手工确认下单,那是人点的,不是模型交易自动报柜台。

run_time 在回测里不跑。要回测的逻辑放 handlebar

回测和运行差在哪

回测运行(行情上点运行)模型交易
用的数据历史本地行情实时行情,从主图起点到现在实时行情
会不会自动报柜台不会不会(只是模拟演算)模式选「实盘」才会发
业务股票、期货、ETF 期权还可到两融、港股通等跟账号权限走
定时器 run_time无效有效有效

导入导出策略

QMT系统支持将策略以加密的模式进行导出或导入,用户可以便捷的迁移系统本地策略。

img

方式一.模型研究界面导入导出

img

方式二.模型研究界面导入导出

配置/获取模拟账号

注意

  1. 券商QMT的模拟账号通常联系对应券商解决相关问题
  2. 以下均为迅投模拟账号相关指南
  3. 迅投模拟账号的格式如下
    1. 股票账号:200xxxx
    2. 期货账号:100xxxx
    3. 期权账号:600xxxx

提示

  1. 新用户注册投研账号,可获得 14 天模拟仿真交易体验

  2. VIP权限用户可以通过用户中心 - 下载中心的客户端进行模拟交易,交易支持股票/期货/股票期权三个市场

  3. 开通、模拟账号、投研权限问题,请关注公众号留言

  4. 点击右上角的用户中心,选择下方栏目的模拟撮合按钮,可以看到您的投研模拟账号

模拟账号

  1. VIP权限用户可以通过用户中心 - 下载中心的客户端进行模拟交易,交易支持股票/期货/股票期权三个市场

模拟交易环境说明

  1. 客户端配置账号

自动导出交易记录

操作界面快捷键

操作描述
SHIFT+Q分时 K线 附图变量查看器
SHIFT+Gk线 附图组合模型持仓界面
SHIFT+Lk线 锁定十字线
SHIFT+S星空图
CTRL+Windows键快速唤起多屏
CTRL+O分时 K线 叠加品种
CTRL+Z分时 K线 添加自选
CTRL+M跳转到多股同列界面
CTRL+X跳转到多周期同列界面
CTRL+K线 多股同列 向左快捷移动十字线
CTRL+K线 多股同列 向右快捷移动十字线
CTRL+Rk线 移动十字线到当前界面结尾
CTRL+Vk线 切换复权方式为等比前复权/不复权
CTRL+Bk线 切换复权方式为等比后复权/不复权
CTRL+A分时 k线 浏览列表 样板股分析
CTRL+E分时 k线 浏览列表 预警雷达
ALT+数字 (1~9)分时 K线 设置附图指标数量
ALT+分时 K线 显示走势图
ALT+分时 K线 显示走势图
F3切换到上证指数分时图
F4切换到深证成指分时图
F5切换到分时/K线图
F6切换到“我的自选”板块浏览列表
F8K线 循环切换周期
F10个股切换财务数据界面,指数切换到成分股界面

策略编辑器快捷键

操作描述
Ctrl+C复制
Ctrl+X剪切
Ctrl+V粘贴
Ctrl+Q多行注释
Ctrl+Z撤消
Ctrl+Y恢复
Ctrl+A全选
Ctrl+F键查找对话框启动
Ctrl+D复制并粘贴当行
Ctrl+L删除当前行
Ctrl+T当行向上移动一行
Ctrl+S保存文件

handlebar 回测示例

回测用本地数据:subscribe=Falseend_time 用当前 bar 时间。账号回测可填任意字符串。

python
#coding:gbk
import numpy as np

def init(C):
    C.stock = C.stockcode + '.' + C.market
    C.line1, C.line2 = 10, 20
    C.accountid = 'testS'

def handlebar(C):
    bar_date = timetag_to_datetime(C.get_bar_timetag(C.barpos), '%Y%m%d%H%M%S')
    local = C.get_market_data_ex(
        ['close'], [C.stock], end_time=bar_date,
        period=C.period, count=max(C.line1, C.line2), subscribe=False)
    close_list = list(local[C.stock].iloc[:, 0])
    if len(close_list) < 1:
        return
    # 金叉买入 / 死叉卖出,passorder 参数对照手册

完整示例见本页 handlebar 示例

handlebar 实盘注意

if not C.is_last_bar(): return 跳过历史 K。立刻下单用 quicktrade=2,状态放普通类实例,不要放 ContextInfo

subscribe 示例

python
#coding:gbk
class a():
    pass
A = a()
A.bought_list = []

def init(C):
    def callback_func(data):
        for stock in data:
            ratio = data[stock]['close'] / data[stock]['preClose'] - 1
            print(stock, C.get_stock_name(stock), ratio)
    for stock in ['600000.SH', '000001.SZ']:
        C.subscribe_quote(stock, period='1d', callback=callback_func)

passorder 先注释,确认回调正常再打开。

run_time 示例

python
#coding:gbk
def init(C):
    C.run_time('f', '1nSecond', '2019-10-14 13:20:00')

def f(C):
    ticks = C.get_full_tick(['600000.SH'])
    print(ticks)

回测里这个定时器不会跑。要回测请把逻辑放 handlebar

调试

日志在安装目录 userdata/log。全推档位没开,get_full_tick 字段会缺。



变量约定

变量约定

函数命名规则

  • 函数名以 get_ 开头的,表示数据来源于客户端内存
  • 函数名以 query_ 开头的,表示数据是向服务查询

账号类型说明

  • 'FUTURE' - 期货账号
  • 'STOCK' - 股票账号
  • 'CREDIT' - 信用账号
  • 'FUTURE_OPTION' - 期货期权
  • 'STOCK_OPTION' - 股票期权
  • 'HUGANGTONG' - 沪港通
  • 'SHENGANGTONG' - 深港通

symbol_code - 代码表示

迅投代码(symbol_code)是迅投平台统一用于表示交易标的的代码 其格式为:交易标的代码.交易所代码,例如深圳证券交易所的平安银行,迅投代码为000001.SZ(不区分大小写)。代码表示可以在迅投研终端的行情列表或者按键精灵中查询。

迅投研终端示例

交易所代码

目前迅投研支持国内12个交易所,12个交易所的代码缩写如下:

交易所名称迅投简称显示后缀
上海证券交易所SHSH
深圳证券交易所SZSZ
北京证券交易所BJBJ
香港证券交易所HKHK
沪港通HGTHGT
深港通SGTSGT
中国金融期货交易所IFCFFEX
上海期货交易所SFSHFE
大连商品交易所DFDCE
郑州商品交易所ZFCZCE
上海国际能源交易中心INEINE
广州期货交易所GFGFEX

迅投研系统目前支持一站式获取全球多市场数据。权限和开通请公众号留言

全球行情展示

交易标的代码

交易标的代码是指交易所给出的交易标的代码, 包括股票(如 600000), 期货(如 rb2011), 期权(如 10002498), 指数(如 000001), 基金(如 510300)等代码。

注意

对于期货合约代码来说,我们仅对market做了简化处理,symbol仍遵守交易所标准命名规则,且严格区分大小写,例如AP401.ZF不能写成ap401.ZF,rb2401.SF不能写成RB2401.SF

symbol示例

市场中文名市场代码示例代码显示后缀证券简称
上交所SH600000.SHSH浦发银行
深交所SZ000001.SZSZ平安银行
北交所BJ830779.BJBJ武汉蓝电
中金所IFIC2311.IFCFFEX中证 500 指数 2023 年 11 月期货合约
上期所SFrb2311.SFSHFE螺纹钢 2023 年 11 月期货合约
大商所DFm2311.DFDCE豆粕 2023 年 11 月期货合约
郑商所ZFFG305.ZFCZCE玻璃 2023 年 5 月期货合约
上海国际能源交易中心INEsc2311.INEINE原油 2023 年 11 月期货合约
广期所GFlc2405.GFGFEX碳酸锂 2024 年 05 月期货合约
上证期权SHO10005334.SHOSH50ETF购12月2650
深证期权SZO90002114.SZOSZ深证100ETF沽12月2700
板块指数BKZS290001.BKZSBKZS工业品期货板块指数

期货主力连续合约

仅支持回测模式下交易,期货主力连续合约为量价数据的简单拼接,未做平滑处理,如rb00.SF螺纹钢主连合约。其他主连代码在客户端数据字典里查,或公众号留言

期货加权连续合约

仅支持回测模式下交易,期货加权连续合约为迅投按照一定规则加权合成的连续合约,相比主力连续合约更加平滑,如rbJQ00.SF。其他加权代码在客户端数据字典里查,或公众号留言

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

界面操作

数据结构

数据结构

数据类

Tick - Tick 对象

行情快照数据

get_market_data_ex/get_full_tick返回对象:

字段名数据类型含义
timeint时间戳
stimestring时间戳字符串形式
lastPricefloat最新价
openfloat开盘价
highfloat最高价
lowfloat最低价
lastClosefloat前收盘价
amountfloat成交总额
volumeint成交总量(手)
pvolumeint原始成交总量(未经过股手转换的成交总量)【不推荐使用】
stockStatusint证券状态
openIntint若是股票,则openInt含义为股票状态,非股票则是持仓量openInt字段说明
transactionNumfloat成交笔数(期货没有,单独计算)
lastSettlementPricefloat前结算(股票为0)
settlementPricefloat今结算(股票为0)
askPricelist[float]多档委卖价
askVollist[int]多档委卖量
bidPricelist[float]多档委买价
bidVollist[int]多档委买量

get_market_data返回对象:

字段数据类型含义
timetagstring时间戳,格式为: %Y%m%d %H:%M:%S
lastPricefloat最新价
openfloat开盘价
highfloat最高价
lowfloat最低价
lastClosefloat前收盘价
amountfloat成交额
volumefloat成交量(手)
pvolumefloat原始成交量(股)【不推荐使用】
stockStatusint作废 参考openInt
openIntfloat若是股票,则openInt含义为股票状态,非股票则是持仓量openInt字段说明
lastSettlementPricefloat昨结算价
pefloat对于股票是市盈率,对于ETF是iopv值
askPricelist委卖价
bidPricelist委买价
askVollist委卖量
bidVollist委买量
settlementPricefloat今结算价

subscribe_quote/subscribe_whole_quote回调对象:

同 get_full_tick 返回结构

Bar - Bar对象

bar数据是指各种频率的行情数据

字段数据类型含义
timeint时间
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价
volumefloat成交量
amountfloat成交额
settelementPricefloat今结算
openInterestfloat持仓量
preClosefloat前收盘价
suspendFlagint停牌 1停牌,0 不停牌

l2quote - Level2行情快照

字段名数据类型解释
timeint时间戳
stimestring时间戳字符串形式
lastPricefloat最新价
openfloat开盘价
highfloat最高价
lowfloat最低价
amountfloat成交额
volumeint成交总量
pvolumeint原始成交总量(未经过股手转换的成交总量)
stockStatusint证券状态
openIntint持仓量
transactionNumint成交笔数(期货没有,单独计算)
lastClosefloat前收盘价
lastSettlementPricefloat前结算(股票为0)
settlementPricefloat今结算(股票为0)
askPricelist[float]多档委卖价
askVollist[int]多档委卖量
bidPricelist[float]多档委买价
bidVollist[int]多档委买量

l2quoteaux - Level2行情快照补充

字段名数据类型解释
timeint时间戳
stimestring时间戳字符串形式
avgBidPricefloat委买均价
totalBidQuantityint委买总量
avgOffPricefloat委卖均价
totalOffQuantityint委卖总量
withdrawBidQuantityint买入撤单总量
withdrawBidAmountfloat买入撤单总额
withdrawOffQuantityint卖出撤单总量
withdrawOffAmountfloat卖出撤单总额

l2order - Level2逐笔委托

字段名数据类型解释
timeint时间戳
stimefloat时间戳浮点数形式
pricefloat委托价
volumeint委托量
entrustNoint委托号
entrustTypeint委托类型
entrustDirectionint委托方向

提示

注:上交所的撤单信息在逐笔委托的委托方向,区分撤买撤卖

  • 0 - 未知
  • 1 - 买入
  • 2 - 卖出
  • 3 - 撤买(上交所)
  • 4 - 撤卖(上交所)

l2transaction - Level2逐笔成交

字段名数据类型解释
timeint时间戳
stimestring时间戳字符串形式
pricefloat成交价
volumeint成交量
amountfloat成交额
tradeIndexint成交记录号
buyNoint买方委托号
sellNoint卖方委托号
tradeTypeint成交类型
tradeFlagint成交标志

提示

深交所逐笔成交的撤单标志,没有方向

  • 0 - 未知
  • 1 - 外盘,主买
  • 2 - 内盘,主卖
  • 3 - 撤单

l2transactioncount - Level2逐笔成交统计

字段名数据类型解释
timeint时间戳
bidNumberint主买单总单数
offNumberint主卖单总单数
ddxfloat大单动向
ddyfloat涨跌动因
ddzfloat大单差分
netOrderint净挂单量
netWithdrawint净撤单量
withdrawBidint总撤买量
withdrawOffint总撤卖量
bidNumberDxint主买单总单数增量
offNumberDxint主卖单总单数增量
transactionNumberint成交笔数增量
bidMostAmountfloat主买特大单成交额
bidBigAmountfloat主买大单成交额
bidMediumAmountfloat主买中单成交额
bidSmallAmountfloat主买小单成交额
bidTotalAmountfloat主买累计成交额
offMostAmountfloat主卖特大单成交额
offBigAmountfloat主卖大单成交额
offMediumAmountfloat主卖中单成交额
offSmallAmountfloat主卖小单成交额
offTotalAmountfloat主卖累计成交额
unactiveBidMostAmountfloat被动买特大单成交额
unactiveBidBigAmountfloat被动买大单成交额
unactiveBidMediumAmountfloat被动买中单成交额
unactiveBidSmallAmountfloat被动买小单成交额
unactiveBidTotalAmountfloat被动买累计成交额
unactiveOffMostAmountfloat被动卖特大单成交额
unactiveOffBigAmountfloat被动卖大单成交额
unactiveOffMediumAmountfloat被动卖中单成交额
unactiveOffSmallAmountfloat被动卖小单成交额
unactiveOffTotalAmountfloat被动卖累计成交额
netInflowMostAmountfloat净流入超大单成交额
netInflowBigAmountfloat净流入大单成交额
netInflowMediumAmountfloat净流入中单成交额
netInflowSmallAmountfloat净流入小单成交额
bidMostVolumeint主买特大单成交量
bidBigVolumeint主买大单成交量
bidMediumVolumeint主买中单成交量
bidSmallVolumeint主买小单成交量
bidTotalVolumeint主买累计成交量
offMostVolumeint主卖特大单成交量
offBigVolumeint主卖大单成交量
offMediumVolumeint主卖中单成交量
offSmallVolumeint主卖小单成交量
offTotalVolumeint主卖累计成交量
unactiveBidMostVolumeint被动买特大单成交量
unactiveBidBigVolumeint被动买大单成交量
unactiveBidMediumVolumeint被动买中单成交量
unactiveBidSmallVolumeint被动买小单成交量
unactiveBidTotalVolumeint被动买累计成交量
unactiveOffMostVolumeint被动卖特大单成交量
unactiveOffBigVolumeint被动卖大单成交量
unactiveOffMediumVolumeint被动卖中单成交量
unactiveOffSmallVolumeint被动卖小单成交量
unactiveOffTotalVolumeint被动卖累计成交量
netInflowMostVolumeint净流入超大单成交量
netInflowBigVolumeint净流入大单成交量
netInflowMediumVolumeint净流入中单成交量
netInflowSmallVolumeint净流入小单成交量
bidMostAmountDxfloat主买特大单成交额增量
bidBigAmountDxfloat主买大单成交额增量
bidMediumAmountDxfloat主买中单成交额增量
bidSmallAmountDxfloat主买小单成交额增量
bidTotalAmountDxfloat主买累计成交额增量
offMostAmountDxfloat主卖特大单成交额增量
offBigAmountDxfloat主卖大单成交额增量
offMediumAmountDxfloat主卖中单成交额增量
offSmallAmountDxfloat主卖小单成交额增量
offTotalAmountDxfloat主卖累计成交额增量
unactiveBidMostAmountDxfloat被动买特大单成交额增量
unactiveBidBigAmountDxfloat被动买大单成交额增量
unactiveBidMediumAmountDxfloat被动买中单成交额增量
unactiveBidSmallAmountDxfloat被动买小单成交额增量
unactiveBidTotalAmountDxfloat被动买累计成交额增量
unactiveOffMostAmountDxfloat被动卖特大单成交额增量
unactiveOffBigAmountDxfloat被动卖大单成交额增量
unactiveOffMediumAmountDxfloat被动卖中单成交额增量
unactiveOffSmallAmountDxfloat被动卖小单成交额增量
unactiveOffTotalAmountDxfloat被动卖累计成交额增量
netInflowMostAmountDxfloat净流入超大单成交额增量
netInflowBigAmountDxfloat净流入大单成交额增量
netInflowMediumAmountDxfloat净流入中单成交额增量
netInflowSmallAmountDxfloat净流入小单成交额增量
bidMostVolumeDxint主买特大单成交量增量
bidBigVolumeDxint主买大单成交量增量
bidMediumVolumeDxint主买中单成交量增量
bidSmallVolumeDxint主买小单成交量增量
bidTotalVolumeDxint主买累计成交量增量
offMostVolumeDxint主卖特大单成交量增量
offBigVolumeDxint主卖大单成交量增量
offMediumVolumeDxint主卖中单成交量增量
offSmallVolumeDxint主卖小单成交量增量
offTotalVolumeDxint主卖累计成交量增量
unactiveBidMostVolumeDxint被动买特大单成交量增量
unactiveBidBigVolumeDxint被动买大单成交量增量
unactiveBidMediumVolumeDxint被动买中单成交量增量
unactiveBidSmallVolumeDxint被动买小单成交量增量
unactiveBidTotalVolumeDxint被动买累计成交量增量
unactiveOffMostVolumeDxint被动卖特大单成交量增量
unactiveOffBigVolumeDxint被动卖大单成交量增量
unactiveOffMediumVolumeDxint被动卖中单成交量增量
unactiveOffSmallVolumeDxint被动卖小单成交量增量
unactiveOffTotalVolumeDxint被动卖累计成交量增量
netInflowMostVolumeDxint净流入超大单成交量增量
netInflowBigVolumeDxint净流入大单成交量增量
netInflowMediumVolumeDxint净流入中单成交量增量
netInflowSmallVolumeDxint净流入小单成交量增量

l2orderqueue - Level2委买委卖队列

交易类

Account - 账户对象

字段名数据类型解释
m_strAccountIDstr资金账号,用于识别不同的资金账户
m_nBrokerTypeint账号类型,表示账号的具体种类
m_dMaxMarginRatefloat保证金比率,通常用于期货账号
m_dFrozenMarginfloat冻结保证金,指投资者在交易中被冻结的保证金金额
m_dFrozenCashfloat冻结金额,指投资者在交易中被冻结的资金金额
m_dFrozenCommissionfloat冻结手续费,指投资者在交易中被冻结的手续费金额
m_dRiskfloat风险度,指投资者账户的风险程度
m_dNavfloat单位净值,用于表示基金的净值
m_dPreBalancefloat期初权益,指期初时账户的资金金额
m_dBalancefloat总资产,表示账户的总资金金额
m_dAvailablefloat可用金额,指账户中可用于交易和提取的资金金额
m_dCommissionfloat手续费 (旧版本为 m_dComission)
m_dPositionProfitfloat持仓盈亏,指当前持有的证券或期货合约的盈亏金额
m_dCloseProfitfloat平仓盈亏,在期货交易中表示已经平仓的交易的盈亏金额
m_dCashInfloat出入金净值,表示账户中出入金的净额
m_dCurrMarginfloat当前使用的保证金金额
m_dInitBalancefloat初始权益,指账户初始时的权益金额
m_strStatusstr状态,表示账户的当前状态
m_dInitCloseMoneyfloat期初平仓盈亏,指账户初始时的平仓盈亏金额
m_dInstrumentValuefloat总市值,表示持有的证券或期货合约的总市值
m_dDepositfloat入金,指账户中的入金金额
m_dWithdrawfloat出金,指账户中的出金金额
m_dPreCreditfloat上次信用额度,用于表示上次的信用额度
m_dPreMortgagefloat上次质押,指上次的质押金额
m_dMortgagefloat质押,指当前的质押金额
m_dCreditfloat信用额度,表示账户的信用额度
m_dAssetBalancefloat证券初始资金,表示股票账户的初始资金
m_strOpenDatestr起始日期,表示账户的起始日期
m_dFetchBalancefloat可取金额,指账户中可取出的金额
m_strTradingDatestr交易日,表示当前的交易日期
m_dStockValuefloat股票总市值,表示股票账户中持有的股票的总市值
m_dLoanValuefloat债券总市值,表示账户中持有的债券的总市值
m_dFundValuefloat基金总市值,包括ETF和封闭式基金在内的基金的总市值
m_dRepurchaseValuefloat回购总市值,表示账户中持有的所有回购交易的总市值
m_dLongValuefloat多单总市值,指现货账户中多单持仓的总市值
m_dShortValuefloat空单总市值,指现货账户中空单持仓的总市值
m_dNetValuefloat净持仓总市值,指现货账户中多单总市值减去空单总市值的差额
m_dAssureAssetfloat净资产,表示账户的净资产金额
m_dTotalDebitfloat总负债,表示账户的总负债金额
m_dEntrustAssetfloat可信资产,用于校对账户资金的准确性
m_dInstrumentValueRMBfloat总市值(人民币),指沪港通账户中的持仓证券的总市值
m_dSubscribeFeefloat申购费,指申购基金时支付的费用
m_dGoldValuefloat库存市值,表示黄金现货账户中黄金库存的市值
m_dGoldFrozenfloat现货冻结,表示黄金现货账户中被冻结的黄金金额
m_dMarginfloat占用保证金,用于维持保证金
m_strMoneyTypestr币种,表示账户的资金所使用的货币种类
m_dPurchasingPowerfloat购买力,指账户可用于购买投资品的金额
m_dRawMarginfloat原始保证金,指期货账户中的原始保证金金额
m_dBuyWaitMoneyfloat买入待交收金额(元),指账户中买入股票但尚未交收的金额
m_dSellWaitMoneyfloat卖出待交收金额(元),指账户中卖出股票但尚未交收的金额
m_dReceiveInterestTotalfloat本期间应计利息,指账户本期间内应计的利息金额
m_dRoyaltyfloat权利金收支,指期货期权交易中的权利金收支金额
m_dFrozenRoyaltyfloat冻结权利金,指期货期权交易中被冻结的权利金金额
m_dRealUsedMarginfloat实时占用保证金,用于股票期权交易中表示实时占用的保证金金额
m_dRealRiskDegreefloat实时风险度,用于股票期权交易中表示实时的风险度

Order - 委托对象

字段数据类型解释
m_strAccountIDstr资金账号,账号,账号,资金账号
m_strExchangeIDstr证券市场
m_strExchangeNamestr交易市场
m_strProductIDstr品种代码
m_strProductNamestr品种名称
m_strInstrumentIDstr证券代码
m_strInstrumentNamestr证券名称,合约名称
m_nRefint订单编号
m_strOrderRefstr内部委托号,下单引用等于股票的内部委托号
m_nOrderPriceTypeintEBrokerPriceType 类型,例如市价单、限价单
m_nDirectionintEEntrustBS 类型,操作,多空,期货多空,股票买卖永远是 48,其他的 dir 同理
m_nOffsetFlagintEOffset_Flag_Type类型,买卖/开平,用此字段区分股票买卖,期货开、平仓,期权买卖等
m_nHedgeFlagintEHedge_Flag_Type 类型,投保
m_dLimitPricefloat委托价格,限价单的限价,即报价
m_nVolumeTotalOriginalint委托数量,最初的委托数量
m_nOrderSubmitStatusintEEntrustSubmitStatus 类型,报单状态,提交状态,股票中不需要报单状态
m_strOrderSysIDstr合同编号,委托号
m_nOrderStatusintEEntrustStatus,委托状态
m_nVolumeTradedint成交数量,已成交量
m_nVolumeTotalint委托剩余量,当前总委托量,股票中表示总委托量减去成交量
m_nErrorIDint状态ID
m_strErrorMsgstr状态信息
m_nTaskIdint任务号
m_dFrozenMarginfloat冻结金额,冻结保证金
m_dFrozenCommissionfloat冻结手续费
m_strInsertDatestr委托日期,报单日期
m_strInsertTimestr委托时间
m_dTradedPricefloat成交均价(股票)
m_dCancelAmountfloat已撤数量
m_strOptNamestr买卖标记,展示委托属性的中文
m_dTradeAmountfloat成交金额,期货的计算方式为均价乘以数量乘以合约乘数
m_eEntrustTypeintEEntrustTypes,委托类别
m_strCancelInfostr废单原因
m_strUnderCodestr标的证券代码
m_eCoveredFlagint备兑标记,'0’表示非备兑,'1’表示备兑
m_dOrderPriceRMBfloat委托价格(人民币),目前用于港股通
m_dTradeAmountRMBfloat成交金额(人民币),目前用于港股通
m_dReferenceRatefloat汇率,目前用于港股通
m_strCompactNostr合约编号
m_eCashgroupPropintEXTCompactBrushSource类型,头寸来源
m_dShortOccupedMarginfloat预估在途占用保证金,用于期权
m_strXTTradestr是否是迅投交易
m_strAccountKeystr账号key,唯一区别不同账号的key
m_strRemarkstr投资备注

Deal - 成交对象

字段数据类型解释
m_strAccountIDstr资金账号
m_strExchangeIDstr证券市场
m_strExchangeNamestr交易市场
m_strProductIDstr品种代码
m_strProductNamestr品种名称
m_strInstrumentIDstr证券代码
m_strInstrumentNamestr证券名称
m_strTradeIDstr成交编号
m_strOrderRefstr下单引用,等于股票的内部委托号
m_strOrderSysIDstr合同编号,报单编号,委托号
m_nDirectionintEEntrustBS,买卖方向 对于股票该值始终是48
m_nOffsetFlagintEOffset_Flag_Type,买卖/开平,用此字段区分股票买卖,期货开、平仓,期权买卖等
m_nHedgeFlagintEHedge_Flag_Type 类型,投保
m_dPricefloat成交均价
m_nVolumeint成交量,期货单位手,股票做到股
m_strTradeDatestr成交日期
m_strTradeTimestr成交时间
m_dCommissionfloat手续费 (旧版本为 m_dComission)
m_dTradeAmountfloat成交额,期货 = 均价 * 量 * 合约乘数
m_nTaskIdint任务号
m_nOrderPriceTypeintEBrokerPriceType 类型,例如市价单、限价单
m_strOptNamestr买卖标记,展示委托属性的中文
m_eEntrustTypeintEEntrustTypes,委托类别
m_eFutureTradeTypeintEFutureTradeType 类型,成交类型
m_nRealOffsetFlagintEOffset_Flag_Type 类型,实际开平,主要是区分平今和平昨
m_eCoveredFlagintECoveredFlag类型,备兑标记 '0' - 非备兑,'1' - 备兑
m_nCloseTodayVolumeint平今量,不显示
m_dOrderPriceRMBfloat委托价格(人民币),目前用于港股通
m_dPriceRMBfloat成交价格(人民币),目前用于港股通
m_dTradeAmountRMBfloat成交金额(人民币),目前用于港股通
m_dReferenceRatefloat汇率,目前用于港股通
m_strXTTradestr是否是迅投交易
m_strCompactNostr合约编号
m_dCloseProfitfloat平仓盈亏,目前用于外盘
m_strRemarkstr投资备注
m_strAccountKeystr账号key,唯一区别不同账号的key
m_nRefint订单编号

Position - 持仓对象

字段名数据类型含义
m_strAccountIDstring资金账号
m_strExchangeIDstring证券市场
m_strExchangeNamestring市场名称
m_strProductIDstring品种代码
m_strProductNamestring品种名称
m_strInstrumentIDstring证券代码
m_strInstrumentNamestring证券名称
m_nHedgeFlagintEHedge_Flag_Type 类型,投保 ,股票不适用
m_nDirectionintEEntrustBS,买卖方向 对于股票该值始终是48
m_strOpenDatestring开仓日期 股票此字段无效
m_strTradeIDstring成交号,最初开仓位的成交
m_nVolumeint当前拥股/持仓量
m_dOpenPricefloat持仓成本 ;持仓成本 = (总买入金额 - 总卖出金额) / 剩余数量
m_strTradingDaystring在实盘运行中是当前交易日,在回测中是股票最后交易过的日期
m_dMarginfloat使用的保证金,历史的直接用ctp的,新的自己用成本价存量系数算,股票不适用
m_dOpenCostfloat开仓成本,等于成本价*第一次建仓的量,后续减持会影响,不算手续费,股票不适用
m_dSettlementPricefloat最新结算价/当前价
m_nCloseVolumeint平仓量(对于股票不适用)
m_dCloseAmountfloat平仓额(对于股票不适用)
m_dFloatProfitfloat浮动盈亏
m_dCloseProfitfloat平仓盈亏(对于股票不适用)
m_dMarketValuefloat市值/合约价值
m_dPositionCostfloat持仓成本(对于股票不适用)
m_dPositionProfitfloat持仓盈亏(对于股票不适用)
m_dLastSettlementPricefloat最新结算价(对于股票不适用)
m_dInstrumentValuefloat合约价值(对于股票不适用)
m_bIsTodaybool是否今仓
m_strStockHolderstring股东账号
m_nFrozenVolumeint冻结数量
m_nCanUseVolumeint可用余额
m_nOnRoadVolumeint在途股份
m_nYesterdayVolumeint昨夜拥股
m_dLastPricefloat最新价/当前价
m_dAvgOpenPricefloat开仓均价(对于股票不适用)
m_dProfitRatefloat盈亏比例
m_eFutureTradeTypeintEFutureTradeType 类型,成交类型
m_strExpireDatestring到期日(针对逆回购)
m_strComTradeIDstring组合成交号
m_nLegIdint组合序号
m_dTotalCostfloat累计成本(自定义,股票信用用到)
m_dSingleCostfloat单股成本(自定义,股票信用用
m_nCoveredVolumeint备兑数量,用于个股期权
m_eSideFlagint持仓类型 ,用于个股期权,标记 '0' - 权利,'1' - 义务,'2' - '备兑'
m_dReferenceRatefloat汇率,目前用于港股通
m_dStructFundVolfloat分级基金可用(可分拆或可合并)
m_dRedemptionVolumefloat分级基金可赎回量
m_nPREnableVolumeint申赎可用量(记录当日申购赎回的股票或基金数量)
m_dRealUsedMarginfloat实时占用保证金,用于期权
m_dRoyaltyfloat权利金
m_dStockLastPricefloat标的证券最新价,用于期权
m_dStaticHoldMarginfloat静态持仓占用保证金,用于期权
m_nOptCombUsedVolumeint期权组合占用数量
m_nEnableExerciseVolumeint能够行使的数量,用于个股期权
m_strAccountKeystring账号key,唯一区别不同账号的key

PositionStatistics - 持仓统计对象

字段名数据类型描述
m_strAccountIDstring账号
m_strExchangeIDstring市场代码
m_strExchangeNamestring市场名称
m_strProductIDstring品种代码
m_strInstrumentIDstring合约代码
m_strInstrumentNamestring合约名称
m_nDirectionint多空
m_nHedgeFlagint投保
m_nPositionint持仓
m_nYestodayPositionint昨仓
m_nTodayPositionint今仓
m_nCanCloseVolint可平
m_dPositionCostfloat持仓成本
m_dAvgPricefloat持仓均价
m_dPositionProfitfloat持仓盈亏
m_dFloatProfitfloat浮动盈亏
m_dOpenPricefloat开仓均价
m_dUsedMarginfloat已使用保证金
m_dUsedCommissionfloat已使用的手续费
m_dFrozenMarginfloat冻结保证金
m_dFrozenCommissionfloat冻结手续费
m_dInstrumentValuefloat市值,合约价值
m_nOpenTimesint开仓次数
m_nOpenVolumeint总开仓量 中间平仓不减
m_nCancelTimesint撤单次数
m_dLastPricefloat最新价
m_dRiseRatiofloat当日涨幅
m_strProductNamestring产品名称
m_dRoyaltyfloat权利金市值
m_strExpireDatestring到期日
m_dAssestWeightfloat资产占比
m_dIncreaseBySettlementfloat当日涨幅(结)
m_dMarginRatiofloat保证金占比
m_dFloatProfitDivideByUsedMarginfloat浮盈比例(保证金)
m_dFloatProfitDivideByBalancefloat浮盈比例(动态权益)
m_dTodayProfitLossfloat当日盈亏(结)
m_nYestodayInitPositionint昨日持仓
m_dFrozenRoyaltyfloat冻结权利金
m_dTodayCloseProfitLossfloat当日盈亏(收)
m_dCloseProfitfloat平仓盈亏
m_strFtProductNamestring品种名称
m_dOpenCostfloat开仓成本

CCreditAccountDetail - 信用账号对象(非查柜台)

字段名数据类型解释
m_strAccountIDstr资金账号
m_nBrokerTypeint账号类型,1-期货账号,2-股票账号,3-信用账号,5-期货期权账号,6-股票期权账号,7-沪港通账号,11-深港通账号
m_strAccountKeystr唯一区别不同账号的key
m_dMaxMarginRatefloat保证金比率,股票的保证金率等于1
m_dFrozenMarginfloat冻结保证金,外源性,股票的保证金就是冻结资金,股票不适用
m_dFrozenCashfloat冻结金额,内外源冻结保证金和手续费四个的和
m_dFrozenCommissionfloat冻结手续费,外源性冻结资金源
m_dRiskfloat风险度,冻结资金/可用资金
m_dNavfloat单位净值
m_dPreBalancefloat期初权益,也叫静态权益,股票不适用
m_dBalancefloat总资产,动态权益,即市值
m_dAvailablefloat可用金额
m_dCommissionfloat手续费(旧版本为 m_dComission)
m_dPositionProfitfloat持仓盈亏
m_dCloseProfitfloat平仓盈亏,股票不适用
m_dCashInfloat出入金净值
m_dCurrMarginfloat当前使用的保证金,股票不适用
m_dInitBalancefloat初始权益
m_strStatusstr状态
m_dInitCloseMoneyfloat期初平仓盈亏,初始平仓盈亏
m_dInstrumentValuefloat总市值,合约价值,合约价值
m_dDepositfloat入金
m_dWithdrawfloat出金
m_dPreCreditfloat上次信用额度,股票不适用
m_dPreMortgagefloat上次质押,股票不适用
m_dMortgagefloat质押,股票不适用
m_dCreditfloat信用额度,股票不适用
m_dAssetBalancefloat证券初始资金,股票不适用
m_strOpenDatestr起始日期股票不适用
m_dFetchBalancefloat可取金额
m_strTradingDatestr交易日
m_dStockValuefloat股票总市值,期货没有
m_dLoanValuefloat债券总市值,期货没有
m_dFundValuefloat基金总市值,包括 ETF 和封闭式基金,期货没有
m_dRepurchaseValuefloat回购总市值,所有回购,期货没有
m_dLongValuefloat多单总市值,现货没有
m_dShortValuefloat单总市值,现货没有
m_dNetValuefloat净持仓总市值,净持仓市值 = 多 - 空
m_dAssureAssetfloat净资产
m_dEntrustAssetfloat可信资产,用于校对
m_dInstrumentValueRMBfloat总市值(人民币),沪港通
m_dSubscribeFeefloat申购费,申购费
m_dGoldValuefloat库存市值,黄金现货库存市值
m_dGoldFrozenfloat现货冻结,黄金现货冻结
m_dMarginfloat占用保证金,维持保证金
m_strMoneyTypestr币种
m_dPurchasingPowerfloat购买力,盈透购买力
m_dRawMarginfloat原始保证金
m_dBuyWaitMoneyfloat买入待交收金额(元),买入待交收
m_dSellWaitMoneyfloat卖出待交收金额(元),卖出待交收
m_dReceiveInterestTotalfloat本期间应计利息
m_dRoyaltyfloat权利金收支,期货期权用
m_dFrozenRoyaltyfloat冻结权利金,期货期权用
m_dRealUsedMarginfloat实时占用保证金,用于股票期权
m_dRealRiskDegreefloat实时风险度
m_dPerAssurescaleValuefloat个人维持担保比例
m_dEnableBailBalancefloat可用保证金
m_dUsedBailBalancefloat已用保证金
m_dAssureEnbuyBalancefloat可买担保品资金
m_dFinEnbuyBalancefloat可买标的券资金
m_dSloEnrepaidBalancefloat可还券资金
m_dFinEnrepaidBalancefloat可还款资金
m_dFinMaxQuotafloat融资授信额度
m_dFinEnableQuotafloat融资可用额度
m_dFinUsedQuotafloat融资已用额度
m_dFinUsedBailfloat融资已用保证金额
m_dFinCompactBalancefloat融资合约金额
m_dFinCompactFarefloat融资合约费用
m_dFinCompactInterestfloat融资合约利息
m_dFinMarketValuefloat融资市值
m_dFinIncomefloat融资合约盈亏
m_dSloMaxQuotafloat融券授信额度
m_dSloEnableQuotafloat融券可用额度
m_dSloUsedQuotafloat融券已用额度
m_dSloUsedBailfloat融券已用保证金额
m_dSloCompactBalancefloat融券合约金额
m_dSloCompactFarefloat融券合约费用
m_dSloCompactInterestfloat融券合约利息
m_dSloMarketValuefloat融券市值
m_dSloIncomefloat融券合约盈亏
m_dOtherFarefloat其它费用
m_dUnderlyMarketValuefloat标的证券市值
m_dFinEnableBalancefloat可融资金额
m_dDiffEnableBailBalancefloat可用保证金调整值
m_dBuySecuRepayFrozenMarginfloat买券还券冻结资金
m_dBuySecuRepayFrozenCommissionfloat买券还券冻结手续费
m_dSpecialEnableBalancefloat专项可融金额
m_dEncumberedAssetsfloat担保资产
m_dSloSellBalancefloat融券卖出资金
m_dDiffAssureEnbuyBalancefloat可买担保品资金调整值
m_dDiffFinEnbuyBalancefloat可买标的券资金调整值
m_dDiffFinEnrepaidBalancefloat可还款资金调整值
m_dOtherRealCompactBalancefloat其他负债合约金额
m_dOtherFinCompactInterestfloat其他负债合约利息金额
m_dUsedSloSellBalancefloat已用融券卖出资金
m_dFetchAssetBalancefloat可提出资产总额
m_dTotalEnableQuotafloat可用总信用额度
m_dTotalUsedQuotafloat已用总信用额度
m_dDebtProfitfloat负债总浮盈
m_dDebtLossfloat负债总浮亏
m_nContractEndDateint合同到期日期
m_dFinDebtfloat融资负债
m_dFinProfitAmortizedfloat融资浮盈折算
m_dSloProfitfloat融券浮盈
m_dSloProfitAmortizedfloat融券浮盈折算
m_dFinLossfloat融资浮亏
m_dSloLossfloat融券浮亏

CCreditDetail - 两融资金信息(查柜台)

字段名数据类型解释
m_dPerAssurescaleValuefloat维持担保比例
m_dBalancefloat总资产
m_dTotalDebtfloat总负债
m_dAssureAssetfloat净资产
m_dMarketValuefloat总市值
m_dEnableBailBalancefloat可用保证金
m_dAvailablefloat可用资金
m_dFinDebtfloat融资负债
m_dFinDealAvlfloat融资本金
m_dFinFeefloat融资息费
m_dSloDebtfloat融券负债
m_dSloMarketValuefloat融券市值
m_dSloFeefloat融券息费
m_dOtherFarefloat其它费用
m_dFinMaxQuotafloat融资授信额度
m_dFinEnableQuotafloat融资可用额度
m_dFinUsedQuotafloat融资冻结额度
m_dSloMaxQuotafloat融券授信额度
m_dSloEnableQuotafloat融券可用额度
m_dSloUsedQuotafloat融券冻结额度
m_dSloSellBalancefloat融券卖出资金
m_dUsedSloSellBalancefloat已用融券卖出资金
m_dSurplusSloSellBalancefloat剩余融券卖出资金
m_dStockValuefloat股票市值
m_dFundValuefloat基金市值
errorstring错误信息

CreditSloEnableAmount - 可融券明细对象

提示

由于字段m_dSloRatio、m_dSloStatus提供来源和取担保品明细get_assure_contract重复,字段在2021年9月移除,后续用担保品明细接口获取,具体见 担保标的对象字段说明

字段名数据类型解释
m_nPlatformIDint平台号
m_strBrokerIDstring经纪公司编号
m_strBrokerNamestring经纪公司
m_strAccountIDstring资金账号
m_strExchangeIDstring交易所
m_strInstrumentIDstring证券代码
m_nEnableAmountint融券可融数量
m_eQuerySloTypeenumEXTSloTypeQueryMode,查询类型

StkCompacts - 负债合约对象

字段名数据类型解释
m_strAccountIDstring资金账号,账号,账号,资金账号
m_strExchangeIDstring交易所
m_strInstrumentIDstring证券代码
m_strExchangeNamestring交易所名称
m_strInstrumentNamestring股票名称
m_nOpenDateint合约开仓日期
m_strCompactIdstring合约编号
m_dCrdtRatiofloat融资融券保证金比例
m_strEntrustNostring委托编号
m_dEntrustPricefloat委托价格
m_nEntrustVolint委托数量
m_nBusinessVolint合约开仓数量
m_dBusinessBalancefloat合约开仓金额
m_dBusinessFarefloat合约开仓费用
m_eCompactTypeenumEXTCompactType,合约类型
m_eCompactStatusenumEXTCompactStatus,合约状态
m_dRealCompactBalancefloat未还合约金额
m_nRealCompactVolint未还合约数量
m_dRealCompactFarefloat未还合约费用
m_dRealCompactInterestfloat未还合约利息
m_dRepaidInterestfloat已还利息
m_nRepaidVolint已还数量
m_dRepaidBalancefloat已还金额
m_dCompactInterestfloat合约总利息
m_dUsedBailBalancefloat占用保证金
m_dYearRatefloat合约年利率
m_nRetEndDateint归还截止日
m_strDateClearstring了结日期
m_strPositionStrstring定位串
m_dPricefloat最新价
m_nOpenTimeint合约开仓时间
m_nCancelVolint合约撤单数量
m_eCashgroupPropenumEXTCompactBrushSource,头寸来源
m_dUnRepayBalancefloat负债金额
m_nRepayPriorityint偿还优先级
m_dRealDefaultInterestfloat未还罚息
m_dOtherRealCompactBalancefloat其他负债合约金额
m_dOtherRealCompactInterestfloat其他负债合约利息金额

StkSubjects - 担保标的对象

字段名数据类型解释
m_nPlatformIDint平台号//目前主要用于区别不同的行情,根据此来选择对应行情
m_strBrokerIDstring经纪公司编号
m_strBrokerNamestring经纪公司名称
m_strExchangeIDstring交易所
m_strInstrumentIDstring证券代码
m_dSloRatiofloat融券保证金比例
m_eSloStatusenumEXTSubjectsStatus,融券状态
m_dFinRatiofloat融资保证金比例
m_eFinStatusenumEXTSubjectsStatus,融资状态
m_strAccountIDstring资金账号
m_eCreditFundCtlenumEXTCreditFundCtl,融资交易控制
m_eCreditStkCtlenumEXTCreditStkCtl,融券交易控制
m_eAssureStatusenumEXTSubjectsStatus,是否可做担保
m_dAssureRatiofloat担保品折算比例

PassorderArguments - 下单函数参数对象

字段名数据类型解释
opTypeintpassorder的opType参数
orderTypeintpassorder的orderType参数
accountIDstring资金账号
orderCodestring交易代码
prTypeintpassorder的prType,价格类型
modelPricefloat下单价格
modelVolumeint下单量(手数或股数)
strategyNamestring策略名 _ &&& _ 投资备注

CTaskDetail - 任务对象

字段名数据类型解释
m_nTaskIdint任务号
m_eStatusenum任务状态 ETaskStatus类型,见ETaskStatus说明
m_strMsgstring任务状态消息
m_startTimeint任务开始时间, 时间戳类型
m_endTimeint任务结束时间, 时间戳类型
m_cancelTimeint任务取消时间
m_nBusinessNumint已成交量
m_nGroupIdint组合Id
m_stockCodestring下单代码(不针对组合下单)
m_strAccountIDstring下单用户(单用户下单)
m_eOperationTypeenum下单操作:开平、多空……EOperationType类型, 见EOperationType说明
m_eOrderTypeenum算法交易、普通交易 EOrderType类型, 见EOrderType说明
m_ePriceTypeenum报价方式:对手、最新…… EPriceType类型见EPriceType说明
m_dFixPricefloat委托价
m_nNumint委托量
m_strRemarkstring投资备注

CLockPosition - 期权标的持仓

字段名数据类型解释
m_strAccountIDstring账号名
m_strExchangeIDstring交易所
m_strExchangeNamestring交易所名
m_strInstrumentIDstring标的代码
m_strInstrumentNamestring标的名称
m_totalVolint总持仓量
m_lockVolint可用锁定量
m_unlockVolint未锁定量
m_coveredVolint备兑量
m_nOnRoadcoveredVolint在途备兑量

CStkOptCombPositionDetail - 期权组合持仓

字段名数据类型解释
m_strAccountIDstring账号名
m_strExchangeIDstring交易所
m_strExchangeNamestring交易所名
m_strContractAccountstring合约账号
m_strCombIDstring组合编号
m_strCombCodestring组合策略编码
m_strCombCodeNamestring组合策略名称
m_nVolumeint持仓量
m_nFrozenVolumeint冻结数量
m_nCanUseVolumeint可用数量
m_strFirstCodestring合约一
m_eFirstCodeTypeenum合约一类型 认购:48,认沽:49
m_strFirstCodeNamestring合约一名称
m_eFirstCodePosTypeenum合约一持仓类型 认购:48,义务:49,备兑:50
m_nFirstCodeAmtint合约一数量
m_strSecondCodestring合约二
m_eSecondCodeTypeenum合约二类型 认购:48,认沽:49
m_strSecondCodeNamestring合约二名称
m_eSecondCodePosTypeenum合约二持仓类型 权利:48,义务:49,备兑:50
m_nSecondCodeAmtint合约二数量
m_dCombBailBalancefloat占用保证金

entrustType - 委托类型

  • 0 - 未知
  • 1 - 正常交易业务
  • 2 - 即时成交剩余撤销
  • 3 - ETF基金申报
  • 4 - 最优五档即时成交剩余撤销
  • 5 - 全额成交或撤销
  • 6 - 本方最优价格
  • 7 - 对手方最优价格

openInt - 证券状态

编码状态
0,10默认为未知
1停牌
11开盘前S
12集合竞价时段C
13连续交易T
14休市B
15闭市E
16波动性中断V,例如(10006742.SHO)50ETF沽9月2300在2024/08/28 10:15:34 - 2024/08/28 10:18:34 触发熔断临时停牌,此时的openInt值为16
17临时停牌P
18收盘集合竞价U
19盘中集合竞价M
20暂停交易至闭市N
21获取字段异常
22盘后固定价格行情
23盘后固定价格行情完毕

系统函数

签名、参数、枚举按官方手册整理,全部在本页。

ContextInfo 对象

ContextInfo 是策略运行环境对象,是 init, after_init, handlebar 等基本方法的入参,里面包括了终端自带的属性和方法。一般情况下不建议对ContextInfo添加自定义属性,ContextInfo会随着bar的切换而重置到上一根bar的结束状态,建议用自建的全局变量来存储。详细说明请看这里

init - 初始化函数

初始化函数,只在整个策略开始时调用运行到一次。用于初始订阅行情,订阅账号信息使用。init函数执行完成前部分接口无法使用,如交易日获取函数get_trading_dates。

系统函数 不可被手动调用

参数:

名称类型描述
ContextInfoobject策略运行环境对象,可以用于存储自定义的全局变量

返回: 无

示例:

python
def init(ContextInfo):
    ContextInfo.initProfit = 0

在init函数中订阅行情示例:

python
#coding:gbk

def init(C):
    #init函数入参为ContextInfo对象 定义时可以选择更简短的形参名 如C
    #在init函数中 可以进行 订阅行情的操作
    #如需在行情回调函数中下单 下单函数需要传入ContextInfo对象 可以通过在init中定义回调函数 来使用外层的ContextInfo
    def my_callback_function(data):
        #自定义行情回调函数 入参为指数据字典
        print(data)
    stock = '600000.SH'
    C.subscribe_quote(stock, period = '5m', callback = my_callback_function)
    #init函数执行完成后 
    print('init函数执行完成')

after_init - 初始化后函数

后初始化函数,在初始化函数执行完成后被调用一次。可以用于放置一次性触发的下单,取数据操作代码。

系统会在init函数执行完后和执行handlebar之前调用after_init, 有些init里不支持的函数比如ContextInfo.get_trading_dates可以在after_init里调用。

系统函数 不可被手动调用

参数:

名称类型描述
ContextInfoobject策略运行环境对象,可以用于存储自定义的全局变量

返回: 无

示例:

python
#coding:gbk
def init(ContextInfo):
    print('init')  


def after_init(ContextInfo):
    print('系统会在init函数执行完后和执行handlebar之前调用after_init')


def handlebar(ContextInfo):
    if ContextInfo.is_last_bar():
        print('handlebar')

after_init函数中立刻下单示例:

python
#coding:gbk

def after_init(C):
    #after_init 函数 可以用于执行运行开始时 需要执行一次的代码 例如下一笔委托
    #account变量是模型交易界面 添加策略时选择的资金账号 不需要手动填写 交易模型需要在模型交易界面运行 才有效
    #快速交易参数(quickTrade )填2 passorder函数执行后立刻下单 不会等待k线走完再委托。 可以在after_init函数 run_time函数注册的回调函数里进行委托 
    msg = f"投资备注字符串 用来区分不同委托"
    passorder(23, 1101, account, '600000.SH', 5, -1, 100, '测试下单', 2, msg, C)

handlebar - 行情事件函数

系统函数 不可被手动调用

释义: 行情事件函数,每根 K 线运行一次;实时行情获取状态下,先每根历史 K 线运行一次,再在每个 tick 数据来后驱动运行一次

历史k线上,按时间顺序每根K线触发一次调用;盘中,每个新到达的TICK数据驱动运行一次。可以作为行情驱动的函数,实现指标计算,回测,实盘下单的效果。

参数:

名称类型描述
ContextInfoobject策略运行环境对象,可以用于存储自定义的全局变量

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 输出当前运行到的 K 线的位置
    print(ContextInfo.barpos)

ContextInfo.schedule_run - 设置定时器

说明

  1. 该函数是新版设置定时器函数,相比旧版run_time,新版schedule_run新增了任务分组,任务取消等多种功能

原型:

python
ContextInfo.schedule_run(
    func:Callable, # 回调函数,到达定时器预定时间时触发调用,参数为ContextInfo类型,无需返回值
    time_point:Union[dt.datetime,str], # 表示预定的第一次触发时间,如果设置定时器时已经过了预定时间,会立即执行func以及后续逻辑;当使用str类型时,格式为'yyyymmddHHMMSS'如'20231231235959',需要满足转换dt.datetime.strptime('20231231235959','%Y%m%d%H%M%S')
    repeat_times:int=0, # 表示在预定时间触发后按interval间隔再触发多少次
    interval:datetime.timedelta=None, # 表示预定时间触发后的后续重复执行的时间间隔
    name:str='' # 定时器任务组名,可用于定时器分组,多次设置同名定时任务不会互相覆盖,会计入同一个任务组,按任务组名取消时会全部取消
    )

参数:

名称类型描述
funcCallable回调函数,到达定时器预定时间时触发调用,参数为ContextInfo类型,无需返回值,定义示例如下: / def on_timer(C:ContextInfo): pass
time_pointUnion[datetime.datetime,str]表示预定的第一次触发时间,如果设置定时器时已经过了预定时间,会立即执行func以及后续逻辑; / 当使用str类型时,格式为'yyyymmddHHMMSS'如'20231231235959',需要满足转换datetime.datetime.strptime('20231231235959','%Y%m%d%H%M%S')
repeat_timesint表示在预定时间触发后按interval间隔再触发多少次,传-1表示不限制次数
intervaldatetime.timedelta表示预定时间触发后的后续重复执行的时间间隔
namestr定时器任务组名,可用于定时器分组,多次设置同名定时任务不会互相覆盖,会计入同一个任务组,按任务组名取消时会全部取消

回调函数参数: ContextInfo:策略模型全局对象

返回值:

int类型,表示本次调用后生成的定时任务号,可用于取消本次定时任务,全局唯一不重复

示例:

python
import datetime as dt
def on_timer(C:ContextInfo):
    print('hello world')
def init(ContextInfo):
    tid=ContextInfo.schedule_run(on_timer,'20231231235959',-1,dt.timedelta(minutes=1),'my_timer')
def handlebar(ContextInfo):
    pass
#此例为自2023-12-31 23:59:59后每60s运行一次on_timer

ContextInfo.cancel_schedule_run - 取消由schedule_run产生的定时任务

原型:

python
ContextInfo.cancel_schedule_run(
    key:Union[seq:int,name:str] # 定时任务号或定时任务组名称
    )

参数:

名称类型描述
key:Union[seq:int,name:str]类型为int时,表示按任务号取消;类型为str时,表示按任务组取消,会取消组内所有定时任务

返回值:

bool类型,表示是否取消成功,即是否能按key找到目标定时任务

示例:

示例

python
ContextInfo.cancel_schedule_run('my_timer') #取消my_timer任务组所有定时任务
ContextInfo.cancel_schedule_run(1) #取消任务号为1的定时任务

ContextInfo.run_time - 设置定时器

回测无效

run_time 在模型回测里不跑。要回测把逻辑放 handlebar。新版本优先看 schedule_run

设置定时器函数,可以指定时间间隔,定时触发用户定义的回调函数。适用与在盘中,持续判断交易信号的模型。

用法: ContextInfo.run_time(funcName,period,startTime) 定时触发指定的 funcName函数, funcName函数由用户定义, 入参为ContextInfo对象。

参数:

  • funcName:回调函数名
  • period:重复调用的时间间隔,'5nSecond'表示每5秒运行1次回调函数,'5nDay'表示每5天运行一次回调函数,'500nMilliSecond'表示每500毫秒运行1次回调函数
  • startTime:表示定时器第一次启动的时间,如果要定时器立刻启动,可以设置历史的时间

回调函数参数: ContextInfo:策略模型全局对象

示例:

python
import time
def init(ContextInfo):
    ContextInfo.run_time("f","5nSecond","2019-10-14 13:20:00")
def f(ContextInfo):
    print('hello world')

#此例为自2019-10-14 13:20:00后每5s运行一次函数f

注意

  1. 模型回测时无效
  2. 定时器没有结束方法,会随着策略的结束而结束。
  3. period有nMilliSecond、nSecond和Day三个周期单元,部分周期下定时器函数在第一次运行之前会先等待一个period

stop - 停止处理函数

系统函数 不可被手动调用

释义: PY策略模型关闭停止前运行到的函数,复杂策略模型,如中间有起线程可通过在该函数内实现停止线程操作。注意, 当前版本stop函数被调用时交易连接已断开, 不能在stop函数中做报单 / 撤单操作.

参数:

名称类型描述
ContextInfoobject策略运行环境对象,可以用于存储自定义的全局变量

示例:

python
def stop(ContextInfo):
    print( 'strategy is stop !')

ContextInfo.is_last_bar - 是否为最后一根K线

用法: ContextInfo.is_last_bar()

释义: 判定是否为最后一根 K 线

参数: 无

返回: bool,返回值含义:True 是右侧最新k线 False不是最新k线

True:是

False:否

示例:

pythonresult

python
def handlebar(ContextInfo):
    print(ContextInfo.is_last_bar())

ContextInfo.is_new_bar - 判定是否为新的 K 线

用法: ContextInfo.is_new_bar()

释义: 某根 K 线的第一个 tick 数据到来时,判定该 K 线为新的 K 线,其后的tick不会认为是新的 K 线

参数: 无

返回: bool,返回值含义:

True:是

False:否

示例:

pythonresult

python
def handlebar(ContextInfo):
    print(ContextInfo.is_new_bar()) #历史k线每根都是新k线 盘中 每根新k线第一个分笔返回True 其他分笔返回False

ContextInfo.get_stock_name - 根据代码获取名称

注意

我们计划后续版本抛弃这个函数,不建议继续使用,可以用ContextInfo.get_instrument_detail("stockcode")["InstrumentName"]来实现同样功能

用法: ContextInfo.get_stock_name('stockcode')

释义: 根据代码获取名称

参数: stockcode:股票代码,如'000001.SZ',缺省值 ' ' 默认为当前图代码

返回: string(GBK编码)

示例:

示例返回值

python
def handlebar(ContextInfo):
    print(ContextInfo.get_stock_name('000001.SZ'))

ContextInfo.get_open_date - 根据代码返回对应股票的上市时间

用法: ContextInfo.get_open_date('stockcode')

释义: 根据代码返回对应股票的上市时间

参数: stockcode:股票代码,如'000001.SZ',缺省值 ' ' 默认为当前图代码

返回: number

示例:

pythonresult

python
def init(ContextInfo):
    print(ContextInfo.get_open_date('000001.SZ'))

ContextInfo.set_output_index_property - 设定指标绘制的属性

用法: ContextInfo.set_output_index_property(index_name,draw_style=0,color='white',noaxis=False,nodraw=False,noshow=False)

释义: 设定指标绘制的属性,会最终覆盖掉指标对应的属性字段

参数:

  • index_name:string,指标名称,不可缺省
  • draw_style,同paint函数的drawstyle,可缺省默认为0
  • color,同paint函数的color,可缺省默认为'white'
  • noaxis:bool,是否无坐标,可缺省默认为False
  • nodraw:bool,是否不画线,可缺省默认为False
  • noshow:bool,是否不展示,可缺省默认为False

返回: 无

示例:

pythonpythonresult

python
def init(ContextInfo):
    ContextInfo.set_output_index_property('单位净值', nodraw = True)#使回测指标'单位净值'不画线

create_sector - 创建板块

用法: create_sector(parent_node,sector_name,overwrite)

释义: 创建板块

参数:

  • parent_node:str,父节点,''为'我的'(默认目录)
  • sector_name:str,要创建的板块名
  • overwrite:bool,是否覆盖。如果目标节点已存在,为True时跳过,为False时在sector_name后增加数字编号,编号为从1开始自增的第一个不重复的值。

返回: sector_name2:实际创建的板块名

示例:

create_sector_folder - 创建板块目录节点

用法: create_sector_folder(parent_node,folder_name,overwrite)

释义: 创建板块目录节点

参数:

  • parent_node:str,父节点,''为'我的'(默认目录)
  • sector_name:str,要创建的节点名
  • overwrite:bool,是否覆盖。如果目标节点已存在,为True时跳过,为False时在folder_name后增加数字编号,编号为从1开始自增的第一个不重复的值。

返回: sector_name2:实际创建的节点名

示例:

pythonresult

python
folder=create_sector_folder('我的','新建分类',False)

get_sector_list - 获取板块目录信息

用法: get_sector_list(node)

释义: 获取板块目录信息

参数:

  • node:str,板块节点名,''为顶层目录

返回: info_list:[[s1,s2,...],[f1,f2,...]]s为板块名,f为目录节点名,例如[['我的自选'],['新建分类1']]

示例:

pythonresult

python
get_sector_list('我的')

reset_sector_stock_list - 设置板块成分股

用法: reset_sector_stock_list(sector,stock_list)

释义: 设置板块成分股

参数:

  • sector:板块名
  • stock_list:list,品种代码列表,例如['000001.SZ','600000.SH']

返回: result:bool,操作成功为True,失败为False

示例:

pythonresult

python
reset_sector_stock_list('我的自选',['000001.SZ','600000.SH'])

remove_stock_from_sector - 移除板块成分股

用法: remove_stock_from_sector(sector,stock_code)

释义: 移除板块成分股

参数:

  • sector:板块名
  • stock_code:品种代码,例如'000001.SZ'

返回: result:bool,操作成功为True,失败为False

示例:

pythonresult

python
remove_stock_from_sector('我的自选','000001.SZ')

add_stock_to_sector - 添加板块成分股

用法: add_stock_to_sector(sector,stock_code)

释义: 添加板块成分股

参数:

  • sector:板块名
  • stock_code:品种代码,例如'000001.SZ'

返回: result:bool,操作成功为True,失败为False

示例:

pythonresult

python
add_stock_to_sector('我的自选','000001.SZ')

行情函数

数据下载

download_history_data - 下载指定合约代码指定周期对应时间范围的行情数据

QMT提供的行情数据中,基础周期包含 tick 1m 5m 1d,这些是实际用于存储的周期 其他周期为合成周期,以基础周期合成得到

合成周期

  • 3m, 由1m线合成
  • 10m, 15m, 30m, 60m, 2h, 3h, 4h 由5分钟线合成
  • 2d(2日线), 3d(3日线), 5d(5日线), 1w(周线), 1mon(月线), 1q(季线), 1hy(半年线), 1y(年线) 由日线数据合成

获取合成周期时

  • 如果取历史,需要下载历史的基础周期(如取15m需要下载5m)
  • 如果取实时,可以直接订阅原始周期(如直接订阅15m)

如果同时用到基础周期和合成周期,只需要下载基础周期,例如同时使用5m和15m,因为15m也是由5m合成,所以只需要下载一次5m的数据即可

原型

内置python

python
download_history_data(stockcode,period,startTime,endTime)

释义

下载指定合约代码指定周期对应时间范围的行情数据

参数

字段名数据类型解释
stockcodestring股票代码,格式为'stkcode.market',例如 '600000.SH'
periodstringK线周期类型,包括: / 'tick':分笔线 / '1d':日线 / '1m':分钟线 / '5m':5分钟线
startTimestring起始时间,格式为 "20200101" 或 "20200101093000",可以为空
endTimestring结束时间,格式为 "20200101" 或 "20200101093000",可以为空
incrementallybool默认为 None 是否从本地最后一条数据往后增量下载,部分版本客户端可能不支持此参数

返回值

none

示例

示例

python
# coding:gbk
def init(C):
    download_history_data("000001.SZ","1d","20230101","") # 下载000001.SZ,从20230101至今的日线数据
    download_history_data("000001.SZ","1d","20230101","",incrementally=True) # 下载000001.SZ,从20230101至今的日线数据,增量下载

def handlebar(C):
    return

界面端数据下载步骤见本页 download_history_data。不清楚就公众号留言

获取行情数据

该目录下的函数用于获取实时行情,历史行情

ContextInfo.get_market_data_ex - 获取行情数据

实战:当日日线不是收盘

盘中 get_market_data_ex(..., period='1d') 的 close 会变。已定稿日线把 end_time 截到上一交易日;今开今价用 get_full_tick

python
def load_daily(ContextInfo, codes, last_trade_yyyymmdd, count=60):
    end = last_trade_yyyymmdd + '150000'
    return ContextInfo.get_market_data_ex(
        ['open', 'high', 'low', 'close', 'volume'],
        codes, period='1d', end_time=end, count=count,
        dividend_type='front', subscribe=False)

注意

  1. 该函数不建议在init中运行,在init中运行时仅能取到本地数据
  2. 关于获取行情函数之间的区别与注意事项可在 - 常见问题-行情相关 查看
  3. 除实时行情外,该函数还可用于获取特色数据,如资金流向数据,订单流数据等,获取方式见数据字典

原型

内置python

python
ContextInfo.get_market_data_ex(
    fields=[], 
    stock_code=[], 
    period='follow', 
    start_time='', 
    end_time='', 
    count=-1, 
    dividend_type='follow', 
    fill_data=True, 
    subscribe=True)

释义

获取实时行情与历史行情数据

参数

名称类型描述
fieldlist数据字段,详情见下方field字段表
stock_listlist合约代码列表
periodstr数据周期,可选字段为: / "tick" / "1m":1分钟线 / "5m":5分钟线;"15m":15分钟线;"30m":30分钟线 / "1h"小时线 / "1d":日线 / "1w":周线 / "1mon":月线 / "1q":季线 / "1hy":半年线 / "1y":年线 / 'l2quote':Level2行情快照 / 'l2quoteaux':Level2行情快照补充 / 'l2order':Level2逐笔委托 / 'l2transaction':Level2逐笔成交 / 'l2transactioncount':Level2大单统计 / 'l2orderqueue':Level2委买委卖队列
start_timestr数据起始时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S,填""为获取历史最早一天
end_timestr数据结束时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S ,填""为截止到最新一天
countint数据个数
dividend_typestr除权方式,可选值为 / 'none':不复权 / 'front':前复权 / 'back':后复权 / 'front_ratio': 等比前复权 / 'back_ratio': 等比后复权
fill_databool是否填充数据
subscribebool订阅数据开关,默认为True,设置为False时不做数据订阅,只读取本地已有数据。
  • field字段可选:
field数据类型含义
timeint时间
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价
volumefloat成交量
amountfloat成交额
settlefloat今结算
openInterestfloat持仓量
preClosefloat前收盘价
suspendFlagint停牌 1停牌,0 不停牌
  • period周期为tick时,field字段可选:
field数据类型含义
timeint时间
lastPricefloat最新价
lastClosefloat前收盘价
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价
volumefloat成交量
amountfloat成交额
settlefloat今结算
openInterestfloat持仓量
stockStatusint停牌 1停牌,0 不停牌

返回值

  • 返回dict { stock_code1 : value1, stock_code2 : value2, ... }
  • value1, value2, ... :pd.DataFrame 数据集,index为time_list,columns为fields,可参考Bar字段
  • 各标的对应的DataFrame维度相同、索引相同

示例

示例data1返回值data2返回值data3返回值data4返回值历史tick期货五档盘口

python
# coding:gbk
import pandas as pd
import numpy as np

def init(C):    
    C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]# 指定获取的标的
    C.start_time = "20230901"# 指定获取数据的开始时间
    C.end_time = "20231101"# 指定获取数据的结束时间

def handlebar(C):
    # 获取多只股票,多个字段,一条数据
    data1 = C.get_market_data_ex([],C.stock_list, period = "1d",count = 1)
    # 获取多只股票,多个字段,指定时间数据
    data2 = C.get_market_data_ex([],C.stock_list, period = "1d", start_time = C.start_time, end_time = C.end_time)
    # 获取多只股票,多个字段,指定时间15m数据
    data3 = C.get_market_data_ex([],C.stock_list, period = "15m", start_time = C.start_time, end_time = C.end_time)
    # 获取多只股票,指定字段,指定时间15m数据
    data4 = C.get_market_data_ex(["close","open"],C.stock_list, period = "15m", start_time = C.start_time, end_time = C.end_time)
    # 获取多只股票,历史tick
    tick = C.get_market_data_ex([],C.stock_list, period = "tick", start_time = C.start_time, end_time = C.end_time)
    # 获取期货5档盘口tick
    future_lv2_quote = C.get_market_data_ex([],["rb2405.SF","ec2404.INE"], period = "l2quote", count = 1)
    print(data1)
    print(data2["000001.SZ"].tail())
    print(data3)
    print(data4["000001.SZ"])
    print(data4["000001.SZ"].to_csv("your_path")) # 导出文件为csv格式,路径填本机路径
    print(tick["000001.SZ"])
    print(future_lv2_quote)

ContextInfo.get_full_tick - 获取全推数据

不能用于回测 只能取最新的分笔,不能取历史分笔

原型

内置python

python
ContextInfo.get_full_tick(stock_code=[])

释义

获取最新分笔数据

参数

名称类型描述
stock_codelist[str]合约代码列表,如['600000.SH','600036.SH'],不指定时为当前主图合约。

返回值 根据stock_code返回一个dict,该字典的key值是股票代码,其值仍然是一个dict,在该dict中存放股票代码对应的最新的数据。该字典数据key值参考tick字段

示例

示例返回值

python
# coding:gbk
import pandas as pd
import numpy as np

def init(C):
    C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]

def handlebar(C):
    tick = C.get_full_tick(C.stock_list)
    print(tick["510050.SH"])

ContextInfo.subscribe_quote - 订阅行情数据

  1. 该函数属于订阅函数,非VIP用户限制订阅数量

  2. VIP用户支持全推市场指定周期K线

  3. VIP用户权限请参考vip-行情用户优势对比

原型

内置python

python
ContextInfo.subscribe_quote(
    stock_code,
    period='follow',
    dividend_type='follow',
    result_type='',
    callback=None)

释义

订阅行情数据,关于订阅机制请参考运行机制对比

参数

字段名数据类型解释
stockcodestring股票代码,'stkcode.market',如'600000.SH'
periodstringK线周期类型
dividend_typestring除权方式,可选值为 / 'none':不复权 / 'front':前复权 / 'back':后复权 / 'front_ratio': 等比前复权 / 'back_ratio': 等比后复权 / 注意:分笔周期返回数据均为不复权
result_typestring返回数据格式,可选范围: / 'DataFrame'或''(默认):返回&#123;code:data&#125;,data为pd.DataFrame数据集,index为字符串格式的时间序列,columns为数据字段 / 'dict':返回&#123;code:&#123;k1:v1,k2:v2,...&#125;&#125;,k为数据字段名,v为字段值 / 'list':返回&#123;code:&#123;k1:[v1],k2:[v2],...&#125;&#125;,k为数据字段名,v为字段值
callbackfunction指定推送行情的回调函数

返回值

int:订阅号,用于反订阅

示例

示例返回值

python
# conding = gbk
def call_back(data):
    print(data)

def init(C):
    C.subID = C.subscribe_quote("000001.SZ","1d", callback = call_back)
def handlebar(C):
    print("============================")
    print("C.subID: ",C.subID)

ContextInfo.subscribe_whole_quote - 订阅全推数据

内置python

python
ContextInfo.subscribe_whole_quote(code_list,callback=None)

释义

订阅全推数据,全推数据只有分笔周期,每次增量推送数据有变化的品种

参数

字段名数据类型解释
code_listlist[str,...]市场代码列表/品种代码列表,如 ['SH','SZ'] 或 ['600000.SH', '000001.SZ']
callbackfunction数据推送回调

返回值int,订阅号,可用ContextInfo.unsubscribe_quote做反订阅

示例返回值

python
# conding = gbk
def call_back(data):
    print(data)

def init(C):
    C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]
    C.subID = C.subscribe_whole_quote(C.stock_list,callback=call_back)
def handlebar(C):
    print("============================")
    print("C.subID: ",C.subID)

ContextInfo.unsubscribe_quote - 反订阅行情数据

原型

内置python

python
ContextInfo.unsubscribe_quote(subId)

释义

反订阅行情数据,配合ContextInfo.subscribe_quote()ContextInfo.subscribe_whole_quote()使用

参数

字段名数据类型解释
subIdint行情订阅返回的订阅号

示例

示例

python
# conding = gbk
def call_back(data):
    print(data)
def init(C):
    C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]
    C.subID = C.subscribe_whole_quote(C.stock_list,callback=call_back)

def handlebar(C):
    print("============================")
    print("C.subID: ",C.subID)
    if C.subID > 0:
        C.unsubscribe_quote(C.subID) # 取消行情订阅

subscribe_formula - 订阅模型

原型

内置python

python
subscribe_formula(
   formula_name,stock_code,period
   ,start_time="",end_time="",count=-1
   ,dividend_type="none"
   ,extend_param={}
   ,callback=None)

释义 订阅vba模型运行结果,使用前要注意补充本地K线数据或分笔数据

参数

字段名类型描述
formula_namestr模型名称名
stock_codestr模型主图代码形式如'stkcode.market',如'000300.SH'
periodstrK线周期类型,可选范围:'tick':分笔线,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线
start_timestr模型运行起始时间,形如:'20200101',默认为空视为最早
end_timestr模型运行截止时间,形如:'20200101',默认为空视为最新
countint模型运行范围为向前 count 根 bar,默认为 -1 运行所有 bar
dividend_typestr复权方式,默认为主图除权方式,可选范围:'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权
extend_paramdict模型的入参,形如 {'a': 1, '__basket': {}}
__basketdict可选参数,组合模型的股票池权重,形如 {'600000.SH': 0.06, '000001.SZ': 0.01}

返回值 分两块,

  • subscribe_formula返回模型的订阅号,可用于后续反订阅,失败返回 -1

  • callback:

    • timelist: 数据时间戳
    • outputs:模型的输出值,结构为{变量名:值}

示例

示例

python
#encoding=gbk
def callback(data):
    print(data)

def init(ContextInfo):
    basket={
       '600000.SH':0.06,
       '000001.SZ':0.01
      }
    argsDict={'a':100,'__basket':basket}
    subID=subscribe_formula(
      '单股模型示范','000300.SH','1d',
      '20240101','20240201',-1,
      "none",
      argsDict,
      callback
   )

unsubscribe_formula - 反订阅模型

原型

内置python

python
unsubscribe_formula(subID)

释义 反订阅模型

参数

字段名类型描述
subIDint模型订阅号

返回值

  • bool:反订阅成功为True,失败为False

示例

示例

python
#encoding=gbk
def callback(data):
    print(data)

def init(ContextInfo):
    basket={
       '600000.SH':0.06,
       '000001.SZ':0.01
      }
    argsDict={'a':100,'__basket':basket}
    subID=subscribe_formula(
      '单股模型示范','000300.SH','1d',
      '20240101','20240201',-1,
      "none",
      argsDict,
      callback
   )

    unsubscribe_formula(subID)

call_formula - 调用模型

原型

内置python

python
call_formula(formula_name,stock_code,period,start_time="",end_time="",count=-1,dividend_type="none",extend_param={})

释义 获取vba模型运行结果,使用前要注意补充本地K线数据或分笔数据

参数

字段名类型描述
formula_namestr模型名称名
stock_codestr模型主图代码形式如'stkcode.market',如'000300.SH'
periodstrK线周期类型,可选范围:'tick':分笔线,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线
start_timestr模型运行起始时间,形如:'20200101',默认为空视为最早
end_timestr模型运行截止时间,形如:'20200101',默认为空视为最新
countint模型运行范围为向前 count 根 bar,默认为 -1 运行所有 bar
dividend_typestr复权方式,默认为主图除权方式,可选范围:'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权
extend_paramdict模型的入参,{"模型名:参数名":参数值},例如在跑模型MA时,{'MA:n1':1};入参可以添加__basket:dict,组合模型的股票池权重,形如{'__basket':{'600000.SH':0.06,'000001.SZ':0.01}},如果在跑一个模型1的时候,模型1调用了模型2,如果只想修改模型2的参数可以传{'模型2:参数':参数值}

返回值 返回:dict{ 'dbt':0,#返回数据类型,0:全部历史数据 'timelist':[...],#返回数据时间范围list, 'outputs':{'var1':[...],'var2':[...]}#输出变量名:变量值list }

示例

示例

python
def handlebar(ContextInfo):
    basket={'600000.SH':0.06,'000001.SZ':0.01}
    argsDict={'a':100,'__basket':basket}
    modelRet=call_formula('单股模型示范','000300.SH','1d','20240101','20240201',-1,"none",argsDict)
    print(modelRet)

call_formula_batch - 批量调用模型

原型

内置python

python
call_formula_batch(formula_names,stock_codes,period,start_time="",end_time="",count=-1,dividend_type="none",extend_params=[])

释义 批量获取vba模型运行结果,使用前要注意补充本地K线数据或分笔数据

参数

字段名类型描述
formula_nameslist包含要批量运行的模型名
stock_codeslist包含要批量运行的模型主图代码形式'stkcode.market',如'000300.SH'
periodstrK线周期类型,可选范围:'tick':分笔线,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线
start_timestr模型运行起始时间,形如:'20200101',默认为空视为最早
end_timestr模型运行截止时间,形如:'20200101',默认为空视为最新
countint模型运行范围为向前 count 根 bar,默认为 -1 运行所有 bar
dividend_typestr复权方式,默认为主图除权方式,可选范围:'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权
extend_paramslist包含每个模型的入参,[{"模型名:参数名":参数值}],例如在跑模型MA时,{'MA:n1':1};入参可以添加__basket:dict,组合模型的股票池权重,形如{'__basket':{'600000.SH':0.06,'000001.SZ':0.01}},如果在跑一个模型1的时候,模型1调用了模型2,如果只想修改模型2的参数可以传{'模型2:参数':参数值}

返回值

  • list[dict]
    • dict说明:
      • formula:模型名
      • stock:品种代码
      • argument:参数
      • result:dict参考call_formula返回结果

示例

示例

python
def handlebar(ContextInfo):
    formulas=['testModel1','testModel2']
    codes=['600000.SH','000001.SZ']
    basket={'600000.SH':0.06,'000001.SZ':0.01}
    args=[{'a':100,'__basket':basket},{'a':200,'__basket':basket}]
    modelRet=call_formula_batch(formulas,codes,'1d',extend_params=args);
    print(modelRet)

ContextInfo.get_svol - 根据代码获取对应股票的内盘成交量

原型

内置python

python
ContextInfo.get_svol(stockcode)

释义

根据代码获取对应股票的内盘成交量

参数

字段名数据类型解释
stockcodestring股票代码,如 '000001.SZ',缺省值'',默认为当前图代码

返回值int:内盘成交量

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_svol('000001.SZ')
    print(data)

ContextInfo.get_bvol - 根据代码获取对应股票的外盘成交量

原型

内置python

python
ContextInfo.get_bvol(stockcode)

释义

根据代码获取对应股票的外盘成交量

参数

字段名数据类型解释
stockcodestring股票代码,如 '000001.SZ',缺省值'',默认为当前图代码

返回值

int:外盘成交量

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_bvol('000001.SZ')
    print(data)

ContextInfo.get_turnover_rate - 获取换手率

使用之前需要下载财务数据(在财务数据下载中)以及日线数据

如果不补充股本数据,将使用最新流通股本计算历史换手率,可能会造成历史换手率不正确

原型

内置python

python
ContextInfo.get_turnover_rate(stock_list,startTime,endTime)

释义

获取换手率

参数

字段名数据类型解释
stock_listlist股票列表,如['600000.SH','000001.SZ']
startTimestring起始时间,如'20170101'
endTimestring结束时间,如'20180101'

返回值

pandas.Dataframe

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_turnover_rate(['000002.SZ'],'20170101','20170301')
    print(data)

ContextInfo.get_longhubang - 获取龙虎榜数据

原型

内置python

python
ContextInfo.get_longhubang(stock_list, startTime, endTime)

释义

获取龙虎榜数据

参数

参数名称类型描述
stock_listlist股票列表,如 ['600000.SH', '600036.SH']
startTimestr起始时间,如 '20170101'
endTimestr结束时间,如 '20180101'

返回值

  • 格式为pandas.DataFrame:
参数名称数据类型描述
reasonstr上榜原因
closefloat收盘价
spreadRatefloat涨跌幅
TurnoverVolunefloat成交量
Turnover_Amountfloat成交金额
buyTraderBoothpandas.DataFrame买方席位
sellTraderBoothpandas.DataFrame卖方席位
  • buyTraderBooth 或 sellTraderBooth 包含字段:
参数名称数据类型描述
traderNamestr交易营业部名称
buyAmountfloat买入金额
buyPercentfloat买入金额占总成交占比
sellAmountfloat卖出金额
sellPercentfloat卖出金额占总成交占比
totalAmountfloat该席位总成交金额
rankint席位排行
directionint买卖方向

示例

示例返回值

python
# coding:gbk

def init(C):
    return

def handlebar(C):
    print(C.get_longhubang(['000002.SZ'],'20100101','20180101'))

ContextInfo.get_north_finance_change - 获取对应周期的北向数据

原型

内置python

python
ContextInfo.get_north_finance_change(period)

释义

获取对应周期的北向数据

参数

字段名数据类型描述
periodstr数据周期

返回值

  • 根据period返回一个dict,该字典的key值是北向数据的时间戳,其值仍然是一个dict,其值的key值是北向数据的字段类型,其值是对应字段的值。该字典数据key值有:
字段名数据类型描述
hgtNorthBuyMoneyintHGT北向买入资金
hgtNorthSellMoneyintHGT北向卖出资金
hgtSouthBuyMoneyintHGT南向买入资金
hgtSouthSellMoneyintHGT南向卖出资金
sgtNorthBuyMoneyintSGT北向买入资金
sgtNorthSellMoneyintSGT北向卖出资金
sgtSouthBuyMoneyintSGT南向买入资金
sgtSouthSellMoneyintSGT南向卖出资金
hgtNorthNetInFlowintHGT北向资金净流入
hgtNorthBalanceByDayintHGT北向当日资金余额
hgtSouthNetInFlowintHGT南向资金净流入
hgtSouthBalanceByDayintHGT南向当日资金余额
sgtNorthNetInFlowintSGT北向资金净流入
sgtNorthBalanceByDayintSGT北向当日资金余额
sgtSouthNetInFlowintSGT南向资金净流入
sgtSouthBalanceByDayintSGT南向当日资金余额

示例:

示例返回值

python
# coding = gbk
def init(C):
    return
# 获取市场北向数据
def handlebar(C):
    print(C.get_north_finance_change('1d'))

ContextInfo.get_hkt_details - 获取指定品种的持股明细

原型

内置python

python
ContextInfo.get_hkt_details(stockcode)

释义

获取指定品种的持股明细

参数

参数名称数据类型描述
stockcodestring必须是'stock.market'形式

返回值

  • 根据stockcode返回一个dict,该字典的key值是北向持股明细数据的时间戳,其值仍然是一个dict,其值的key值是北向持股明细数据的字段类型,其值是对应字段的值,该字典数据key值有:
参数名称数据类型/单位描述
stockCodestr股票代码
ownSharesCompanystr机构名称
ownSharesAmountint持股数量
ownSharesMarketValuefloat持股市值
ownSharesRatiofloat持股数量占比
ownSharesNetBuyfloat净买入金额(当日持股-前一日持股)

示例:

示例返回值

python
# coding = gbk
def init(C):
    return
def handlebar(C):
    data = C.get_hkt_details('600000.SH')
    print(data)

ContextInfo.get_hkt_statistics - 获取指定品种的持股统计

原型

内置python

python
ContextInfo.get_hkt_statistics(stockcode)

释义

获取指定品种的持股统计

参数

字段名数据类型解释
stockcodestring必须是'stock.market'形式

返回值

根据stockcode返回一个dict,该字典的key值是北向持股统计数据的时间戳,其值仍然是一个dict,其值的key值是北向持股统计数据的字段类型,其值是对应字段的值,该字典数据key值有:

字段名数据类型解释
stockCodestring股票代码
ownSharesAmountfloat持股数量,单位:股
ownSharesMarketValuefloat持股市值,单位:元
ownSharesRatiofloat持股数量占比,单位:%
ownSharesNetBuyfloat净买入,单位:元,浮点数(当日持股-前一日持股)

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):

    print(C.get_hkt_statistics('600000.SH'))

get_etf_info - 根据ETF基金代码获取ETF申赎清单及对应成分股数据

原型

内置python

python
get_etf_info(stockcode)

释义

根据ETF基金代码获取ETF申赎清单及对应成分股数据,每日盘前更新

参数

字段名数据类型解释
stockcodestringETF基金代码如"510050.SH"

返回值

一个多层嵌套的dict

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    d = get_etf_info("510050.SH")
    print(d)

get_etf_iopv - 根据ETF基金代码获取ETF的基金份额参考净值

原型

内置python

python
get_etf_iopv(stockcode)

释义

根据ETF基金代码获取ETF的基金份额参考净值

参数

字段名数据类型解释
stockcodestringETF基金代码如"510050.SH"

返回值

float类型值,IOPV,基金份额参考净值

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    print(get_etf_iopv("510050.SH"))

ContextInfo.get_local_data - 获取本地行情数据【不推荐】

注意

本函数用于仅用于获取本地历史行情数据,使用前请确保已通过download_history_data下载过历史行情数据

原型

内置python

python
ContextInfo.get_local_data(
    stock_code,
    start_time='',
    end_time='',
    period='1d',
    divid_type='none',
    count=-1)

释义

获取本地行情数据

参数

字段名数据类型解释
stock_codestring默认参数,合约代码格式为 code.market,不指定时为当前图合约
start_timestring默认参数,开始时间,格式为 '20171209' 或 '20171209010101'
end_timestring默认参数,结束时间,格式同 start_time
periodstring默认参数,K线类型,可选值包括: / 'tick':分笔线(只用于获取'quoter'字段数据)、'realtime': 实时线、'1d':日线 / 'md':多日线、'1m':1分钟线、'3m':3分钟线 / '5m':5分钟线、'15m':15分钟线、'30m':30分钟线 / 'mm':多分钟线、'1h':小时线、'mh':多小时线 / '1w':周线、'1mon':月线、'1q':季线 / '1hy':半年线、'1y':年线
dividend_typestring除复权种类,可选值: / 'none':不复权 / 'front':向前复权 / 'back':向后复权 / 'front_ratio':等比向前复权 / 'back_ratio':等比向后复权
countint当 count 大于等于0时: / 如果指定了 start_time 和 end_time,则以 end_time 为基准向前取 count 条数据; / 如果 start_time 和 end_time 缺省,则默认取本地数据最新的 count 条数据; / 如果 start_timeend_time 和 count 都缺省时,则默认取本地全部数据。

返回值

返回一个dict,键值为timetag,value为另一个dict(valuedict)

  • period='tick'时函数获取分笔数据,valuedict字典数据key值有:
字段数据类型含义
lastPricefloat最新价
openfloat开盘价
highfloat最高价
lowfloat最低价
lastClosefloat前收盘价
amountfloat成交额
volumefloat成交量
pvolumefloat原始成交量
stockStatusint作废 参考openInt
openIntfloat若是股票,则openInt含义为股票状态,非股票则是持仓量openInt字段说明
lastSettlementPricefloat昨结算价
askPricelist委卖价
bidPricelist委买价
askVollist委卖量
bidVollist委买量
settlementPricefloat今结算价
  • period为其他值时,valuedict字典数据key值有:
字段名数据类型解释
amountfloat成交额
volumefloat成交量
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_local_data(stock_code='600000.SH',start_time='20220101',end_time='20220131',period='1d',divid_type='none')
    print(data)

ContextInfo.get_history_data - 获取历史行情数据【不推荐】

警告

  1. 此函数已不推荐使用,推荐使用ContextInfo.get_market_data_ex()
  2. 此函数使用前需要先通过ContextInfo.set_universe()设定股票池

原型

内置python

python
ContextInfo.get_history_data(
    len, 
    period, 
    field, 
    dividend_type = 0,
    skip_paused = True)

释义

获取历史行情数据

参数

名称类型描述
lenint需获取的历史数据长度
periodstring需获取的历史数据周期,可选值包括: / 'tick':分笔线、 '1d':日线、 '1m':1分钟线 / '3m':3分钟线、 '5m':5分钟线、 '15m':15分钟线 / '30m':30分钟线、 '1h':小时线、 '1w':周线 / '1mon':月线、 '1q':季线、 '1hy':半年线 / '1y':年线
fieldstring需获取的历史数据的类型,可选值包括: / 'open':开盘价 / 'high':最高价 / 'low':最低价 / 'close':收盘价 / 'quoter':详细报价(结构见 get_market_data 方法)
dividend_typeint默认参数,除复权,默认不复权,可选值包括: / 0:不复权 / 1:向前复权 / 2:向后复权 / 3:等比向前复权 / 4:等比向后复权
skip_pausedbool默认参数,是否停牌填充,默认填充

返回值 一个字典dict结构,key 为 stockcode.market, value 为行情数据 list,list 中第 0 位为最早的价格,第 1 位为次早价格,依次下去。

示例

示例返回值

python
# coding = gbk
def init(C):
    C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]
    C.set_universe(C.stock_list)

def handlebar(C):
    data = C.get_history_data(2, '1d', 'close')
    print(data)

ContextInfo.get_market_data() - 获取行情数据【不推荐】

推荐使用ContextInfo.get_market_data_ex()

原型

内置python

python
ContextInfo.get_market_data(
    fields, 
    stock_code = [], 
    start_time = '', 
    end_time = '',
    skip_paused = True, 
    period = 'follow', 
    dividend_type = 'follow', 
    count = -1)

释义

获取行情数据

参数

字段名数据类型解释
fields字段列表可选值包括: / 'open': 开 / 'high': 高 / 'low': 低 / 'close': 收 / 'volume': 成交量 / 'amount': 成交额 / 'settle': 结算价 / 'quoter': 分笔数据(包括历史)
stock_code默认参数,合约代码列表合约格式为 code.market,例如 '600000.SH',不指定时为当前图合约
start_time默认参数,时间戳开始时间,格式为 '20171209' 或 '20171209010101'
end_time默认参数,时间戳结束时间,格式为 '20171209' 或 '20171209010101'
skip_paused默认参数,布尔值如何处理停牌数据: / true:如果是停牌股,会自动填充未停牌前的价格作为停牌日的价格 / false:停牌数据为 NaN
periodstring需获取的历史数据周期,可选值包括: / 'tick':分笔线、 '1d':日线、 '1m':1分钟线 / '3m':3分钟线、 '5m':5分钟线、 '15m':15分钟线 / '30m':30分钟线、 '1h':小时线、 '1w':周线 / '1mon':月线、 '1q':季线、 '1hy':半年线 / '1y':年线
dividend_type默认参数,字符串缺省值为 'none',除复权,可选值包括: / 'none':不复权 / 'front':向前复权 / 'back':向后复权 / 'front_ratio':等比向前复权 / 'back_ratio':等比向后复权
count默认参数,整数缺省值为 -1。当大于等于 0 时,效果与 get_history_data 保持一致
  • count参数设置的几种情况
count 取值时间设置是否生效开始时间和结束时间设置效果
count >= 0生效返回数量取决于开始时间与结束时间和count与结束时间的交集
count = -1生效同时设置开始时间和结束时间,在所设置的时间段内取值
count = -1生效开始时间结束时间都不设置,取当前最新bar的值
count = -1生效只设置开始时间,取所设开始时间到当前时间的值
count = -1生效只设置结束时间,取股票上市第一根 bar 到所设结束时间的值

返回值

  • 返回值根据传入的参数情况,会返回不同类型的结果
count字段数量股票数量时间点返回类型
=-1=1=1=1float
=-1>1=1默认值pandas.Series
>=-1>=1=1>=1pandas.DataFrame(字段数量和时间点不同时为1)
=-1>=1>1默认值pandas.DataFrame
>1=1=1=1pandas.DataFrame
>=-1>=1>1>=1pandas.Panel

示例

示例data1返回值data2返回值data3返回值data4返回值

python
# coding = gbk
def init(C):
    C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]

def handlebar(C):
    data1 = C.get_market_data(["close"],["000001.SZ"],start_time = "20231106",end_time = "20231106", count = -1) # 返回float值
    data2 = C.get_market_data(["close","open"],["000001.SZ"], count = -1) # 返回pandas.Series
    data3 = C.get_market_data(["close","open"],C.stock_list, count = -1) # 返回pandas.DataFrame
    data4 = C.get_market_data(["open","high", "low", "close"],C.stock_list,count = 20) # 返回pandas.Panel

    print(data1)
    print(data2)
    print(data3)
    print(data4)

获取财务数据

获取财务数据前,请先通过界面端数据管理 - 财务数据下载

财务数据下载

财务数据接口通过读取下载本地的数据取数,使用前需要补充本地数据。除公告日期和报表截止日期为时间戳毫秒格式其他单位为元或 %,数据主要包括资产负债表(ASHAREBALANCESHEET)、利润表(ASHAREINCOME)、现金流量表(ASHARECASHFLOW)、股本表(CAPITALSTRUCTURE)的主要字段数据以及经过计算的主要财务指标数据(PERSHAREINDEX)。建议使用本文档对照表中的英文表名和迅投英文字段,表名不区分大小写。

ContextInfo.get_financial_data - 获取财务数据

财务数据接口有两种用法,入参和返回值不同,具体如下

用法1

原型

内置python

python
ContextInfo.get_financial_data(fieldList, stockList, startDate, enDate, report_type = 'announce_time')

释义

获取财务数据,方法1

参数

字段名类型释义与用例
fieldListList(必须)财报字段列表:['ASHAREBALANCESHEET.fix_assets', '利润表.净利润']
stockListList(必须)股票列表:['600000.SH', '000001.SZ']
startDateStr(必须)开始时间:'20171209'
endDateStr(必须)结束时间:'20171212'
report_typeStr(可选)报表时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为 'report_time' 为按照报告期取数据,' announce_time' 为按照公告日期取数据

选择按照公告期取数和按照报告期取数的区别:

报告日期是指财务报告所覆盖的会计时间段,而公告日期是指公司向外界公布该报告的具体时间点

若指定report_type为report_time,则不会考虑财报的公告日期,可能会取到未来数据

若指定report_type为announce_time,则会按财报实际发布日期返回数据,不会取到未来数据

例:

返回值

函数根据stockList代码列表,startDate,endDate时间范围,返回不同的的数据类型。如下:

代码数量时间范围返回类型
=1=1pandas.Series (index = 字段)
=1>1pandas.DataFrame (index = 时间, columns = 字段)
>1=1pandas.DataFrame (index = 代码, columns = 字段)
>1>1pandas.Panel (items = 代码, major_axis = 时间, minor_axis = 字段)

示例

示例返回值

python
# coding:gbk
def init(C):
  pass

def handlebar(C):

  #取总股本和净利润
  fieldList = ['CAPITALSTRUCTURE.total_capital', '利润表.净利润']   
  stockList = ["000001.SZ","000002.SZ","430017.BJ"]
  startDate = '20171209'
  endDate = '20231204'
  data = C.get_financial_data(fieldList, stockList, startDate, endDate, report_type = 'report_time')
  print(data)

用法2

原型

内置python

python
ContextInfo.get_financial_data(tabname, colname, market, code, report_type = 'report_time', barpos)

与用法 1 可同时使用

释义

获取财务数据,方法2

参数

字段名类型释义与用例
tabnameStr(必须)表名:'ASHAREBALANCESHEET'
colnameStr(必须)字段名:'fix_assets'
marketStr(必须)市场:'SH'
codeStr(必须)代码:'600000'
report_typeStr(可选)报表时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为 'report_time' 为按照报告期取数据,' announce_time ' 为按照公告日期取数据
barposnumber当前 bar 的索引

返回值

float :所取字段的数值

示例

示例返回值

python
# coding:gbk
def init(C):
  pass

def handlebar(C):
  index = C.barpos
  data = C.get_financial_data('ASHAREBALANCESHEET', 'fix_assets', 'SH', '600000', index)
  print(data)

ContextInfo.get_raw_financial_data - 获取原始财务数据

取原始财务数据,与get_financial_data相比不填充每个交易日的数据

原型

内置python

python
ContextInfo.get_raw_financial_data(fieldList,stockList,startDate,endDate,report_type='announce_time')

释义

取原始财务数据,与get_financial_data相比不填充每个交易日的数据

参数

字段名类型释义与用例
fieldListList(必须)字段列表:例如 ['资产负债表.固定资产','利润表.净利润']
stockListList(必须)股票列表:例如['600000.SH','000001.SZ']
startDateStr(必须)开始时间:例如 '20171209'
endDateStr(必须)结束时间:例如 '20171212'
report_typeStr(可选)时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为 'report_time' 为按照报告期取数据,可选值:'announce_time','report_time'

返回值

函数根据stockList代码列表,startDate,endDate时间范围,返回不同的的数据类型。如下:

代码数量时间范围返回类型
=1=1pandas.Series (index = 字段)
=1>1pandas.DataFrame (index = 时间, columns = 字段)
>1=1pandas.DataFrame (index = 代码, columns = 字段)
>1>1pandas.Panel (items = 代码, major_axis = 时间, minor_axis = 字段)

示例

示例返回值

python
#encoding:gbk
'''
获取财务数据
'''
import pandas as pd
import numpy as np
import talib

def to_zw(a):
    '''0.中文价格字符串'''
    import numpy as np
    try:
        header = '' if a > 0 else '-'
        if np.isnan(a):
            return '问题数据'
        if abs(a) < 1000:
            return header + str(int(a)) + "元"
        if abs(a) < 10000:
            return header + str(int(a))[0] + "千"
        if abs(a) < 100000000:
            return header + str(int(a))[:-4] + "万" + str(int(a))[-4] + '千'
        else:
            return header + str(int(a))[:-8] + "亿" + str(int(a))[-8:-4] + '万'
    except:
        print(f"问题数据{a}")
        return '问题数据'


def after_init(C):
    fieldList = ['ASHAREINCOME.net_profit_excl_min_int_inc','ASHAREINCOME.revenue'] # 字段表
    stockList = ['000001.SZ'] # 标的
    a=C.get_raw_financial_data(fieldList,stockList,'20150101','20300101',report_type = 'report_time') # 获取原始财务数据
    # print(a)
    for stock in a:
        for key in a[stock]:
            for t in a[stock][key]:
                print(key, timetag_to_datetime(int(t),'%Y%m%d'), to_zw(a[stock][key][t]))
            print('-' *22)
        print('-' *22)

ContextInfo.get_last_volume - 获取最新流通股本

原型

内置python

python
ContextInfo.get_last_volume(stockcode)

释义

获取最新流通股本

参数

字段名数据类型解释
stockcodestring标的名称,必须是 'stock.market' 形式

返回值

int类型值,代表流通股本数量

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_last_volume("000001.SZ")
    print(data)

ContextInfo.get_total_share - 获取总股数

原型

内置python

python
ContextInfo.get_total_share(stockcode)

释义

获取总股数

参数

字段名数据类型解释
stockcodestring股票代码,缺省值 '',默认为当前图代码, 如:'600000.SH'

返回值

int:总股数

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_total_share('600000.SH')
    print(data)

财务数据字段表

资产负债表 (ASHAREBALANCESHEET)

中文字段迅投字段
应收利息int_rcv
可供出售金融资产fin_assets_avail_for_sale
持有至到期投资held_to_mty_invest
长期股权投资long_term_eqy_invest
固定资产fix_assets
无形资产intang_assets
递延所得税资产deferred_tax_assets
资产总计tot_assets
交易性金融负债tradable_fin_liab
应付职工薪酬empl_ben_payable
应交税费taxes_surcharges_payable
应付利息int_payable
应付债券bonds_payable
递延所得税负债deferred_tax_liab
负债合计tot_liab
实收资本(或股本)cap_stk
资本公积金cap_rsrv
盈余公积金surplus_rsrv
未分配利润undistributed_profit
归属于母公司股东权益合计tot_shrhldr_eqy_excl_min_int
少数股东权益minority_int
负债和股东权益总计tot_liab_shrhldr_eqy
所有者权益合计total_equity
货币资金cash_equivalents
应收票据bill_receivable
应收账款account_receivable
预付账款advance_payment
其他应收款other_receivable
其他流动资产other_current_assets
流动资产合计total_current_assets
存货inventories
在建工程constru_in_process
工程物资construction_materials
长期待摊费用long_deferred_expense
非流动资产合计total_non_current_assets
短期借款shortterm_loan
应付股利dividend_payable
其他应付款other_payable
一年内到期的非流动负债non_current_liability_in_one_year
其他流动负债other_current_liability
长期应付款longterm_account_payable
应付账款accounts_payable
预收账款advance_peceipts
流动负债合计total_current_liability
应付票据notes_payable
长期借款long_term_loans
专项应付款grants_received
其他非流动负债other_non_current_liabilities
非流动负债合计non_current_liabilities
专项储备specific_reserves
商誉goodwill
报告截止日m_timetag
公告日m_anntime

利润表 (ASHAREINCOME)

中文字段迅投字段
投资收益plus_net_invest_inc
联营企业和合营企业的投资收益incl_inc_invest_assoc_jv_entp
营业税金及附加less_taxes_surcharges_ops
营业总收入revenue
营业总成本total_operating_cost
营业收入revenue_inc
营业成本total_expense
资产减值损失less_impair_loss_assets
营业利润oper_profit
营业外收入plus_non_oper_rev
营业外支出less_non_oper_exp
利润总额tot_profit
所得税inc_tax
净利润net_profit_incl_min_int_inc
归母净利润net_profit_excl_min_int_inc
管理费用less_gerl_admin_exp
销售费用sale_expense
财务费用financial_expense
综合收益总额total_income
归属于少数股东的综合收益总额total_income_minority
公允价值变动收益change_income_fair_value
已赚保费earned_premium
报告截止日m_timetag
公告日m_anntime

现金流量表 (ASHARECASHFLOW)

中文字段迅投字段
收到其他与经营活动有关的现金other_cash_recp_ral_oper_act
经营活动现金流入小计stot_cash_inflows_oper_act
支付给职工以及为职工支付的现金cash_pay_beh_empl
支付的各项税费pay_all_typ_tax
支付其他与经营活动有关的现金other_cash_pay_ral_oper_act
经营活动现金流出小计stot_cash_outflows_oper_act
经营活动产生的现金流量净额net_cash_flows_oper_act
取得投资收益所收到的现金cash_recp_return_invest
处置固定资产、无形资产和其他长期投资收到的现金net_cash_recp_disp_fiolta
投资活动现金流入小计stot_cash_inflows_inv_act
投资支付的现金cash_paid_invest
购建固定资产、无形资产和其他长期投资支付的现金cash_pay_acq_const_fiolta
支付其他与投资的现金other_cash_pay_ral_inv_act
投资活动产生的现金流出小计stot_cash_outflows_inv_act
投资活动产生的现金流量净额net_cash_flows_inv_act
吸收投资收到的现金cash_recp_cap_contrib
取得借款收到的现金cash_recp_borrow
收到其他与筹资活动有关的现金other_cash_recp_ral_fnc_act
筹资活动现金流入小计stot_cash_inflows_fnc_act
偿还债务支付现金cash_prepay_amt_borr
分配股利、利润或偿付利息支付的现金cash_pay_dist_dpcp_int_exp
支付其他与筹资的现金other_cash_pay_ral_fnc_act
筹资活动现金流出小计stot_cash_outflows_fnc_act
筹资活动产生的现金流量净额net_cash_flows_fnc_act
汇率变动对现金的影响eff_fx_flu_cash
现金及现金等价物净增加额net_incr_cash_cash_equ
销售商品、提供劳务收到的现金goods_sale_and_service_render_cash
收到的税费与返还tax_levy_refund
购买商品、接受劳务支付的现金goods_and_services_cash_paid
处置子公司及其他收到的现金net_cash_deal_subcompany
其中子公司吸收现金cash_from_mino_s_invest_sub
处置固定资产、无形资产和其他长期资产支付的现金净额fix_intan_other_asset_dispo_cash_payment
报告截止日m_timetag
公告日m_anntime

股本表 (CAPITALSTRUCTURE)

中文字段迅投字段
总股本total_capital
已上市流通A股circulating_capital
自由流通股本free_float_capital(旧版本为freeFloatCapital
限售流通股份restrict_circulating_capital
变动日期m_timetag
公告日m_anntime

主要指标 (PERSHAREINDEX)

中文字段迅投字段
每股经营活动现金流量s_fa_ocfps
每股净资产s_fa_bps
基本每股收益s_fa_eps_basic
稀释每股收益s_fa_eps_diluted
每股未分配利润s_fa_undistributedps
每股资本公积金s_fa_surpluscapitalps
扣非每股收益adjusted_earnings_per_share
净资产收益率du_return_on_equity
销售毛利率sales_gross_profit
主营收入同比增长inc_revenue_rate
净利润同比增长du_profit_rate
归属于母公司所有者的净利润同比增长inc_net_profit_rate
扣非净利润同比增长adjusted_net_profit_rate
营业总收入滚动环比增长inc_total_revenue_annual
归属净利润滚动环比增长inc_net_profit_to_shareholders_annual
扣非净利润滚动环比增长adjusted_profit_to_profit_annual
加权净资产收益率equity_roe
摊薄净资产收益率net_roe
摊薄总资产收益率total_roe
毛利率gross_profit
净利率net_profit
实际税率actual_tax_rate
预收款营业收入pre_pay_operate_income
销售现金流营业收入sales_cash_flow
资产负债比率gear_ratio
存货周转率inventory_turnover

十大股东/十大流通股东 (TOP10HOLDER/TOP10FLOWHOLDER)

对于公告内披露的十大股东数量大于10条的,我们会保留原始数据,以保持和公司公告信息一致

中文字段迅投字段
公告日期declareDate
截止日期endDate
股东名称name
股东类型type
持股数量quantity
变动原因reason
持股比例ratio
股份性质nature
持股排名rank

股东数 (SHAREHOLDER)

中文字段迅投字段
公告日期declareDate
截止日期endDate
股东总数shareholder
A股东户数shareholderA
B股东户数shareholderB
H股东户数shareholderH
已流通股东户数shareholderFloat
未流通股东户数shareholderOther

获取合约信息

ContextInfo.get_instrument_detail - 根据代码获取合约详细信息

旧版本客户端中,函数名为ContextInfo.get_instrumentdetail;不支持iscomplete参数

原型

内置python

python
ContextInfo.get_instrument_detail(stockcode,iscomplete = Fasle)

释义

根据代码获取合约详细信息

参数

字段名数据类型解释
stockcodestring标的名称,必须是 'stock.market' 形式
iscompletebool是否获取全部字段,默认为False

返回值

根据stockcode返回一个dict。该字典数据key值有:

名称类型描述
ExchangeIDstring合约市场代码
InstrumentIDstring合约代码
InstrumentNamestring合约名称
ProductIDstring合约的品种ID(期货)
ProductNamestring合约的品种名称(期货)
ProductTypeint合约的类型, 默认-1,枚举值可参考下方说明
ExchangeCodestring交易所代码
UniCodestring统一规则代码
CreateDatestr创建日期
OpenDatestr上市日期(特殊值情况见表末)
ExpireDateint退市日或者到期日(特殊值情况见表末)
PreClosefloat前收盘价格
SettlementPricefloat前结算价格
UpStopPricefloat当日涨停价
DownStopPricefloat当日跌停价
FloatVolumefloat流通股本(注意,部分低等级客户端中此字段为FloatVolumn)
TotalVolumefloat总股本(注意,部分低等级客户端中此字段为FloatVolumn)
LongMarginRatiofloat多头保证金率
ShortMarginRatiofloat空头保证金率
PriceTickfloat最小价格变动单位
VolumeMultipleint合约乘数(对期货以外的品种,默认是1)
MainContractint主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约
LastVolumeint昨日持仓量
InstrumentStatusint合约停牌状态(<=0:正常交易(-1:复牌);>=1停牌天数;)
IsTradingbool合约是否可交易
IsRecentbool是否是近月合约
ChargeTypeint期货和期权手续费方式
ChargeOpenfloat开仓手续费(率)
ChargeClosefloat平仓手续费(率)
ChargeTodayOpenfloat开今仓(日内开仓)手续费(率)
ChargeTodayClosefloat平今仓(日内平仓)手续费(率)
OptionTypeint期权类型
OpenInterestMultipleint交割月持仓倍数

字段OpenDate有以下几种特殊值: 19700101=新股, 19700102=老股东增发, 19700103=新债, 19700104=可转债, 19700105=配股, 19700106=配号 字段ExpireDate为0 或 99999999 时,表示该标的暂无退市日或到期日

字段ProductType 对于股票以外的品种,有以下几种值

国内期货市场: 1-期货 2-期权(DF SF ZF INE GF) 3-组合套利 4-即期 5-期转现 6-期权(IF) 7-结算价交易(tas)

**沪深股票期权市场:**0-认购 1-认沽

外盘: 1-100:期货, 101-200:现货, 201-300:股票相关 1:股指期货 2:能源期货 3:农业期货 4:金属期货 5:利率期货 6:汇率期货 7:数字货币期货 99:自定义合约期货 107:数字货币现货 201:股票 202:GDR 203:ETF 204:ETN 300:其他

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_instrumentdetail("000001.SZ")
    print(data)

get_st_status - 获取历史st状态

本函数需要下载历史ST数据(过期合约K线),可通过界面端数据管理 - 过期合约数据下载

原型

内置python

python
get_st_status(stockcode)

释义

获取历史st状态

参数

字段名数据类型解释
stockcodestring股票代码,如000004.SZ(可为空,为空时取主图代码)

返回值

st范围字典 格式 {'ST': [['20210520', '20380119']], '*ST': [['20070427', '20080618'], ['20200611', '20210520']]}

示例:

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    print(get_st_status('600599.SH'))

ContextInfo.get_his_st_data - 获取某只股票ST的历史

本函数需要下载历史ST数据(过期合约K线),可通过界面端数据管理 - 过期合约数据下载

原型

内置python

python
ContextInfo.get_his_st_data(stockcode)

释义

获取某只股票ST的历史

参数

字段名数据类型解释
stockcodestring股票代码,'stkcode.market',如'000004.SZ'

返回值

dict,st历史,key为ST,*ST,PT,历史未ST会返回{}

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    print(C.get_his_st_data('000004.SZ'))

ContextInfo.get_main_contract - 获取期货主力合约

  1. 该函数支持实盘/回测两种模式
  2. 若要使用该函数获取历史主力合约,必须要先下载历史主力合约数据
  3. 历史主力合约数据目前通过界面端数据管理 - 过期合约数据 - 历史主力合约下载

原型

内置python

python
ContextInfo.get_main_contract(codemarket)
ContextInfo.get_main_contract(codemarket,date="")
ContextInfo.get_main_contract(codemarket,startDate="",endDate="")

释义

获取当前期货主力合约

参数

字段名数据类型解释
codemarketstring合约和市场,合约格式为品种名加00,如IF00.IF,zn00.SF
startDatestring开始日期(可以不写),如20180608
endDatestring结束日期(可以不写),如20190608

返回值

str,合约代码

示例

示例返回值

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

ContextInfo.get_contract_multiplier - 获取合约乘数

原型

内置python

python
ContextInfo.get_contract_multiplier(contractcode)

释义

获取合约乘数

参数

字段名数据类型解释
contractcodestring合约代码,格式为 'code.market',例如 'IF1707.IF'

返回值int,表示合约乘数

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    multiplier = C.get_contract_multiplier("rb2401.SF")
    print(multiplier)

ContextInfo.get_contract_expire_date - 获取期货合约到期日

原型

内置python

python
ContextInfo.get_contract_expire_date(codemarket)

释义

获取期货合约到期日

参数

字段名数据类型解释
Codemarketstring合约和市场,如IF00.IF,zn00.SF

返回值str,合约到期日

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_contract_expire_date("IF2311.IF")
    # print(type(data))
    print(data)

ContextInfo.get_his_contract_list - 获取市场已退市合约

原型

内置python

python
ContextInfo.get_his_contract_list(market)

释义

获取市场已退市合约,需要手动补充过期合约列表

参数

字段名数据类型解释
marketstring市场,SH,SZ,SHO,SZO,IF等

返回值

list,合约代码列表

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):

    print(C.get_his_contract_list('SHO')[:30])

获取期权信息

ContextInfo.get_option_detail_data - 获取指定期权品种的详细信息

原型

内置python

python
ContextInfo.get_option_detail_data(optioncode)

释义

获取指定期权品种的详细信息

参数

字段名数据类型解释
optioncodestring期权代码,如'10001506.SHO',当填写空字符串时候默认为当前主图的期权品种

返回值dict,字段如下:

字段类型说明
ExchangeIDstr期权市场代码
InstrumentIDstr期权代码
ProductIDstr期权标的的产品ID
OpenDateint发行日期
ExpireDateint到期日
PreClosefloat前收价格
SettlementPricefloat前结算价格
UpStopPricefloat当日涨停价
DownStopPricefloat当日跌停价
LongMarginRatiofloat多头保证金率
ShortMarginRatiofloat空头保证金率
PriceTickfloat最小变价单位
VolumeMultipleint合约乘数
MaxMarketOrderVolumeint涨跌停价最大下单量
MinMarketOrderVolumeint涨跌停价最小下单量
MaxLimitOrderVolumeint限价单最大下单量
MinLimitOrderVolumeint限价单最小下单量
OptUnitint期权合约单位
MarginUnitfloat期权单位保证金
OptUndlCodestr期权标的证券代码
OptUndlMarketstr期权标的证券市场
OptExercisePricefloat期权行权价
NeeqExeTypestr全国股转转让类型
OptUndlRiskFreeRatefloat期权标的无风险利率
OptUndlHistoryRatefloat期权标的历史波动率
EndDelivDateint期权行权终止日
optTypestr期权类型

示例

示例返回值

python
#encoding:gbk
def init(ContextInfo):
  pass

def after_init(ContextInfo):
  print(ContextInfo.get_option_detail_data('10002235.SHO'))

ContextInfo.get_option_list - 获取指定期权列表

原型

内置python

python
ContextInfo.get_option_list(undl_code,dedate,opttype,isavailable)

释义

获取指定期权列表。如获取历史期权,需先下载过期合约列表

参数

字段名数据类型解释
undl_codestring期权标的代码,如'510300.SH'
dedatestring期权到期月或当前交易日期,"YYYYMM"格式为期权到期月,"YYYYMMDD"格式为获取当前日期交易的期权
opttypestring期权类型,默认值为空,"CALL","PUT",为空时认购认沽都取
isavailablebool是否可交易,当dedate的格式为"YYYYMMDD"格式为获取当前日期交易的期权时,isavailable为True时返回当前可用,为False时返回当前和历史可用

返回值

list,期权合约列表

示例

示例data1返回值data2返回值data3返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    # 获取到期月份为202101的上交所510300ETF认购合约
    data1=C.get_option_list('510300.SH','202101',"CALL")

    # 获取20210104当天上交所510300ETF可交易的认购合约
    data2=C.get_option_list('510300.SH','20210104',"CALL",True)

    # 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市)
    data3=C.get_option_list('510300.SH','20210104',"CALL",False)

ContextInfo.get_option_undl_data - 获取指定期权标的对应的期权品种列表

原型

内置python

python
ContextInfo.get_option_undl_data(undl_code_ref)

释义

获取指定期权标的对应的期权品种列表

参数

字段名数据类型解释
undl_code_refstring期权标的代码,如'510300.SH',传空字符串时获取全部标的数据

返回值

指定期权标的代码时返回对应该标的的期权合约列表list

期权标的代码为空字符串时返回全部标的对应的品种列表的字典dict

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):

    print(C.get_option_undl_data('510300.SH')[:30])

ContextInfo.bsm_price - 基于BS模型计算欧式期权理论价格

原型

内置python

python
ContextInfo.bsm_price(optionType,objectPrices,strikePrice,riskFree,sigma,days,dividend)

释义

基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、无风险利率、期权标的年化波动率、剩余天数、标的分红率、计算期权的理论价格

参数

字段类型说明
optionTypestr期权类型,认购:'C',认沽:'P'
objectPricesfloat期权标的价格,可以是价格列表或者单个价格
strikePricefloat期权行权价
riskFreefloat无风险收益率
sigmafloat标的波动率
daysint剩余天数
dividendfloat分红率

返回

  • objectPrices为float时,返回float
  • objectPrices为list时,返回list
  • 计算结果最小值0.0001,结果保留4位小数,输入非法参数返回nan

示例返回值

python
#encoding:gbk
import numpy as np


def init(ContextInfo):
  pass

def after_init(ContextInfo):
  object_prices=list(np.arange(3,4,0.01));
  #计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格从3元到4元变动过程中期权理论价格序列
  prices=ContextInfo.bsm_price('C',object_prices,3.5,0.03,0.23,15,0)
  print(prices)
  #计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格为3.51元的平值期权的理论价格
  price=ContextInfo.bsm_price('C',3.51,3.5,0.03,0.23,15,0)
  print(price)

ContextInfo.bsm_iv - 基于BS模型计算欧式期权隐含波动率

原型

内置python

python
ContextInfo.bsm_iv(optionType,objectPrices,strikePrice,optionPrice,riskFree,days,dividend)

释义 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利率、剩余天数、标的分红率,计算期权的隐含波动率

参数

字段类型说明
optionTypestr期权类型,认购:'C',认沽:'P'
objectPricesfloat期权标的价格,可以是价格列表或者单个价格
strikePricefloat期权行权价
riskFreefloat无风险收益率
sigmafloat标的波动率
daysint剩余天数
dividendfloat分红率

返回

double

示例返回值

python
#encoding:gbk
import numpy as np

def init(ContextInfo):
    pass

def after_init(ContextInfo):
    # 计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0时,标的现价3.51元,期权价格0.0725元时的隐含波动率
    iv=ContextInfo.bsm_iv('C',3.51,3.5,0.0725,0.03,15)
    print(iv)

获取除复权信息

ContextInfo.get_divid_factors - 获取除权除息日和复权因子

原型

内置python

python
ContextInfo.get_divid_factors(stock.market)

释义

获取除权除息日和复权因子

参数

字段名数据类型解释
stock.marketstring股票代码.市场代码,如 '600000.SH'

返回值

dict

key:时间戳,

value:list[每股红利,每股送转,每股转赠,配股,配股价,是否股改,复权系数]

输入除权除息日非法时候返回空dict,合法时返回输入日期的对应的dict,不输入时返回查询股票的所有除权除息日及对应dict

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    Result = C.get_divid_factors('600000.SH')
    print(Result)

获取指数权重

ContextInfo.get_weight_in_index - 获取某只股票在某指数中的绝对权重

原型

内置python

python
ContextInfo.get_weight_in_index(indexcode, stockcode)

释义

获取某只股票在某指数中的绝对权重

参数

字段名数据类型解释
indexcodestring指数代码,格式为 'stockcode.market',例如 '000300.SH'
stockcodestring股票代码,格式为 'stockcode.market',例如 '600004.SH'

返回值

float:返回的数值单位是 %,如 1.6134 表示权重是 1.6134%

示例

示例返回值

python
# coding:gbk
def init(C):
    pass

def handlebar(C):
    data = C.get_weight_in_index('000300.SH', '000002.SZ')
    print(data)

获取成分股信息

ContextInfo.get_stock_list_in_sector - 获取板块成份股

原型

内置python

python
ContextInfo.get_stock_list_in_sector(sectorname, realtime)

释义

获取板块成份股,支持客户端左侧板块列表中任意的板块,包括自定义板块

参数

字段名数据类型解释
sectornamestring板块名,如 '沪深300','中证500','上证50','我的自选'等
realtime毫秒级时间戳实时数据的毫秒级时间戳

返回值

list:内含成份股代码,代码形式为 'stockcode.market',如 '000002.SZ'

示例

示例返回值

python
# coding:gbk
def init(C):
    pass
def handlebar(C):
    print(C.get_stock_list_in_sector('上证50'))

获取交易日信息

注意

  1. 该函数只能在after_init;handlebar运行

ContextInfo.get_trading_dates - 获取交易日信息

原型

内置python

python
ContextInfo.get_trading_dates(stockcode,start_date,end_date,count,period='1d')

释义

ContextInfo.get_trading_dates(stockcode,start_date,end_date,count,period='1d')

参数

字段名数据类型解释
stockcodestring股票代码,缺省值''默认为当前图代码,如:'600000.SH'
start_datestring开始时间,缺省值''为空时不使用,如:'20170101','20170101000000'
end_datestring结束时间,缺省值''默认为当前bar的时间,如:'20170102','20170102000000'
countintK线个数,必须大于0,取包括end_date往前的count个K线,start_date不为空时此值无效,写为1即可
periodstringk线类型,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线

返回值

list:K线周期(交易日)列表 period为日线时返回如['20170101','20170102',...]样式 其它返回如['20170101010000','20170102020000',...]样式

示例

示例返回值

python
# coding:gbk
def init(C):
    pass
def after_init(C):
    print(C.get_trading_dates('600000.SH','','',30,'1d'))
def handlebar(C):
    pass

交易函数

交易下单函数

passorder - 综合下单函数

不要凭记忆填枚举

opType / orderType / prType 以本页数据字典和券商手册为准。写错一个数量级或开成两融。 下单返回不等于成交。状态变化接 order_callback / deal_callback,对账再用 get_trade_detail_data 查 ORDER / DEAL。

综合下单函数,用于股票、期货、期权等下单和新股、新债申购、融资融券等交易操作推荐使用

  1. 推荐使用
  2. 可覆盖多品种下单
  3. 注意参数的变化

调用方法:

python
passorder(
    opType, orderType, accountid
    , orderCode, prType, price, volume
    , strategyName, quickTrade, userOrderId
    , ContextInfo
)
'''
passorder(
    2 #opType 操作号
    , 1101 #orderType 组合方式
    , '1000044' #accountid 资金账号
    , 'cu2403.SF' #orderCode 品种代码
    , 14 #prType 报价类型
    , 0.0 #price 价格
    , 2 #volume 下单量
    , '示例下单' #strategyName 策略名称
    , 1 #quickTrade 快速下单标记
    , '投资备注' #userOrderId 投资备注
    , C #ContextInfo 策略上下文
)
'''

参数:

参数名类型说明提示
opTypeint交易类型可选买、买,期货开仓、平仓等 / / 可选值参考opType-操作类型
orderTypeint/ / 下单方式可选值参考orderType-下单方式 / / 可选按股票数量买卖或按照金额等方式买卖 / / 一、期货不支持 1102 和 1202; / / 二、对所有账号组的操作相当于对账号组里的每个账号做一样的操作,如 passorder (23, 1202, 'testS', '000001. SZ', 5, -1, 50000, ContextInfo),意思就是对账号组 testS 里的所有账号都以最新价开仓买入 50000 元市值的 000001.SZ 平安银行;passorder (60,1101,"test",'510050. SH', 5,-1,1, ContextInfo)意思就是账号test申购 1 个单位 (900000股)的华夏上证50ETF (只申购不买入成分股)。 / /
accountIDstring资金账号下单的账号ID(可多个)或账号组名或套利组名(一个篮子一个套利账号,如 accountID = '股票账户名, 期货账号')
orderCodestring下单代码1. 如果是单股或单期货、港股,则该参数填合约代码; / 2. 如果是组合交易, 则该参数填篮子名称,参考组合交易; / 3. 如果是组合套利,则填一个篮子名和一个期货合约名(如orderCode = '篮子名, 期货合约名'),请参考组合套利交易 / /
prTypeint下单选价类型可选值参考prType-下单选价类型 / / 特别的对于套利,这个 prType 只对篮子起作用,期货的采用默认的方式)
pricefloat下单价格一、单股下单时,prType 是模型价/科创板盘后定价时 price 有效;其它情况无效; / / 1.1 即单股时, prType 参数为 1149 时被使用。 / / 1.2 prType 参数不为 1149 时也需填写,填写的内容可为 -102100 等任意数字; / / 二、组合下单时,是组合套利时,price 作套利比例有效,其它情况无效。
volumeint下单数量(股 / 手 / 元 / %)根据 orderType 值最后一位确定 volume 的单位,可选值参考volume - 下单
strategyNamestring自定义策略名/ / 一、用来区分 order 委托和deal 成交来自不同的策略。 / / 根据该策略名,get_trade_detail_dataget_last_order_id 函数可以获取相应策略名对应的委托或成交集合。 / / strategyName 只对同账号本地客户端有效,即 strategyName 只对当前客户端下的单进行策略区分,且该策略区分只能当前客户端使用。 / /
quickTradeint设定是否立即触发下单/ / 可选值参考quicktrade - 快速下单 / / passorder是对最后一根K线完全走完后生成的模型信号在下一根K线的第一个tick数据来时触发下单交易; / / 采用quickTrade参数设置为1时,非历史bar上执行时(ContextInfo.is_last_bar()True),只要策略模型中调用到就触发下单交易。 / / quickTrade参数设置为2时,不判断bar状态,只要策略模型中调用到就触发下单交易,历史bar上也能触发下单,请谨慎使用。
userOrderIdstring用户自设委托 ID如果传入该参数, / 则 strategyName 和 quickTrade 参数也填写。 / 对应 order 委托对象和 deal 成交对象中的 m_strRemark 属性,通过 get_trade_detail_data 函数或委托主推函数 order_callback 和成交主推函数 deal_callback 可拿到这两个对象信息。 /
ContextInfoclass系统参数含有k线信息和接口的上下文对象

返回:

更多示例:

  1. 股票
  2. 基金
  3. 两融
  4. 期货
  5. 期权
  6. 新股申购
  7. 债券
  8. ETF
  9. 组合交易
  10. 组合套利交易

algo_passorder - 算法下单(拆单)函数

用于按固定时间间隔和固定规则把目标交易数量拆分成多次下单的交易函数

调用用法:

python
algo_passorder(opType,orderType,accountid,orderCode,prType,price,volume,[strategyName,quickTrade,userOrderId,userOrderParam],ContextInfo)`

算法交易下单,此时使用交易面板-程序交易-函数交易-函数交易参数中设置的下单类型(普通交易,算法交易,随机量交易) 如果函数交易参数使用未修改的默认值,此函数和passorder函数一致, 设置了函数交易参数后,将会使用函数交易参数的超价等拆单参数,algo_passorder内的prType若赋值,则优先使用该参数,若algo_passorder内的prType=-1,将会使用userOrderParam内的opType,若userOrderParam未赋值,则使用界面上的函数交易参数的报价方式

参数:
其他参数同passorder,详细解释可参考passorder的说明
userOrderParam dict[str:value] 是用户自定义交易参数,主要用于修改算法交易的参数 其中Key Value定义如下

注:所有参数均为非必选

KeyValue类型Value
OrderTypeint普通交易:0 / 算法交易:1 / 随机量交易:2
PriceTypeint报价方式:数值同passorde prType
MaxOrderCountint最大下单次数
SinglePriceRangeint波动区间是否单向: / 否:0, / 是:1
PriceRangeTypeint波动区间类型按比例:0,按数值1
PriceRangeValuefloat波动区间(按数值)
PriceRangeRatefloat波动区间(按比例)[0-1]
SuperPriceTypeint单笔超价类型: / 按比例:0 / 按数值1
SuperPriceRatefloat单笔超价(按比例)[0-1]
SuperPriceValuefloat单笔超价(按数值)
VolumeTypeint单笔基准量类型卖1+2+3+4+5量:0 / 卖1+2+3+4量:1 / ... / 卖1量:4 / 买1量:5 / ... / 买1+2+3+4+5量:9 / 目标量:10 / 目标剩余量:11 / 持仓数量:12
VolumeRatefloat单笔下单比率[0-1]
SingleNumMinfloat单笔下单量最小值
SingleNumMaxfloat单笔下单量最大值
ValidTimeTypeint有效时间类型: / 0:按持续时间 / 1 按时间区间,默认为0
ValidTimeElapseint有效持续时间,ValidTimeType设置为0时生效
ValidTimeStartint有效开始时间偏移,ValidTimeType设置为1时生效
ValidTimeEndint有效结束时间偏移,ValidTimeType设置为1时生效
UndealtEntrustRuleint未成委托处理数值同prType
PlaceOrderIntervalint下撤单时间间隔
UseTriggerint是否触价: / 否:0 / 是:1
TriggerTypeint触价类型: / 最新价大于:1 / 最新价小于:2
TriggerPricefloat触价价格
SuperPriceEnableint超价启用笔数

返回

示例

python
#coding:gbk
userparam = {
    "OrderType": 1,
    "MaxOrderCount": 20,
    "SuperPriceType": 1,
    "SuperPriceValue": 1.12}
accid = '918800000818'  #资金账号
algo_passorder(23,1101,accid,'000001.SZ',5,15,1000,'',1,'strReMark',userparam,ContextInfo)
#表示修改算法交易的最大委托次数为20,单笔下单基准类型为按价格类型超价,单笔超价1.12元,其他参数同函数交易参数中设置

smart_algo_passorder - 智能算法(VWAP 等)函数

  1. 调用该函数需要有【智能算法】使用权限

用于使用主动算法或被动算法交易的函数如VWAP TWAP等

调用方法一:

python
smart_algo_passorder(opType,orderType,accountid,orderCode,prType,price,volume,strageName,quickTrade,userOrderId,smartAlgoType,limitOverRate,minAmountPerOrder,[targetPriceLevel,startTime,endTime,limitControl],ContextInfo)

可选参数可缺省

参数:
其他参数同passorder,详细解释可参考passorder的说明

参数名类型说明提示
prTypeint可选值: / 11:限价(只对单股情况支持,对组合交易不支持) / 12:市价 / 特别的对于套利:这个prType只对篮子起作用,期货的采用默认的方式
smartAlgoTypestr智能算法类型 [enum_constants#smartAlgoType智能算法类型]
limitOverRateint量比 数据范围0-100网格算法无此项 / 若在algoParam中填写量比,则填写范围0-1的小数。
minAmountPerOrderint智能算法最小委托金额,数据范围0-100000
targetPriceLevelint智能算法目标价格,可选值: / 1:己方盘口 1 / 2:己方盘口2 / 3:己方盘口3 / 4:己方盘口4 / 5:己方盘口5 / 6:最新价 / 7:对方盘口一、输入无效值则targetPriceLevel为1 / 二、本项只针对冰山算法,其他算法可缺省。
startTimestr智能算法开始时间格式"HH:MM:SS",如"10:30:00"。如果缺省值,则默认为"09:30:00"
endTimestr智能算法截止时间格式"HH:MM:SS",如"14:30:00"。如果缺省值,则默认为"15:30:00"
limitControlint涨跌停控制默认值为1 / 1:涨停不卖跌停不买 / 0:无限制

返回

示例:

python
#coding:gbk


def init(ContextInfo):
    pass


def after_init(ContextInfo):
    # # 使用smart_algo_passorder 下单
    smart_algo_passorder(
        23,                # 买入
        1101,              # 表示volume的单位是股
        account,           # 资金账号
        '000001.SZ',
        12,                #  11限价,12市价
        0,                 # 限价时,价格填任意数量占位
        50000,             # 5000股
        '',
        2,                 # quickTrade
        '',
        'VWAP',
        25,                 # 量比25%
        0,                  # 智能算法最小委托金额
        1,                  # 智能算法目标价格 本项只针对冰山算法,其他算法可缺省。
        "10:25:00",         # 开始时间
        "14:50:00",         # 结束时间
        1,                  # 涨跌停控制 1为涨停不卖跌停不卖 0 为无限制
        ContextInfo
        )

调用方法二:
当时用algoParam时,函数声明为:smart_algo_passorder(opType,orderType,accountid,orderCode,prType,modelprice,volume,strageName,quickTrade,userid,smartAlgoType,startTime,endTime,algoParam,ContextInfo)参数均不可缺省
smartAlgoType,startTime,endTime 含义同上,algoParam请使用下面的方法获取:

获取algoParam具体字段

释义

获取智能算法参数配置信息

用法

python
get_smart_algo_param(algoList)

参数

参数类型说明
algoListlist需要查询参数配置信息的算法名称列表, 若传空则查询全部有权限的算法参数配置信息

返回

返回一个字典,键为算法名称,值为参数字典列表。

字段类型说明
keystring参数名称key值,即smart_algo_orderalgoList字典需要传的键值
namestring参数名称
dataTypestring参数类型
valueRangestring参数范围
defaultValuestring参数默认值
enumNamestring参数枚举值的名称
enumValuestring参数实际的枚举值
unitstring参数的单位, 当单位为%时, 值要填写小数而非参数范围所示的百分数值
valueRangeByNamestring不同算法参数范围
defaultValueByNamestring不同算法参数默认值

示例

python
#coding:gbk


def init(ContextInfo):
    pass

    # 方法2 使用algoParam 和smart_algo_passorder
    # 该方法部分旧版本客户端可能会不支持
    # algoParam
    # 先获取所有需要传入的参数
    #
    print(get_smart_algo_param(['VWAP']))
    '''
    输出:[2024-01-30 11:21:10][智能算法1][SH000300][日线] 
    {'VWAP': [
        {'key': 'm_dLimitOverRate', 'name': '量比比例', 'dataType': '浮点数', 'valueRange': '0.00-100.00', 'defaultValue': '20.00', 'enumName': '', 'enumValue': '', 'unit': '%', 'valueRangByName': '', 'defaultValueByName': ''}, 
        {'key': 'm_dMinAmountPerOrder', 'name': '委托最小金额', 'dataType': '整数', 'valueRange': '0-100000', 'defaultValue': '0', 'enumName': '', 'enumValue': '', 'unit': '', 'valueRangByName': '', 'defaultValueByName': ''},
        {'key': 'm_dMaxAmountPerOrder', 'name': '委托最大金额', 'dataType': '浮点数', 'valueRange': '0.00-100000000.00', 'defaultValue': '0', 'enumName': '', 'enumValue': '', 'unit': '', 'valueRangByName': '', 'defaultValueByName': ''}, 
        {'key': 'm_nStopTradeForOwnHiLow', 'name': '涨跌停控制', 'dataType': '整数', 'valueRange': '', 'defaultValue': '涨停不卖跌停不买', 'enumName': '无,涨停不卖跌停不买', 'enumValue': '0,1', 'unit': '', 'valueRangByName': '', 'defaultValueByName': ''}, 
        {'key': 'm_dMulitAccountRate', 'name': '多账号总量比', 'dataType': '浮点数', 'valueRange': '0.00-100.00', 'defaultValue': '0', 'enumName': '', 'enumValue': '', 'unit': '%', 'valueRangByName': '', 'defaultValueByName': ''}, 
        {'key': 'm_strCmdRemark', 'name': '投资备注', 'dataType': '字符串', 'valueRange': '', 'defaultValue': '', 'enumName': '', 'enumValue': '', 'unit': '', 'valueRangByName': '', 'defaultValueByName': ''}]}
    '''
    algoParam={
    'm_dLimitOverRate': 0.25,      # 量比 25%
    'm_dMinAmountPerOrder':0,      # 委托最小金额
    'm_dMaxAmountPerOrder':10000,  # 委托最大金额
    'm_nStopTradeForOwnHiLow': 1,  # 涨跌停控制
    'm_dMulitAccountRate':0.30,    # 多账号总量比
    'm_strCmdRemark':  '投资备注1'  # 投资备注
    }
    smart_algo_passorder(
        23,
        1101,
        account,
        '600000.SH',
        12,
        0,
        10000,
        '',
        2,               # quickTrade
        '投资备注',
        'VWAP',
        "10:25:00",      # 开始时间
        "14:50:00",      # 结束时间
        algoParam,       # 算法参数
        ContextInfo
        )

cancel-撤销委托

调用方法cancel(orderId, accountId, accountType, ContextInfo)

参数

参数名类型含义说明
orderIdstring委托号必填
accountIDstring资金账号必填
AccountTypestring账号类型 可选: / 'FUTURE':期货 / 'STOCK':股票 / 'CREDIT':信用 / 'HUGANGTONG':沪港通 / 'SHENGANGTONG':深港通 / 'STOCK_OPTION':期权 /必填
ContextInfoclass含有k线信息和接口的上下文对象必填

返回 bool,是否发出了取消委托信号,返回值含义:

True:是
False:否

示例

python返回值

python
#coding:gbk
'''
(1)下单前,根据 get_trade_detail_data 函数返回账号的信息,判定资金是否充足,账号是否在登录状态,统计持仓情况等等。
(2)满足一定的模型条件,用 passorder 下单。
(3)下单后,时刻根据 get_last_order_id 函数获取委托和成交的最新id,注意如果委托生成了,就有了委托号(这个id需要自己保存做一个全局控制)。
(4)用该委托号根据 get_value_by_order_id 函数查看委托的状态,各种情况等。
当一个委托的状态变成“已成'后,那么对应的成交 deal 信息就有一条成交数据;用该委托号可查看成交情况。
*注:委托列表和成交列表中的委托号是一样的,都是这个 m_strOrderSysID 属性值。
可用 get_last_order_id 获取最新的 order 的委托号,然后根据这个委托号获取 deal 的信息,当获取成功后,也说明这笔交易是成了,可再根据 position 持仓信息再进一步验证。
(5)根据委托号获取委托信息,根据委托状态,或模型设定,用 cancel 取消委托。
'''


def init(ContextInfo):
    ContextInfo.accid = '6000000248'

def handlebar(ContextInfo):
    if ContextInfo.is_last_bar():
        orderid = get_last_order_id(ContextInfo.accid, 'stock', 'order')
        print(cancel(orderid, ContextInfo.accid, 'stock', ContextInfo))

cancel_task - 撤销任务

调用方法cancel_task(taskId,accountId,accountType,ContextInfo)

参数

参数名类型含义说明
taskIdstring委托号必填
accountIDstring资金账号必填
AccountTypestring账号类型 可选: / 'FUTURE':期货 / 'STOCK':股票 / 'CREDIT':信用 / 'HUGANGTONG':沪港通 / 'SHENGANGTONG':深港通 / 'STOCK_OPTION':期权 /必填
ContextInfoclass含有k线信息和接口的上下文对象必填

返回 bool,是否发出了撤销任务信号,返回值含义:

True:是

False:否

示例

python
#coding:gbk
'''
(1)根据get_trade_detail_data函数返回任务的信息,获取任务编号(m_nTaskId),任务状态等等;
(2)根据任务编号,用cancel_task取消委托。
'''

def init(ContextInfo):
    ContextInfo.accid = '6000000248'

def handlebar(ContextInfo):
    # 获取当前客户端所有的任务
    if ContextInfo.is_last_bar():
        objlist = get_trade_detail_data(ContextInfo.accid,'stock','task')
        for obj in objlist:
            cancel_task(str(obj.m_nTaskId),ContextInfo.accid,'stock',ContextInfo)

pause_task - 暂停任务

暂停智能算法任务

调用方法 pause_task(taskId,accountId,accountType,ContextInfo)

参数

参数名类型含义说明
taskIdstring委托号必填
accountIDstring资金账号必填
AccountTypestring账号类型 可选: / 'FUTURE':期货 / 'STOCK':股票 / 'CREDIT':信用 / 'HUGANGTONG':沪港通 / 'SHENGANGTONG':深港通 / 'STOCK_OPTION':期权 /必填
ContextInfoclass含有k线信息和接口的上下文对象必填

返回 bool,是否发出了暂停任务信号,返回值含义:

True:是

False:否

示例

python
#coding:gbk
'''
(1)根据get_trade_detail_data函数返回任务的信息,获取任务编号(m_nTaskId),任务状态等等;
(2)根据任务编号,用pause_task暂停智能算法任务。
'''

def init(ContextInfo):
    ContextInfo.accid = '6000000248'    

def handlebar(ContextInfo):

    if ContextInfo.is_last_bar():
        # 获取当前客户端所有的任务
        objlist = get_trade_detail_data(ContextInfo.accid,'stock','task')
        for obj in objlist:
            pause_task(obj.m_nTaskId,ContextInfo.accid,'stock',ContextInfo)

resume_task - 继续任务

继续智能算法任务

调用方法resume_task(taskId,accountId,accountType,ContextInfo)

参数

参数名类型含义说明
taskIdstring委托号必填
accountIDstring资金账号必填
AccountTypestring账号类型 可选: / 'FUTURE':期货 / 'STOCK':股票 / 'CREDIT':信用 / 'HUGANGTONG':沪港通 / 'SHENGANGTONG':深港通 / 'STOCK_OPTION':期权 /必填
ContextInfoclass含有k线信息和接口的上下文对象必填

返回 bool,是否发出了重启任务信号,返回值含义:

True:是

False:否

示例

python
#coding:gbk
'''
(1)根据get_trade_detail_data函数返回任务的信息,获取任务编号(m_nTaskId),任务状态等等;
(2)根据任务编号,用resume_task启动已暂停智能算法任务。
'''

def init(ContextInfo):
    ContextInfo.accid = '6000000248'    
def handlebar(ContextInfo):
    if ContextInfo.is_last_bar():
        # 获取当前客户端所有的任务
        objlist = get_trade_detail_data(ContextInfo.accid,'stock','task')
        for obj in objlist:
            resume_task(obj.m_nTaskId,ContextInfo.accid,'stock',ContextInfo)

get_basket-获取股票篮子

用法: get_basket(basketName)

释义: 获取股票篮子

参数:

  • basketName:股票篮子名称

示例:

python
print( get_basket('basket1') )

set_basket-设置股票篮子

用法: set_basket(basketDict)

释义: 设置passorder的股票篮子,仅用于passorder进行篮子交易,设置成功后,用get_basket可以取出后即可进行passorder组合交易下单

参数:

  • basketDict:股票篮子 {'name':股票篮子名称,'stocks':[{'stock':股票名称,'weight',权重,'quantity':数量,'optType':交易类型}]} 。

示例:

python
table=[
    {'stock':'600000.SH','weight':0.11,'quantity':100,'optType':23},
    {'stock':'600028.SH','weight':0.11,'quantity':200,'optType':24},
]
basket={'name':'basket1','stocks':table}
set_basket(basket)
#一键买卖2份(2101代表用篮子里quantity字段)basket1里面的股票组合,即600000.SH买入200股,600028.SH卖出400股
passorder(35,2101,ContextInfo.accid,'basket1',5,-1,2,'basketOrder',2,'basketOrder',ContextInfo)

交易查询函数

get_trade_detail_data-查询账号资金信息、委托记录等

调用方法 get_trade_detail_data(accountID, strAccountType, strDatatype, strategyName)
或不区分策略
get_trade_detail_data(accountID, strAccountType, strDatatype)

参数

参数名类型说明备注
accountIDstring资金账号必填
strAccountTypestring账号类型 可选: / 'FUTURE':期货 / 'STOCK':股票 / 'CREDIT':信用 / 'HUGANGTONG':沪港通 / 'SHENGANGTONG':深港通 / 'STOCK_OPTION':期权 /必填
strDatatypestring要查询数据类型 可选: / ACCOUNT账号对象信用账号对象 / POSITION持仓 / POSITION_STATISTICS持仓统计 / ORDER委托 / DEAL :成交 / TASK任务必填
strategyNamestring策略 当用passorder下单时指定了strategyName 参数时,当查询成交和委托时传入同样的strageName,则可以只返回包含strategyName的委托子集或成交子集strategyName参数只对成交和委托有效,选填

返回 list,list 中放的是对应strDatatype的 Python对象,通过 dir(pythonobj) 可返回某个对象的属性列表。

有五种交易相关信息,包括:

ACCOUNT:账号对象信用账号对象

POSITION:持仓明细

POSITION_STATISTICS: 持仓统计

ORDER:委托

DEAL:成交

TASK:任务

示例:

python返回值

python
#coding:gbk

account = '800174' # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值;编译器环境里执行的下单函数不会产生实际委托

def init(ContextInfo):
    pass

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return

    orders = get_trade_detail_data(account, 'stock', 'order')
    print('查询委托结果:')
    for o in orders:
        print(f'股票代码: {o.m_strInstrumentID}, 市场类型: {o.m_strExchangeID}, 证券名称: {o.m_strInstrumentName}, 买卖方向: {o.m_nOffsetFlag}',
        f'委托数量: {o.m_nVolumeTotalOriginal}, 成交均价: {o.m_dTradedPrice}, 成交数量: {o.m_nVolumeTraded}, 成交金额:{o.m_dTradeAmount}')


    deals = get_trade_detail_data(account, 'stock', 'deal')
    print('查询成交结果:')
    for dt in deals:
        print(f'股票代码: {dt.m_strInstrumentID}, 市场类型: {dt.m_strExchangeID}, 证券名称: {dt.m_strInstrumentName}, 买卖方向: {dt.m_nOffsetFlag}', 
        f'成交价格: {dt.m_dPrice}, 成交数量: {dt.m_nVolume}, 成交金额: {dt.m_dTradeAmount}')

    positions = get_trade_detail_data(account, 'stock', 'position')
    print('查询持仓结果:')
    for dt in positions:
        print(f'股票代码: {dt.m_strInstrumentID}, 市场类型: {dt.m_strExchangeID}, 证券名称: {dt.m_strInstrumentName}, 持仓量: {dt.m_nVolume}, 可用数量: {dt.m_nCanUseVolume}',
        f'成本价: {dt.m_dOpenPrice:.2f}, 市值: {dt.m_dInstrumentValue:.2f}, 持仓成本: {dt.m_dPositionCost:.2f}, 盈亏: {dt.m_dPositionProfit:.2f}')


    accounts = get_trade_detail_data(account, 'stock', 'account')
    print('查询账号结果:')
    for dt in accounts:
        print(f'总资产: {dt.m_dBalance:.2f}, 净资产: {dt.m_dAssureAsset:.2f}, 总市值: {dt.m_dInstrumentValue:.2f}', 
        f'总负债: {dt.m_dTotalDebit:.2f}, 可用金额: {dt.m_dAvailable:.2f}, 盈亏: {dt.m_dPositionProfit:.2f}')

    position_statistics = get_trade_detail_data(account,"FUTURE",'POSITION_STATISTICS')
    for obj in position_statistics:
        if obj.m_nDirection == 49:
            continue
        PositionInfo_dict[obj.m_strInstrumentID+"."+obj.m_strExchangeID]={
        "持仓":obj.m_nPosition,
        "成本":obj.m_dPositionCost,
        "浮动盈亏":obj.m_dFloatProfit,
        "保证金占用":obj.m_dUsedMargin
        }
    print(PositionInfo_dict)

get_history_trade_detail_data - 查询历史交易明细

用法: get_history_trade_detail_data(accountID,strAccountType,strDatatype,strStratDate,strEndDate);

释义: 获取历史成交明细数据,返回结果为一个([timetag,obj...])的元组

参数:

accountID:string,账号; strAccountType:string,账号类型,有"FUTURE","STOCK","CREDIT","HUGANGTONG","SHENGANGTONG","STOCK_OPTION"; strDatatype:string,交易明细数据类型,有:持仓"POSITION"、委托"ORDER"、成交"DEAL"; strStratDate:string,开始时间,如'20240513'; strEndDate:string,结束时间,如'20240514';

**返回:**list,list中放的是PythonObj,通过dir(pythonobj)可返回某个对象的属性列表 示例:

示例

python
def handlebar(ContextInfo):
    obj_list = get_history_trade_detail_data('6000000248','stock','position','20240513','20240514')
    for time,data in obj_list:
        for obj in data:
            print(obj.m_strInstrumentID)
            print(dir(obj))#查看有哪些属性字段

get_ipo_data-获取当日新股新债信息

用法: get_ipo_data([,type])

释义: 获取当日新股新债信息,返回结果为一个字典,包括新股申购代码,申购名称,最大申购数量,最小申购数量等数据

参数:

  • type:为空时返回新股新债信息,type="STOCK"时只返回新股申购信息,type="BOND"时只返回新债申购信息

示例:

python
#coding:gbk
def init(ContextInfo):
    ipoData=get_ipo_data()# 返回新股新债信息
    ipoStock=get_ipo_data("STOCK")# 返回新股信息
    ipoCB=get_ipo_data("BOND")# 返回新债申购信息

get_new_purchase_limit-获取账户新股申购额度

用法: get_new_purchase_limit(accid)

释义: 获取账户新股申购额度,返回结果为一个字典,包括上海主板,深圳市场,上海科创版的申购额度

参数:

  • accid:资金账号,必须时股票账号或者信用账号

示例:

python
def init(ContextInfo):
    ContextInfo.accid="10000001"# 返回新股新债信息
    purchase_limit=get_new_purchase_limit(ContextInfo.accid)

get_value_by_order_id-根据委托号获取委托或成交信息

调用方法get_value_by_order_id(orderId, accountID, strAccountType, strDatatype)

参数

参数名类型含义说明
orderIdstring委托号必填
accountIDstring资金账号必填
strAccountTypestring账号类型 可选: / 'FUTURE':期货 / 'STOCK':股票 / 'CREDIT':信用 / 'HUGANGTONG':沪港通 / 'SHENGANGTONG':深港通 / 'STOCK_OPTION':期权 /必填
strDatatypestring要查询数据类型 可选: / 'ORDER':委托 / 'DEAL' :成交必填

返回

委托对象 或 成交对象

示例

python返回值

python
def init(ContextInfo):
    ContextInfo.accid = '6000000248'

def handlebar(ContextInfo):
    orderid = get_last_order_id(ContextInfo.accid, 'stock', 'order')
    print(orderid)
    obj = get_value_by_order_id(orderid,ContextInfo.accid, 'stock', 'order')
    print(obj.m_strInstrumentID)

调用方法

python
# 区分策略,添加策略名称参数 strategyName
get_last_order_id(accountID, strAccountType, strDatatype, strategyName)

# 不区分策略
get_last_order_id(accountID, strAccountType, strDatatype)

参数

参数名类型含义说明
accountIDstring资金账号必填
strAccountTypestring账号类型 可选: / 'FUTURE':期货 / 'STOCK':股票 / 'CREDIT':信用 / 'HUGANGTONG':沪港通 / 'SHENGANGTONG':深港通 / 'STOCK_OPTION':期权 /必填
strDatatypestring要查询数据类型 可选: / 'ORDER':委托 / 'DEAL' :成交必填
strategyNamestring策略 当用passorder下单时指定了strategyName 参数时,当查询成交和委托时传入同样的strageName,则可以只返回包含strategyName的委托子集或成交子集选填

返回

String,委托号,如果没找到返回 '-1'。

示例

python
def init(ContextInfo):
    ContextInfo.accid = '6000000248'

def handlebar(ContextInfo):
    orderid = get_last_order_id(ContextInfo.accid, 'stock', 'order')
    print(orderid)
    obj = get_value_by_order_id(orderid,ContextInfo.accid, 'stock', 'order')
    print(obj.m_strInstrumentID)

get_assure_contract-获取两融担保标的明细

用法: get_assure_contract(accId)

释义: 获取信用账户担保合约明细

参数:

  • accId:信用账户

返回: list,list 中放的是 StkSubjects,通过 dir(pythonobj) 可返回某个对象的属性列表。

示例:

python
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def handlebar(ContextInfo): 
    obj = get_assure_contract('6000000248')
    for i in obj[:3]:
        print(show_data(i))


"""
{'m_dAssureRatio': 0.0, # 担保品折算比例
'm_dFinRatio': 0.8, # 融资保证金比例
'm_dSloRatio': 1.0,  # 融券保证金比例
'm_eAssureStatus': 50,  # 是否可做担保
'm_eCreditFundCtl': 50, # 融资交易控制
'm_eCreditStkCtl': 50, # 融券交易控制
'm_eFinStatus': 48, # 融资状态
'm_eSloStatus': 48, # 融券状态
'm_nPlatformID': 10064,  # 平台号
'm_strAccountID': '95000857',  # 资金账号
'm_strBrokerID': '003', # 经纪公司编号
'm_strBrokerName': '光大证券信用',  # 证券公司
'm_strExchangeID': 'SH', # 交易所
'm_strInstrumentID':'510150' # 证券代码
"""

get_enable_short_contract-获取可融券明细

注:由于字段m_dSloRatio、m_dSloStatus提供来源和取担保品明细(get_assure_contract)重复,字段在2021年9月移除,后续用担保品明细接口获取,具体见 担保标的对象字段说明

用法: get_enable_short_contract(accId)

释义: 获取信用账户当前可融券的明细

参数:

  • accId:信用账户

返回: list,list 中放的是 CreditSloEnableAmount,通过 dir(pythonobj) 可返回某个对象的属性列表。

示例:

python
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def handlebar(ContextInfo):
    obj = get_enable_short_contract('6000000248')
    for i in obj[:3]:
        print(show_data(i))

"""
Rerutn:

{'m_eQuerySloType': 48, # 查询类型
'm_nEnableAmount': 0,  # 融券可融数量
'm_nPlatformID': 10064,  # 平台号
'm_strAccountID': '95000857',  # 资金账号
'm_strBrokerID': '003',  # 经纪公司编号
'm_strBrokerName': '光大证券信用',  # 证券公司
'm_strExchangeID': 'SH', # 标的市场
'm_strInstrumentID': '688321' # 证券代码
}

"""

query_credit_account - 查询信用账户明细

注意

  1. 本函数一次最多查询200只股票的两融最大下单量,且同时只能有一个查询,如果前面的查询正在进行中,后面的查询将会提前返回。本函数从服务器查询数据,建议平均查询时间间隔180s一次,不可频繁调用。
  2. 该函数必须配合credit_account_callback回调才能使用,关于此回调的说明请看credit_account_callback
  3. callback返回的对象是CCreditAccountDetail

调用query_credit_account,该接口的查询结果将会推送给credit_account_callback,所以程序里需要按照函数参数实现函数credit_account_callback,callback返回的对象是CCreditAccountDetail

用法: query_credit_account(accountId,seq,ContextInfo)
释义: 查询信用账户明细。本函数只能有一个查询,如果前面的查询正在进行中,后面的查询将会提前返回。

参数:

  • accountId:string,查询的两融账号

  • seq:int,查询序列号,建议输入唯一值以便对应结果回调

示例:

python返回值

python
#coding:gbk


import time

def init(ContextInfo):
    ContextInfo.accid='200133'

def handlebar(ContextInfo):
    if ContextInfo.is_last_bar():
        query_credit_account(ContextInfo.accid,int(time.time()),ContextInfo)
# 该函数必须配合credit_account_callback回调才能使用
def credit_account_callback(ContextInfo,seq,result):
    print(seq)
    print(f":维持担保比例:{result.m_dPerAssurescaleValue:.2f},总负债:{result.m_dTotalDebt:.2f}")

回调示例 见query_credit_account

query_credit_opvolume - 查询两融最大可下单量

注意

  1. 本函数一次最多查询200只股票的两融最大下单量,且同时只能有一个查询,如果前面的查询正在进行中,后面的查询将会提前返回。本函数从服务器查询数据,建议平均查询时间间隔180s一次,不可频繁调用。
  2. 该函数必须配合credit_opvolume_callback回调才能使用,关于此回调的说明请看credit_account_callback

调用query_credit_opvolume,该接口的查询结果将会推送给credit_opvolume_callback,所以必须配合credit_opvolume_callback回调才能使用

用法: query_credit_opvolume(accountId,stockCode,opType,prType,price,seq,ContextInfo)

释义: 查询两融最大可下单量。

参数:

  • accountId:查询的两融账号
  • stockCode:需要查询的股票代码,stockCode为List的类型,可以查询多只股票
  • opType:两融下单类型,同passorder的下单类型
  • prType:报单价格类型,同passorder的报价类型
  • seq:查询序列号,int型,建议输入唯一值以便对应结果回调
  • price:报价(非限价单可以填任意值),如果stockCodeList类型,报价也需要为长度相同的List
  • ContextInfo:ContextInfo类

示例:

python返回值

python
#coding:gbk

import time

def init(ContextInfo):
    ContextInfo.accid='200133'

def handlebar(ContextInfo):
    if ContextInfo.is_last_bar():
        #查询accid账号担保品买入600000,SH限价10元的最大可下单量
        query_credit_opvolume(ContextInfo.accid,'600000.SH',33,11,10,int(time.time()),C) # 查询两融最大可下单量。
        time.sleep(0.5)
        #查询accid账号担保品买入600000,SH限价10元,000001.SZ担保品买入限价20元的最大可下单量
        query_credit_opvolume(ContextInfo.accid,["600000.SH","000001.SZ"],33,11,[10,20],int(time.time()),C) # 查询两融最大可下单量。

# 该函数必须配合credit_opvolume_callback回调才能使用
def credit_opvolume_callback(ContextInfo,accid,seq,ret,result):
    print(seq)
    print(f'查询结果:{ret}') # 正常返回:1,正在查询中-1,输入账号非法:-2,输入查询参数非法:-3,超时等服务器返回报错:-4
    print(result)

get_option_subject_position-取期权标的持仓

用法: get_option_subject_position(accountID)

释义: 取期权标的持仓

参数:

  • accountID:string,账号

返回: list,list中放的是CLockPosition,通过dir(pythonobj)可返回某个对象的属性列表

示例:

python
data=get_option_subject_position('880399990383')
print(len(data));
forobjindata:
    print(obj.m_strInstrumentName,obj.m_lockVol,obj.m_coveredVol);

get_comb_option-取期权组合持仓

用法: get_comb_option(accountID)

释义: 取期权组合持仓

参数:

  • accountID:string,账号

返回: list,list中放的是CStkOptCombPositionDetail ,通过dir(pythonobj)可返回某个对象的属性列表

示例:

python
obj_list=get_comb_option('880399990383')
print(len(obj_list));
forobjinobj_list:
    print(obj.m_strCombCodeName,obj.m_strCombID,obj.m_nVolume,obj.m_nFrozenVolume)

get_unclosed_compacts-获取未了结负债合约明细

用法: get_unclosed_compacts(accountID,accountType)

释义: 获取未了结负债合约明细

参数:

  • accountID:str,资金账号
  • accountType:str,账号类型,这里应该填'CREDIT'

返回:

list([ CStkUnclosedCompacts, ... ]) 负债列表,CStkUnclosedCompacts属性如下:

字段名称类型说明
m_strAccountIDstring账号ID
m_nBrokerTypeint账号类型 / 1-期货账号 / 2-股票账号 / 3-信用账号 / 5-期货期权账号 / 6-股票期权账号 / 7-沪港通账号 / 11-深港通账号
m_strExchangeIDstring市场
m_strInstrumentIDstring证券代码
m_eCompactTypeint合约类型 / 32-不限制 / 48-融资 / 49-融券
m_eCashgroupPropint头寸来源 / 32-不限制 / 48-普通头寸 / 49-专项头寸
m_nOpenDateint开仓日期(如'20201231')
m_nBusinessVolint合约证券数量
m_nRealCompactVolint未还合约数量
m_nRetEndDateint到期日(如'20201231')
m_dBusinessBalancefloat合约金额
m_dBusinessFarefloat合约息费
m_dRealCompactBalancefloat未还合约金额
m_dRealCompactFarefloat未还合约息费
m_dRepaidFarefloat已还息费
m_dRepaidBalancefloat已还金额
m_strCompactIdstring合约编号
m_strEntrustNostring委托编号
m_nRepayPriorityint偿还优先级
m_strPositionStrstring定位串
m_eCompactRenewalStatusint合约展期状态 / 48-可申请 / 49-已申请 / 50-审批通过 / 51-审批不通过 / 52-不可申请 / 53-已执行 / 54-已取消
m_nDeferTimesint展期次数

示例:

python
get_unclosed_compacts('6000000248', 'CREDIT')

get_closed_compacts-获取已了结负债合约明细

用法: get_closed_compacts(accountID,accountType)

释义: 获取已了结负债合约明细

参数:

  • accountID:str,资金账号
  • accountType:str,账号类型,这里应该填'CREDIT'

返回:

list([ CStkUnclosedCompacts, ... ]) 负债列表,CStkUnclosedCompacts属性如下:

字段名类型描述
m_strAccountIDstring账号ID
m_nBrokerTypeint账号类型 / 1-期货账号 / 2-股票账号 / 3-信用账号 / 5-期货期权账号 / 6-股票期权账号 / 7-沪港通账号 / 11-深港通账号
m_strExchangeIDstring市场
m_strInstrumentIDstring证券代码
m_eCompactTypeint合约类型 / 32-不限制 / 48-融资 / 49-融券
m_eCashgroupPropint头寸来源 / 32-不限制 / 48-普通头寸 / 49-专项头寸
m_nOpenDateint开仓日期(如'20201231')
m_nBusinessVolint合约证券数量
m_nRetEndDateint到期日(如'20201231')
m_nDateClearint了结日期(如'20201231')
m_nEntrustVolint委托数量
m_dEntrustBalancefloat委托金额
m_dBusinessBalancefloat合约金额
m_dBusinessFarefloat合约息费
m_dRepaidFarefloat已还息费
m_dRepaidBalancefloat已还金额
m_strCompactIdstring合约编号
m_strEntrustNostring委托编号
m_strPositionStrstring定位串

示例:

python
get_closed_compacts('6000000248', 'CREDIT')

其他交易函数(仅回测可用)

警告

以下函数仅回测生效,实盘和模拟盘交易均不可用

order_lots-指定手数交易

用法: order_lots(stockcode, lots[, style, price], ContextInfo[, accId])

释义: 指定手数交易,指定手数发送买/卖单。如有需要落单类型当做一个参量传入,如果忽略掉落单类型,那么默认以最新价下单。

参数:

  • stockcode:代码,string,如 '000002.SZ'

  • lots:手数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定 选此参数时必须指定有效的price参数,其他style值可不用传入price参数

    'HANG':挂单 用己方盘口挂单,即买入时用盘口买一价下单,卖出时用卖一价挂单,

    'COMPETE':对手

    'MARKET':市价

    'SALE5', 'SALE4', 'SALE3', 'SALE2', 'SALE1':卖5-1价

    'BUY1', 'BUY2', 'BUY3', 'BUY4', 'BUY5':买1-5价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价下 1 手买入
    order_lots('000002.SZ', 1, ContextInfo, '600000248')

    # 用对手价下 1 手卖出
    order_lots('000002.SZ', -1, 'COMPETE', ContextInfo, '600000248')

    # 用指定价 37.5 下 2 手卖出
    order_lots('000002.SZ', -2, 'fix', 37.5, ContextInfo, '600000248')

order_value-指定价值交易

用法: order_value(stockcode, value[, style, price], ContextInfo[, accId])

释义: 指定价值交易,使用想要花费的金钱买入 / 卖出股票,而不是买入 / 卖出想要的股数,正数代表买入,负数代表卖出。股票的股数总是会被调整成对应的 100 的倍数(在中国 A 股市场 1 手是 100 股)。当您提交一个卖单时,该方法代表的意义是您希望通过卖出该股票套现的金额,如果金额超出了您所持有股票的价值,那么您将卖出所有股票。需要注意,如果资金不足,该 API 将不会创建发送订单。

参数:

  • stockcode:代码,string,如 '000002.SZ'

  • value:金额(元),double

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE5', 'SALE4', 'SALE3', 'SALE2', 'SALE1':卖5-1价

    'BUY1', 'BUY2', 'BUY3', 'BUY4', 'BUY5':买1-5价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价下 10000 元买入
    order_value('000002.SZ', 10000, ContextInfo, '600000248')

    # 用对手价下 10000 元卖出
    order_value('000002.SZ', -10000, 'COMPETE', ContextInfo, '600000248')

    # 用指定价 37.5 下 20000 元卖出
    order_value('000002.SZ', -20000, 'fix', 37.5, ContextInfo, '600000248')

order_percent-指定比例交易

用法: order_percent(stockcode, percent[, style, price], ContextInfo[, accId])

释义: 指定比例交易,发送一个等于目前投资组合价值(市场价值和目前现金的总和)一定百分比的买 / 卖单,正数代表买,负数代表卖。股票的股数总是会被调整成对应的一手的股票数的倍数(1 手是 100 股)。百分比是一个小数,并且小于或等于1(小于等于100%),0.5 表示的是 50%。需要注意,如果资金不足,该 API 将不会创建发送订单。

参数:

  • stockcode:代码,string,如 '000002.SZ'

  • percent:比例,double

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE5', 'SALE4', 'SALE3', 'SALE2', 'SALE1':卖5-1价

    'BUY1', 'BUY2', 'BUY3', 'BUY4', 'BUY5':买1-5价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价下 5.1% 价值买入
    order_percent('000002.SZ', 0.051, ContextInfo, '600000248')

    # 用对手价下 5.1% 价值卖出
    order_percent('000002.SZ', -0.051, 'COMPETE', ContextInfo, '600000248')

    # 用指定价 37.5 下 10.2% 价值卖出
    order_percent('000002.SZ', -0.102, 'fix', 37.5, ContextInfo, '600000248')

order_target_value-指定目标价值交易

用法: order_target_value(stockcode, tar_value[, style, price], ContextInfo[, accId])

释义: 指定目标价值交易,买入 / 卖出并且自动调整该证券的仓位到一个目标价值。如果还没有任何该证券的仓位,那么会买入全部目标价值的证券;如果已经有了该证券的仓位,则会买入 / 卖出调整该证券的现在仓位和目标仓位的价值差值的数目的证券。需要注意,如果资金不足,该API将不会创建发送订单。

参数:

  • stockcode:代码,string,如 '000002.SZ'

  • tar_value:目标金额(元),double,非负数

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE5', 'SALE4', 'SALE3', 'SALE2', 'SALE1':卖5-1价

    'BUY1', 'BUY2', 'BUY3', 'BUY4', 'BUY5':买1-5价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价下调仓到 10000 元持仓   
    order_target_value('000002.SZ', 10000, ContextInfo, '600000248')

    # 用对手价调仓到 10000 元持仓   
    order_target_value('000002.SZ', 10000, 'COMPETE', ContextInfo, '600000248')

    # 用指定价 37.5 下调仓到 20000 元持仓
    order_target_value('000002.SZ', 20000, 'fix', 37.5, ContextInfo, '600000248')

order_target_percent-指定目标比例交易

用法: order_target_percent(stockcode, tar_percent[, style, price], ContextInfo[, accId])

释义: 指定目标比例交易,买入 / 卖出证券以自动调整该证券的仓位到占有一个指定的投资组合的目标百分比。投资组合价值等于所有已有仓位的价值和剩余现金的总和。买 / 卖单会被下舍入一手股数(A 股是 100 的倍数)的倍数。目标百分比应该是一个小数,并且最大值应该小于等于1,比如 0.5 表示 50%,需要注意,如果资金不足,该API将不会创建发送订单。

参数:

  • stockcode:代码,string,如 '000002.SZ'

  • tar_percent:目标百分比 [0 ~ 1],double

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE5', 'SALE4', 'SALE3', 'SALE2', 'SALE1':卖5-1价

    'BUY1', 'BUY2', 'BUY3', 'BUY4', 'BUY5':买1-5价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价下买入调仓到 5.1% 持仓
    order_target_percent('000002.SZ', 0.051, ContextInfo, '600000248')

    # 用对手价调仓到 5.1% 持仓   
    order_target_percent('000002.SZ', 0.051, 'COMPETE', ContextInfo, '600000248')

    # 用指定价 37.5 调仓到 10.2% 持仓
    order_target_percent('000002.SZ', 0.102, 'fix', 37.5, ContextInfo, '600000248')

order_shares-指定股数交易

用法: order_shares(stockcode, shares[, style, price], ContextInfo[, accId])

释义: 指定股数交易,指定股数的买 / 卖单,最常见的落单方式之一。如有需要落单类型当做一个参量传入,如果忽略掉落单类型,那么默认以最新价下单。

参数:

  • stockcode:代码,string,如 '000002.SZ'

  • shares:股数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE5', 'SALE4', 'SALE3', 'SALE2', 'SALE1':卖5-1价

    'BUY1', 'BUY2', 'BUY3', 'BUY4', 'BUY5':买1-5价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价下 100 股买入 
    order_shares('000002.SZ', 100, ContextInfo, '600000248')

    # 用对手价下 100 股卖出   
    order_shares('000002.SZ', -100, 'COMPETE', ContextInfo, '600000248')

    # 用指定价 37.5 下 200 股卖出
    order_shares('000002.SZ', -200, 'fix', 37.5, ContextInfo, '600000248')

buy_open-期货买入开仓

用法: buy_open(stockcode, amount[, style, price], ContextInfo[, accId])

释义: 期货买入开仓

参数:

  • stockcode:代码,string,如 'IF1805.IF'

  • amount:手数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE1':卖一价

    'BUY1':买一价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价 1 手买入开仓 
    buy_open('IF1805.IF', 1, ContextInfo, '110476')

    # 用对手价 1 手买入开仓   
    buy_open('IF1805.IF', 1, 'COMPETE', ContextInfo, '110476')

    # 用指定价 3750 元 2 手买入开仓
    buy_open('IF1805.IF', 2, 'fix', 3750, ContextInfo, '110476')

buy_close_tdayfirst-期货买入平仓(平今优先)

用法: buy_close_tdayfirst(stockcode, amount[, style, price], ContextInfo[, accId])

释义: 期货买入平仓,平今优先

参数:

  • stockcode:代码,string,如 'IF1805.IF'

  • amount:手数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE1':卖一价

    'BUY1':买一价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价 1 手买入平仓,平今优先  
    buy_close_tdayfirst('IF1805.IF', 1, ContextInfo, '110476')

    # 用对手价 1 手买入平仓,平今优先   
    buy_close_tdayfirst('IF1805.IF', 1, 'COMPETE', ContextInfo, '110476')

    # 用指定价 3750 元 2 手买入平仓,平今优先
    buy_close_tdayfirst('IF1805.IF', 2, 'fix', 3750, ContextInfo, '110476')

buy_close_ydayfirst-期货买入平仓(平昨优先)

用法: buy_close_ydayfirst(stockcode, amount[, style, price], ContextInfo[, accId])

释义: 期货买入开仓,平昨优先

参数:

  • stockcode:代码,string,如 'IF1805.IF'

  • amount:手数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE1':卖一价

    'BUY1':买一价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价 1 手买入平仓,平昨优先
    buy_close_ydayfirst('IF1805.IF', 1, ContextInfo, '110476')

    # 用对手价 1 手买入平仓,平昨优先   
    buy_close_ydayfirst('IF1805.IF', 1, 'COMPETE', ContextInfo, '110476')

    # 用指定价 3750 元 2 手买入平仓,平昨优先
    buy_close_ydayfirst('IF1805.IF', 2, 'fix', 3750, ContextInfo, '110476')

sell_open-期货卖出开仓

用法: sell_open(stockcode, amount[, style, price], ContextInfo[, accId])

释义: 期货卖出开仓

参数:

  • stockcode:代码,string,如 'IF1805.IF'

  • amount:手数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE1':卖一价

    'BUY1':买一价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价 1 手卖出开仓
    sell_open('IF1805.IF', 1, ContextInfo, '110476')

    # 用对手价 1 手卖出开仓   
    sell_open('IF1805.IF', 1, 'COMPETE', ContextInfo, '110476')

    # 用指定价 3750 元 2 手卖出开仓
    sell_open('IF1805.IF', 2, 'fix',3750, ContextInfo, '110476')

sell_close_tdayfirst-期货卖出平仓(平今优先)

用法: sell_close_tdayfirst(stockcode, amount[, style, price], ContextInfo[, accId])

释义: 期货卖出平仓,平今优先

参数:

  • stockcode:代码,string,如 'IF1805.IF'

  • amount:手数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE1':卖一价

    'BUY1':买一价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo):
    # 按最新价下 1 手卖出平仓,平今优先
    sell_close_tdayfirst('IF1805.IF', 1, ContextInfo, '110476')

    # 用对手价 1 手卖出平仓,平今优先
    sell_close_tdayfirst('IF1805.IF', 1, 'COMPETE', ContextInfo, '110476')

    # 用指定价 3750 元 2 手卖出平仓,平今优先
    sell_close_tdayfirst('IF1805.IF', 1, 'fix', 3750, ContextInfo, '110476')

sell_close_ydayfirst-期货卖出平仓(平昨优先)

用法: sell_close_ydayfirst(stockcode, amount[, style, price], ContextInfo[, accId])

释义: 期货卖出平仓,平昨优先

参数:

  • stockcode:代码,string,如 'IF1805.IF'

  • amount:手数,int

  • style:下单选价类型,string,默认为最新价 'LATEST',可选值:

    'LATEST':最新

    'FIX':指定

    'HANG':挂单

    'COMPETE':对手

    'MARKET':市价

    'SALE1':卖一价

    'BUY1':买一价

  • price:价格,double

  • ContextInfo:PythonObj,Python 对象,这里必须是 ContextInfo

  • accId:账号,string

返回: 无

示例:

python
def handlebar(ContextInfo): 
    # 按最新价 1 手卖出平仓,平昨优先 
    sell_close_ydayfirst('IF1805.IF', 1, ContextInfo, '110476')

    # 用对手价 1 手卖出平仓,平昨优先   
    sell_close_ydayfirst('IF1805.IF', 1, 'COMPETE', ContextInfo, '110476')

    # 用指定价 3750 元 2 手卖出平仓,平昨优先
    sell_close_ydayfirst('IF1805.IF', 2, 'fix', 3750, ContextInfo, '110476')

[已弃用] get_debt_contract-获取两融负债合约明细

用法: get_debt_contract(accId)

释义: 获取信用账户负债合约明细

此接口已弃用,替代接口为get_unclosed_compacts(获取未了结负债)和get_closed_compacts(获取已了结负债)

参数:

  • accId:信用账户

返回: list,list 中放的是 PythonObj,通过 dir(pythonobj) 可返回某个对象的属性列表。

示例:

python
def handlebar(ContextInfo):
    obj_list = get_debt_contract('6000000248')
    for obj in obj_list:
        # 输出负债合约名
        print(obj.m_strInstrumentName)

get_hkt_exchange_rate-获取沪深港通汇率数据

用法: get_hkt_exchange_rate(accountID,accountType)

释义: 获取沪深港通汇率数据

参数:

  • accountID:string,账号;
  • accountType:string,账号类型,必须填HUGANGTONG或者SHENGANGTONG

返回:

dict,字段释义:

bidReferenceRate:买入参考汇率

askReferenceRate:卖出参考汇率

dayBuyRiseRate:日间买入参考汇率浮动比例

daySaleRiseRate:日间卖出参考汇率浮动比例

示例:

python
def init(ContextInfo):
      data=get_hkt_exchange_rate('6000000248','HUGANGTONG')
      print(data)

成交回报实时主推函数

实时主推函数

account_callback - 资金账号状态变化主推

  1. 仅在实盘运行模式下生效。
  2. 需要先在init里调用ContextInfo.set_account后生效。

用法: account_callback(ContextInfo, accountInfo)

释义: 当资金账号状态有变化时,这个函数被客户端调用

参数:

返回: 无

示例:

示例返回值

python
#coding:gbk
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def init(ContextInfo):
    # 设置对应的资金账号
    # 示例需要在策略交易界面运行
    ContextInfo.set_account(account)

def after_init(ContextInfo):
    # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值
    # 编译器界面里执行的下单函数不会产生实际委托  
    passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注",ContextInfo)
    pass

def account_callback(ContextInfo, accountInfo):
    print(show_data(accountInfo))

task_callback - 账号任务状态变化主推

  1. 仅在实盘运行模式下生效。
  2. 需要先在init里调用ContextInfo.set_account后生效。

用法: task_callback(ContextInfo, taskInfo)

释义: 当账号任务状态有变化时,这个函数被客户端调用

参数:

返回: 无

示例:

示例返回值

python
#coding:gbk
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def init(ContextInfo):
    # 设置对应的资金账号
    # 示例需要在策略交易界面运行
    ContextInfo.set_account(account)

def after_init(ContextInfo):
    # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值
    # 编译器界面里执行的下单函数不会产生实际委托  
    passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注",ContextInfo)
    pass

def task_callback(ContextInfo, taskInfo):
    print(show_data(taskInfo))

order_callback - 账号委托状态变化主推

  1. 仅在实盘运行模式下生效。
  2. 需要先在init里调用ContextInfo.set_account后生效。

用法: order_callback(ContextInfo, orderInfo)

释义: 当账号委托状态有变化时,这个函数被客户端调用

参数:

  • ContextInfo:特定对象
  • orderInfo:委托

返回: 无

示例:

示例返回值

python
#coding:gbk
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def init(ContextInfo):
    # 设置对应的资金账号
    # 示例需要在策略交易界面运行
    ContextInfo.set_account(account)

def after_init(ContextInfo):
    # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值
    # 编译器界面里执行的下单函数不会产生实际委托  
    passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注",ContextInfo)
    pass

def order_callback(ContextInfo, orderInfo):
    print(show_data(orderInfo))

deal_callback - 账号成交状态变化主推

  1. 仅在实盘运行模式下生效。
  2. 需要先在init里调用ContextInfo.set_account后生效。

用法: deal_callback(ContextInfo, dealInfo)

释义: 当账号成交状态有变化时,这个函数被客户端调用

参数:

  • ContextInfo:特定对象
  • dealInfo:成交

返回: 无

示例:

示例返回值

python
#coding:gbk
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def init(ContextInfo):
    # 设置对应的资金账号
    # 示例需要在策略交易界面运行
    ContextInfo.set_account(account)

def after_init(ContextInfo):
    # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值
    # 编译器界面里执行的下单函数不会产生实际委托  
    passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注",ContextInfo)
    pass

def deal_callback(ContextInfo, dealInfo):
    print(show_data(dealInfo))

position_callback - 账号持仓状态变化主推

  1. 仅在实盘运行模式下生效。
  2. 需要先在init里调用ContextInfo.set_account后生效。

用法: position_callback(ContextInfo, positonInfo)

释义: 当账号持仓状态有变化时,这个函数被客户端调用

参数:

  • ContextInfo:特定对象
  • positonInfo:持仓

返回: 无

示例:

示例返回值

python
#coding:gbk
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def init(ContextInfo):
    # 设置对应的资金账号
    # 示例需要在策略交易界面运行
    ContextInfo.set_account(account)

def after_init(ContextInfo):
    # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值
    # 编译器界面里执行的下单函数不会产生实际委托  
    passorder(23, 1101, account, "000001.SZ", 5, 0, 100, "示例", 2, "投资备注",ContextInfo)
    pass

def position_callback(ContextInfo, positionInfo):
    print(show_data(positionInfo))

orderError_callback - 账号异常下单主推

  1. 仅在实盘运行模式下生效。
  2. 需要先在init里调用ContextInfo.set_account后生效。

用法: orderError_callback(ContextInfo,orderArgs,errMsg)

释义: 当账号下单异常时,这个函数被客户端调用

参数:

  • ContextInfo:特定对象
  • orderArgs:下单参数
  • errMsg:错误信息

返回: 无

示例:

示例返回值

python
#coding:gbk
def show_data(data):
    tdata = {}
    for ar in dir(data):
        if ar[:2] != 'm_':continue
        try:
            tdata[ar] = data.__getattribute__(ar)
        except:
            tdata[ar] = '<CanNotConvert>'
    return tdata

def init(ContextInfo):
    # 设置对应的资金账号
    # 示例需要在策略交易界面运行
    ContextInfo.set_account(account)

def after_init(ContextInfo):
    # 在策略交易界面运行时,account的值会被赋值为策略配置中的账号,编辑器界面运行时,需要手动赋值
    # 编译器界面里执行的下单函数不会产生实际委托  
    passorder(23, 1101, account, "000001.SZ", 11, 0, 100, "示例", 2, "投资备注",ContextInfo)
    pass

def orderError_callback(ContextInfo,orderArgs,errMsg):
    print(show_data(orderArgs))
    print(errMsg)

其他主推函数

credit_account_callback - 查询信用账户明细回调

用法: credit_account_callback(ContextInfo,seq,result)

释义: 查询信用账户明细回调

参数:

  • ContextInfo:策略模型全局对象
  • seq:query_credit_account时输入查询seq
  • result: 信用账户明细

credit_opvolume_callback - 查询两融最大可下单量的回调

用法: credit_opvolume_callback(ContextInfo,accid,seq,ret,result)

释义: 查询两融最大可下单量的回调。

参数:

  • ContextInfo:策略模型全局对象
  • accid:查询的账号
  • seq:query_credit_opvolume时输入查询seq
  • ret:查询结果状态。正常返回:1,正在查询中-1,输入账号非法:-2,输入查询参数非法:-3,超时等服务器返回报错:-4
  • result:查询到的结果

示例 见query_credit_opvolume

邀请注册送VIP优惠券

分享下方的内容给好友、QQ群、微信群,好友注册您即可获得VIP优惠券

玩转qmt,上迅投qmt知识库

交易函数

引用函数

ext_data - 获取扩展数据

获取扩展数据

调用方法:ext_data(extdataname, stockcode, deviation, ContextInfo)

参数:

参数名类型说明提示
extdatanamestring扩展数据名
stockcodestring证券代码形式如 '600000.SH'
deviationnumberK 线偏移0:不偏移,N:向右偏移N,-N:向左偏移N
ContextInfopythonObjPython 对象ython 对象,这里必须是 ContextInfo

返回: number

** 示例:**

python
#coding:gbk
def init(ContextInfo):
    print(ext_data('CR', '600000.SH', 0, ContextInfo))

ext_data_rank - 获取引用的扩展数据的数值在所有品种中的排名

获取引用的扩展数据的数值在所有品种中的排名

调用方法:ext_data_rank(extdataname, stockcode, deviation, ContextInfo)

参数:

参数名类型说明提示
extdatanamestring扩展数据名
stockcodestring证券代码形式如 '600000.SH'
deviationnumberK 线偏移0:不偏移,N:向右偏移N,-N:向左偏移N
ContextInfopythonObjPython 对象ython 对象,这里必须是 ContextInfo

返回: number

** 示例:**

python
#coding:gbk
def init(ContextInfo):
    print(ext_data_rank('mycci', '600000.SH', 0, ContextInfo))

ext_data_rank_range - 获取引用的扩展数据的数值在指定时间区间内所有品种中的排名

获取引用的扩展数据的数值在指定时间区间内所有品种中的排名

** 调用方法: **ext_data_rank_range(extdataname, stockcode, begintime, endtime, ContextInfo)

参数:

参数名类型说明提示
extdatanamestring扩展数据名
stockcodestring证券代码形式如 '600000.SH'
begintimestring区间的起始时间格式为 '2016-08-02 12:12:30'(包括该时间点在内)
endtimestring区间的结束时间格式为 '2017-08-02 12:12:30' (包括该时间点在内)
ContextInfopythonObjPython对象Python 对象,这里必须是 ContextInfo

返回: pythonDict

** 示例:**

python
#coding:gbk
def init(ContextInfo):
    print(ext_data_rank_range('mycci', '600000.SH','2022-08-02 12:12:30', '2023-08-02 12:12:30', ContextInfo))

ext_data_range - 获取扩展数据在指定时间区间内的值

获取扩展数据在指定时间区间内的值

调用方法:ext_data_range(extdataname, stockcode, begintime, endtime, ContextInfo)

参数:

参数名类型说明提示
extdatanamestring扩展数据名
stockcodestring证券代码形式如 '600000.SH'
begintimestring区间的起始时间格式为 '2016-08-02 12:12:30'(包括该时间点在内)
endtimestring区间的结束时间格式为 '2017-08-02 12:12:30' (包括该时间点在内)
ContextInfopythonObjPython对象Python 对象,这里必须是 ContextInfo

返回: pythonDict

示例:

python
#coding:gbk
def init(ContextInfo):
    print(ext_data_range('mycci', '600000.SH','2022-08-02 12:12:30', '2023-08-02 12:12:30', ContextInfo))

get_factor_value - 获取因子数据

获取因子数据

调用方法:get_factor_value(factorname, stockcode, deviation, ContextInfo)

参数:

参数名类型说明提示
factornamestring因子名称
stockcodestring证券代码形式如 '600000.SH'
deviationnumberK 线偏移0 不偏移,N 向右偏移 N,-N 向左偏移 N
ContextInfopythonObjPython对象Python 对象,这里必须是 ContextInfo

返回: number

示例:

python
#coding:gbk
def init(ContextInfo):
    print(get_factor_value('zzz', '600000.SH', 0, ContextInfo))

get_factor_rank - 获取引用的因子数据的数值在所有品种中排名

获取引用的因子数据的数值在所有品种中排名

调用方法:get_factor_rank(factorname, stockcode, deviation, ContextInfo)

参数:

参数名类型说明提示
factornamestring因子名称
stockcodestring证券代码形式如 '600000.SH'
deviationnumberK 线偏移0 不偏移,N 向右偏移 N,-N 向左偏移 N
ContextInfopythonObjPython对象Python 对象,这里必须是 ContextInfo

示例:

python
#coding:gbk
def init(ContextInfo):
    print(get_factor_rank('zzz', '600000.SH', 0, ContextInfo))

call_vba - 获取引用的 VBA 模型运行的结果

获取引用的 VBA 模型运行的结果

注意

  1. 使用该函数时需补充好本地 K 线或分笔数据

调用方法: call_vba(factorname, stockcode,[period, dividend_type, barpos],ContextInfo)

参数:

参数名类型说明提示
factornamestring因子名称
stockcodestring证券代码形式如 '600000.SH'
periodstringK 线偏移可缺省,默认为当前主图周期线型
dividend_typestring复权方式可缺省,默认当前图复权方式,具体可选值如下
barposnumber对应 bar 下标可缺省,默认当前主图调用到的 bar 的对应下标xtInfo
ContextInfopythonObjPython 对象Python 对象,这里必须是 ContextInfo
  • period 可选值:

    'tick':分笔线 '1d':日线 '1m':1分钟线 '3m':3分钟线 '5m':5分钟线 '15m':15分钟线 '30m':30分钟线 '1h':小时线 '1w':周线 '1mon':月线 '1q':季线 '1hy':半年线 '1y':年线

  • dividend_type 可选值:

    'none':不复权 'front':向前复权 'back':向后复权 'front_ratio':等比向前复权 'back_ratio':等比向后复权

返回: number

示例:

python
#coding:gbk
def init(ContextInfo):
    print(call_vba('MA.ma1', '600036.SH', ContextInfo))

@ tab 返回值

python
-1.0

绘图函数

ContextInfo.paint - 在界面上画图

在界面上画图

调用方法: ContextInfo.paint(name, value, index, line_style, color = 'white', limit = '')

参数:

参数名类型说明提示
namestring需显示的指标名
valuenumber需显示的数值
indexnumber显示索引位置填 -1 表示按主图索引显示
line_stylenumber线型0:曲线 / 42:柱状线
colorstring颜色(不填默认为白色)blue:蓝色 / brown:棕 / cyan:蓝绿 / green:绿 / magenta:品红 / red:红 / white:白 / yellow:黄
limitstring画线控制'noaxis':不影响坐标画线 / 'nodraw':不画线

**返回:**无

示例:

python
def init(ContextInfo):
    realtimetag = ContextInfo.get_bar_timetag(ContextInfo.barpos)
    value = ContextInfo.get_close_price('', '', realtimetag) 
    ContextInfo.paint('close', value, -1, 0, 'white','noaxis')

ContextInfo.draw_text - 在图形上显示文字

在图形上显示数字   调用方法: ContextInfo.draw_text(condition, position, text)

参数:

参数名类型说明提示
conditionbool条件
Positionnumber文字显示的位置
textstring文字

**返回值:**无

示例:

python
def init(ContextInfo):
    ContextInfo.draw_text(1, 10, '文字')

ContextInfo.draw_number - 在图形上显示数字

在图形上显示数字

调用方法: ContextInfo.draw_number(cond, height, number, precision)

参数:

参数名类型说明提示
condbool条件
heightnumber显示文字的高度位置
textstring显示的数字
precisionnumber为小数显示位数取值范围 0 - 7

**返回值:**无

示例:

python
def init(ContextInfo):
    close = ContextInfo.get_market_data(['close'])   
    ContextInfo.draw_number(1 > 0, close, 66, 1)

ContextInfo.draw_vertline - 在数字 1 和数字 2 之间绘垂直线

在数字1和数字2之间绘垂直线

调用方法: ContextInfo.draw_vertline(cond, number1, number2, color = '', limit = '')

参数:

参数名类型说明提示
condbool条件
number1number数字1
number2number数字2
colorstring颜色(不填默认为白色)blue:蓝色 / brown:棕 / cyan:蓝绿 / green:绿 / magenta:品红 / red:红 / white:白 / yellow:黄
limitstring画线控制'noaxis':不影响坐标画线 / 'nodraw':不画线

返回: 无

示例:

python
def init(ContextInfo):
    close = ContextInfo.get_market_data(['close'])
    open = ContextInfo.get_market_data(['open'])
    ContextInfo.draw_vertline(1 > 0, close, open, 'cyan')

ContextInfo.draw_icon - 在图形上绘制小图标

在图形上绘制小图标

调用方法: ContextInfo.draw_icon(cond, height, type)

参数:

参数名类型说明提示
condbool条件
heightnumber图标的位置
textnumber图标的类型1:椭圆 / 0:矩形

**返回值:**无

示例:

python
def init(ContextInfo):
    close = ContextInfo.get_market_data(['close'])
    ContextInfo.draw_icon(1 > 0, close, 0)

上次更新

枚举常量

opType - 操作类型

期货/股指期权/商品期权 - 六键

数值描述
0开多
1平昨多
2平今多
3开空
4平昨空
5平今空

期货/股指期权/商品期权 - 四键

数值描述
6平多, 优先平今
7平多, 优先平昨
8平空, 优先平今
9平空, 优先平昨

期货/股指期权/商品期权 - 两键

数值描述
10卖出, 如有多仓, 优先平仓, 优先平今, 如有余量, 再开空
11卖出, 如有多仓, 优先平仓, 优先平昨, 如有余量, 再开空
12买入, 如有空仓, 优先平仓, 优先平今, 如有余量, 再开多
13买入, 如有空仓, 优先平仓, 优先平昨, 如有余量, 再开多
14买入, 不优先平仓
15卖出, 不优先平仓

股票/ETF/可转债买卖

数值描述
23股票/ETF/可转债买入,或沪港通、深港通股票买入
24股票/ETF/可转债卖出,或沪港通、深港通股票卖出

融资融券

数值描述
27融资买入
28融券卖出
29买券还券
30直接还券
31卖券还款
32直接还款
33担保品买入
34担保品卖出

组合交易

数值描述
25组合买入,或沪港通、深港通的组合买入
26组合卖出,或沪港通、深港通的组合卖出
27融资买入
28融券卖出
29买券还券
31卖券还款
33担保品买入
34担保品卖出
35普通账号一键买卖
36信用账号一键买卖
40期货组合开多
43期货组合开空
46期货组合平多, 优先平今
47期货组合平多, 优先平昨
48期货组合平空, 优先平今
49期货组合平空, 优先平昨

ETF期权交易

数值描述
50买入开仓
51卖出平仓
52卖出开仓
53买入平仓
54备兑开仓
55备兑平仓
56认购行权
57认沽行权
58证券锁定
59证券解锁

ETF申赎交易

数值描述
60申购
61赎回

专项两融

数值描述
70专项融资买入
71专项融券卖出
72专项买券还券
73专项直接还券
74专项卖券还款
75专项直接还款

可转债转股/回售

数值描述
80普通账户转股
81普通账户回售
82信用账户转股
83信用账户回售

orderType - 下单方式

注意

一、期货不支持 1102 和 1202

二、对所有账号组的操作相当于对账号组里的每个账号做一样的操作,如:

  1. passorder(23, 1202, 'testS', '000001.SZ', 5, -1, 50000, ContextInfo),意思就是对账号组testS 里的所有账号都以最新价开仓买入 50000 元市值的 000001.SZ平安银行;
  2. passorder (60,1101,"test",'510050. SH', 5,-1,1, ContextInfo)意思就是账号test申购1个单位 (900000股)的华夏上证50ETF (只申购不买入成分股)。

单股交易

数值描述
1101单股、单账号、普通、股/手方式下单
1102单股、单账号、普通、金额(元)方式下单(只支持股票)
1113单股、单账号、总资产、比例 [0 ~ 1] 方式下单
1123单股、单账号、可用、比例[0 ~ 1]方式下单

单股交易(账号组)

数值描述
1201单股、账号组(无权重)、普通、股/手方式下单
1202单股、账号组(无权重)、普通、金额(元)方式下单(只支持股票)
1213单股、账号组(无权重)、总资产、比例 [0 ~ 1] 方式下单
1223单股、账号组(无权重)、可用、比例 [0 ~ 1] 方式下单

组合交易(单账号)

数值描述
2101组合、单账号、普通、按组合股票数量(篮子中股票设定的数量)方式下单 > 对应 volume 的单位为篮子的份
2102组合、单账号、普通、按组合股票权重(篮子中股票设定的权重)方式下单 > 对应 volume 的单位为元
2103组合、单账号、普通、按账号可用方式下单 > (底层篮子股票怎么分配?答:按可用资金比例后按篮子中股票权重分配,如用户没填权重则按相等权重分配)只对股票篮子支持

组合交易(账号组)

数值描述
2201组合、账号组(无权重)、普通、按组合股票数量方式下单
2202组合、账号组(无权重)、普通、按组合股票权重方式下单
2203组合、账号组(无权重)、普通、按账号可用方式下单只对股票篮子支持

prType - 下单选价类型

关于使用市价指令的说明

  1. 对于上交所(42,43,44,45)

    1. prType选择市价类型时时,price为保护限价,范围为(0 - 9999)表示投资者能够接受的最高买入价或最低卖出价,即买入申报的成交价格和转限价的价格不高于保护限价,卖出申报的成交价格和转限价的价格不低于保护限价,当price指定为 0 时,保护限价为对应的涨跌停价
    2. 融券卖出不允许使用市价指令
    3. 集合竞价阶段不允许使用市价指令
  2. 对于深交所(44,45,46,47,48)

    1. 市价申报只适用于有价格涨跌幅限制证券。
    2. 集合竞价阶段不允许使用市价指令
  3. 对于北交所(42,43,44,45)

    1. prType选择市价类型时时,price为保护限价,范围为(0 - 9999)表示投资者能够接受的最高买入价或最低卖出价,即买入申报的成交价格和转限价的价格不高于保护限价,卖出申报的成交价格和转限价的价格不低于保护限价,当price指定为 0 时,保护限价为对应的涨跌停价
    2. 融券卖出不允许使用市价指令
    3. 集合竞价阶段不允许使用市价指令
数值描述
-1无效(只对于algo_passorder起作用)
0卖5价
1卖4价
2卖3价
3卖2价
4卖1价
5最新价
6买1价
7买2价(组合不支持)
8买3价(组合不支持)
9买4价(组合不支持)
10买5价(组合不支持)
11指定价(只对单股情况支持,对组合交易不支持)
12涨跌停价(对手方最远端价格)
13挂单价(本方一档价格)
14对手价(对方一档价格)
18市价最优价[郑商所][期货] (不支持模拟交易中使用)
19市价即成剩撤[大商所][期货] (不支持模拟交易中使用)
20市价全额成交或撤[大商所][期货] (不支持模拟交易中使用)
21市价最优一档即成剩撤[中金所][期货] (不支持模拟交易中使用)
22市价最优五档即成剩撤[中金所][期货] (不支持模拟交易中使用)
23市价最优一档即成剩转[中金所][期货] (不支持模拟交易中使用)
24市价最优五档即成剩转[中金所][期货] (不支持模拟交易中使用)
26限价即时全部成交否则撤单[上交所[期权]] [深交所[期权]] (不支持模拟交易中使用)
27市价即成剩撤[上交所][期权] (不支持模拟交易中使用)
28市价即全成否则撤[上交所][期权] (不支持模拟交易中使用)
29市价剩转限价[上交所][期权] (不支持模拟交易中使用)
42最优五档即时成交剩余撤销申报[上交所[股票]][北交所[股票]] (不支持模拟交易中使用)
43最优五档即时成交剩转限价申报[上交所[股票]][北交所[股票]] (不支持模拟交易中使用)
44对手方最优价格委托[上交所[股票]][深交所[股票][北交所[股票]][期权]] (不支持模拟交易中使用)
45本方最优价格委托[上交所[股票]][深交所[股票][北交所[股票]][期权]] (不支持模拟交易中使用)
46即时成交剩余撤销委托[深交所][股票][期权] (不支持模拟交易中使用)
47最优五档即时成交剩余撤销委托[深交所][股票][期权] (不支持模拟交易中使用)
48全额成交或撤销委托[深交所][股票][期权] (不支持模拟交易中使用)
49盘后定价

volume - 下单数量

根据 orderType 值最后一位确定 volume 的单位

单股下单时

数值描述
1股 / 手 (股票: 股,股票期权: 张,期货: 手,可转债: 张,基金:份)
2金额(元)
3比例(%)

组合下单时

数值描述
1按组合股票数量(份)
2按组合股票权重(元)
3按账号可用(%)

quicktrade - 快速下单

数值描述
0
1
2

passorder是对最后一根K线完全走完后生成的模型信号在下一根K线的第一个 tick 数据来时触发下单交易;

采用quickTrade参数设置为1时,非历史 bar 上执行时(ContextInfo.is_last_bar()True),只要策略模型中调用到就触发下单交易。

quickTrade参数设置为2时,不判断 bar 状态,只要策略模型中调用到就触发下单交易,历史 bar 上也能触发下单,请谨慎使用。

enum_ - 对象属性状态字段释义

enum_EEntrustBS - 买卖方向

变量数值描述
ENTRUST_BUY48买入,多
ENTRUST_SELL49卖出,空
ENTRUST_PLEDGE_IN81质押入库
ENTRUST_PLEDGE_OUT66质押出库

EEntrustSubmitStatus - 报单状态

数值描述
48已经提交
49撤单已经提交
50修改已经提交
51已经接受
52报单已经被拒绝
53撤单已经被拒绝
54改单已经被拒绝

enum_EEntrustTypes - 委托类型

变量名称数值描述
ENTRUST_BUY_SELL48买卖
ENTRUST_QUERY49查询
ENTRUST_CANCE50撤单
ENTRUST_APPEND51补单
ENTRUST_COMFIRM52确认
ENTRUST_BIG53大宗
ENTRUST_FIN54融资委托
ENTRUST_SLO55融券委托
ENTRUST_CLOSE56信用平仓
ENTRUST_CREDIT_NORMAL57信用普通委托
ENTRUST_CANCEL_OPEN58撤单补单
ENTRUST_TYPE_OPTION_EXERCISE59行权
ENTRUST_TYPE_OPTION_SECU_LOCK60锁定
ENTRUST_TYPE_OPTION_SECU_UNLOCK61解锁
ENTRUST_QUOTATION_REPURCHASE62报价回购
ENTRUST_TYPE_OPTION_ABANDON63放弃行权
ENTRUST_AGREEMENT_REPURCHASE64协议回购
ENTRUST_TYPE_OPTION_COMB_EXERCISE65组合行权
ENTRUST_TYPE_OPTION_BUILD_COMB_STRATEGY66构建组合策略持仓
ENTRUST_TYPE_OPTION_RELEASE_COMB_STRATEGY67解除组合策略持仓
ENTRUST_TYPE_LMT_LOAN68转融通出借
ENTRUST_TYPE_LMT_LOAN_DEFER69转融通出借展期
ENTRUST_TYPE_LMT_LOAN_FINISH_AHEAD70转融通出借提前了结
ENTRUST_CROSS_MARKET_IN71跨市场场内
ENTRUST_CROSS_MARKET_OUT72跨市场场外

enum_EEntrustStatus - 委托状态

变量名称数值描述
ENTRUST_STATUS_WAIT_REPORTING49待报
ENTRUST_STATUS_REPORTED50已报(已报出到柜台,待成交)
ENTRUST_STATUS_REPORTED_CANCEL51已报待撤(对已报状态的委托撤单吗,等待柜台处理撤单请求)
ENTRUST_STATUS_PARTSUCC_CANCEL52部成待撤(已报到柜台,已有部分成交,已发出对剩余部分的撤单,待柜台处理撤单请求)
ENTRUST_STATUS_PART_CANCEL53部撤(已报到柜台,已有部分成交,剩余部分已撤)
ENTRUST_STATUS_CANCELED54已撤
ENTRUST_STATUS_PART_SUCC55部成(已报到柜台,已有部分成交)
ENTRUST_STATUS_SUCCEEDED56已成
ENTRUST_STATUS_JUNK57废单(不符合报单条件,委托被打回,相关信息再委托的废单原因字段查看)

委托状态流程

enum_EHedge_Flag_Type - 投保类型

变量名称数值描述
HEDGE_FLAG_SPECULATION49投机
HEDGE_FLAG_ARBITRAGE50套利
HEDGE_FLAG_HEDGE51套保

enum_EFutureTradeType - 成交类型

变量名称数值描述
FUTRUE_TRADE_TYPE_COMMON48普通成交
FUTURE_TRADE_TYPE_OPTIONSEXECUTION49期权成交
FUTURE_TRADE_TYPE_OTC50OTC 成交
FUTURE_TRADE_TYPE_EFPDIRVED51期转现衍生成交
FUTURE_TRADE_TYPE_COMBINATION_DERIVED52组合衍生成交

enum_EBrokerPriceType - 价格类型

变量名称数值描述
BROKER_PRICE_ANY49市价
BROKER_PRICE_LIMIT50限价
BROKER_PRICE_BEST51最优价
BROKER_PRICE_PROP_ALLOTMENT52配股
BROKER_PRICE_PROP_REFER53转托
BROKER_PRICE_PROP_SUBSCRIBE54申购
BROKER_PRICE_PROP_BUYBACK55回购
BROKER_PRICE_PROP_PLACING56配售
BROKER_PRICE_PROP_DECIDE57指定
BROKER_PRICE_PROP_EQUITY58转股
BROKER_PRICE_PROP_SELLBACK59回售
BROKER_PRICE_PROP_DIVIDEND60股息
BROKER_PRICE_PROP_SHENZHEN_PLACING68深圳配售确认
BROKER_PRICE_PROP_CANCEL_PLACING69配售放弃
BROKER_PRICE_PROP_WDZY70无冻质押
BROKER_PRICE_PROP_DJZY71冻结质押
BROKER_PRICE_PROP_WDJY72无冻解押
BROKER_PRICE_PROP_JDJY73解冻解押
BROKER_PRICE_PROP_ETF81ETF申购
BROKER_PRICE_PROP_VOTE75投票
BROKER_PRICE_PROP_YYSGYS92要约收购预售
BROKER_PRICE_PROP_YSYYJC77预售要约解除
BROKER_PRICE_PROP_FUND_DEVIDEND78基金设红
BROKER_PRICE_PROP_FUND_ENTRUST79基金申赎
BROKER_PRICE_PROP_CROSS_MARKET80跨市转托
BROKER_PRICE_PROP_EXERCIS83权证行权
BROKER_PRICE_PROP_PEER_PRICE_FIRST84对手方最优价格
BROKER_PRICE_PROP_L5_FIRST_LIMITPX85最优五档即时成交剩余转限价
BROKER_PRICE_PROP_MIME_PRICE_FIRST86本方最优价格
BROKER_PRICE_PROP_INSTBUSI_RESTCANCEL87即时成交剩余撤销
BROKER_PRICE_PROP_L5_FIRST_CANCEL88最优五档即时成交剩余撤销
BROKER_PRICE_PROP_FULL_REAL_CANCEL89全额成交并撤单
BROKER_PRICE_PROP_DIRECT_SECU_REPAY101直接还券
BROKER_PRICE_PROP_FUND_CHAIHE90基金拆合
BROKER_PRICE_PROP_DEBT_CONVERSION91债转股
BROKER_PRICE_BID_LIMIT92港股通竞价限价
BROKER_PRICE_ENHANCED_LIMIT93港股通增强限价
BROKER_PRICE_RETAIL_LIMIT94港股通零股限价
BROKER_PRICE_PROP_INCREASE_SHARE'j'增发
BROKER_PRICE_PROP_COLLATERAL_TRANSFER107担保品划转
BROKER_PRICE_PROP_NEEQ_PRICING'w'定价(全国股转 - 挂牌公司交易 - 协议转让)
BROKER_PRICE_PROP_NEEQ_MATCH_CONFIRM'x'成交确认(全国股转 - 挂牌公司交易 - 协议转让)
BROKER_PRICE_PROP_NEEQ_MUTUAL_MATCH_CONFIRM'y'互报成交确认(全国股转 - 挂牌公司交易 - 协议转让)
BROKER_PRICE_PROP_NEEQ_LIMIT'z'限价(用于挂牌公司交易 - 做市转让 - 限价买卖和两网及退市交易-限价买卖)

enum_EOffset_Flag_Type - 操作类型

变量名称数值描述
EOFF_THOST_FTDC_OF_INVALID-1无效操作
EOFF_THOST_FTDC_OF_Open48买入,开仓
EOFF_THOST_FTDC_OF_Close49卖出,平仓
EOFF_THOST_FTDC_OF_ForceClose50强平
EOFF_THOST_FTDC_OF_CloseToday51平今
EOFF_THOST_FTDC_OF_CloseYesterday52平昨
EOFF_THOST_FTDC_OF_ForceOff53强减
EOFF_THOST_FTDC_OF_LocalForceClose54本地强平
EOFF_THOST_FTDC_OF_PLEDGE_IN81质押入库
EOFF_THOST_FTDC_OF_PLEDGE_OUT66质押出库
EOFF_THOST_FTDC_OF_ALLOTMENT67股票配股

enum_EXTSubjectsStatus - 融资融券状态

变量名称数值描述
SUBJECTS_STATUS_NORMAL48正常
SUBJECTS_STATUS_PAUSE49暂停
SUBJECTS_STATUS_NOT50作废

enum_EXTCreditFundCtl - 融资交易控制

变量名称数值描述
FUND_CTL_ONLY_FIN_BUY48只允许融资买入
FUND_CTL_ONLY_SELL_CASH_REPAY49只允许卖券还款
FUND_CTL_ALL50既允许融资买入又允许卖券还款
FUND_CTL_NONE51既不允许融资买入又不允许卖券还款

enum_EXTCreditStkCtl - 融券交易控制

变量名称数值描述
STK_CTL_ONLY_SLO_SELL48只允许融券卖出
STK_CTL_ONLY_BUY_SECU_REPAY49只允许买券还券
STK_CTL_ALL50既允许融券卖出又允许买券还券
STK_CTL_NONE51既不允许融券卖出又不允许买券还券

enum_EXTSloTypeQueryMode - 查询类型

变量名称数值描述
XT_SLOTYPE_QUERYMODE_NOMARL48普通
XT_SLOTYPE_QUERYMODE_SPECIAL49专项

enum_EXTCompactType - 合约类型

变量名称数值描述
COMPACT_TYPE_ALL32不限制
COMPACT_TYPE_FIN48融资
COMPACT_TYPE_SLO49融券

enum_EXTCompactStatus - 合约状态

变量名称数值描述
COMPACT_STATUS_ALL32不限制
COMPACT_STATUS_UNDONE48未归还
COMPACT_STATUS_PART_DONE49部分归还
COMPACT_STATUS_DONE50已归还
COMPACT_STATUS_DONE_BY_SELF51自行了结
COMPACT_STATUS_DONE_BY_HAND52手工了结
COMPACT_STATUS_NOT_DEBT53未形成负债
COMPACT_STATUS_EXPIRY54合约已过期

enum_EXTCompactBrushSource - 头寸来源

变量名称数值描述
XT_COMPACT_BRUSH_SOURCE_ALL32不限制
XT_COMPACT_BRUSH_SOURCE_NORMAL48普通头寸
XT_COMPACT_BRUSH_SOURCE_SPECIAL49专项头寸

enum_EXTSpecialAssure - 是否可以用融券资金买入

变量名称数值描述
ASSURE_USE_SLO_CASH_DISABLE48担保品买入不允许使用融券资金
ASSURE_USE_SLO_CASH_ENABLE49担保品买入允许使用融券资金

enum_EOperationType - 下单操作类型/主要交易类型

变量名称数值描述
OPT_OPEN_LONG0开多
OPT_CLOSE_LONG_HISTORY1平昨多
OPT_CLOSE_LONG_TODAY2平今多
OPT_OPEN_SHORT3开空
OPT_CLOSE_SHORT_HISTORY4平昨空
OPT_CLOSE_SHORT_TODAY5平今空
OPT_CLOSE_LONG_TODAY_FIRST6优先平今多
OPT_CLOSE_LONG_HISTORY_FIRST7优先平昨多
OPT_CLOSE_SHORT_TODAY_FIRST8平空优先平今
OPT_CLOSE_SHORT_HISTORY_FIRST9平空优先平昨
OPT_CLOSE_LONG_TODAY_HISTORY_THEN_OPEN_SHORT10卖出优先平今
OPT_CLOSE_LONG_HISTORY_TODAY_THEN_OPEN_SHORT11卖出优先平昨
OPT_CLOSE_SHORT_TODAY_HISTORY_THEN_OPEN_LONG12买入优先平今
OPT_CLOSE_SHORT_HISTORY_TODAY_THEN_OPEN_LONG13买入优先平昨
OPT_CLOSE_LONG14平多
OPT_CLOSE_SHORT15平空
OPT_OPEN16开仓
OPT_CLOSE17平仓
OPT_BUY18买入
OPT_SELL19卖出
OPT_FIN_BUY20融资买入
OPT_SLO_SELL21融券卖出
OPT_BUY_SECU_REPAY22买券还券
OPT_DIRECT_SECU_REPAY23直接还券
OPT_SELL_CASH_REPAY24卖券还款
OPT_DIRECT_CASH_REPAY25直接还款
OPT_FUND_SUBSCRIBE26基金申购
OPT_FUND_REDEMPTION27基金赎回
OPT_FUND_MERGE28基金合并
OPT_FUND_SPLIT29基金分拆
OPT_PLEDGE_IN30质押入库
OPT_PLEDGE_OUT31质押出库
OPT_OPTION_BUY_OPEN32买入开仓(个股期权交易)
OPT_OPTION_SELL_CLOSE33卖出平仓(个股期权交易)
OPT_OPTION_SELL_OPEN34卖出开仓(个股期权交易)
OPT_OPTION_BUY_CLOSE35买入平仓(个股期权交易)
OPT_OPTION_COVERED_OPEN36备兑开仓(个股期权交易)
OPT_OPTION_COVERED_CLOSE37备兑平仓(个股期权交易)
OPT_OPTION_CALL_EXERCISE38认购行权(个股期权交易)
OPT_OPTION_PUT_EXERCISE39认沽行权(个股期权交易)
OPT_OPTION_SECU_LOCK40证券锁定(个股期权交易)
OPT_OPTION_SECU_UNLOCK41证券解锁(个股期权交易)
OPT_N3B_PRICE_BUY42协议转让-定价买入
OPT_N3B_PRICE_SELL43协议转让-定价卖出
OPT_N3B_CONFIRM_BUY44协议转让-成交确认买入
OPT_N3B_CONFIRM_SELL45协议转让-成交确认卖出
OPT_N3B_REPORT_CONFIRM_BUY46协议转让-互报成交确认买入
OPT_N3B_REPORT_CONFIRM_SELL47协议转让-互报成交确认卖出
OPT_N3B_LIMIT_PRICE_BUY48全国股转-限价买入
OPT_N3B_LIMIT_PRICE_SELL49全国股转-限价卖出
OPT_FUTURE_OPTION_EXERCISE50期货期权行权
OPT_CONVERT_BONDS51可转债转股
OPT_SELL_BACK_BONDS52可转债回售
OPT_STK_ALLOTMENT53股票配股
OPT_STK_INCREASE_SHARE54股票增发
OPT_COLLATERAL_TRANSFER_IN55担保品划入
OPT_COLLATERAL_TRANSFER_OUT56担保品划出
OPT_BLOCK_INTENTION_BUY57意向申报买入
OPT_BLOCK_INTENTION_SELL58意向申报卖出
OPT_BLOCK_PRICE_BUY59定价申报买入
OPT_BLOCK_PRICE_SELL60定价申报卖出
OPT_BLOCK_CONFIRM_BUY61成交申报买入
OPT_BLOCK_CONFIRM_SELL62成交申报卖出
OPT_BLOCK_CLOSE_PRICE_BUY63盘后定价买入
OPT_BLOCK_CLOSE_PRICE_SELL64盘后定价卖出
OPT_GOLD_PRICE_DELIVERY_BUY65黄金交割买
OPT_GOLD_PRICE_DELIVERY_SELL66黄金交割卖
OPT_GOLD_PRICE_MIDDLE_BUY67黄金中立仓买
OPT_GOLD_PRICE_MIDDLE_SELL68黄金中立仓卖
OPT_COMPOSE_ONEKEY_BUYSELL69组合交易一键买卖
OPT_COMPOSE_GGT_BUY70组合交易港股通买入
OPT_COMPOSE_GGT_SELL71组合交易港股通卖出
OPT_ODD_SELL72零股卖出
OPT_ETF_STOCK_BUY73成份股买入
OPT_ETF_STOCK_SELL74成份股卖出
OPT_OTC_FUND_SUBSCRIBE200场外基金认购
OPT_OTC_FUND_PURCHASE201场外基金申购
OPT_OTC_FUND_REDEMPTION202场外基金赎回
OPT_OTC_FUND_CONVERT203场外基金转换
OPT_OTC_FUND_BONUS_TYPE_UPDATE204场外基金分红方式变更
OPT_OTC_CONTRACTUAL_DEPOSIT205场外协议存款
OPT_OTC_NON_CONTRACTUAL_DEPOSIT206场外非协议存款
OPT_OTC_CONTRACTUAL_DEPOSIT_ASK207场外协议存款询价
OPT_OTC_NON_CONTRACTUAL_DEPOSIT_ASK208场外非协议存款询价
OPT_OTC_NON_CONTRACTUAL_DEPOSIT_CUR209场外非协议活期存款
OPT_OTC_DRAW_DEPOSIT210场外存单支取
OPT_OTC_STOCK_INQUIRY230网下询价
OPT_OTC_STOCK_PURCHASE231网下申购
OPT_OPTION_NS_DEPOSIT1001场外转账入金
OPT_OPTION_NS_WITHDRAW1002场外转账出金
OPT_OPTION_NS_INOUT1003场外互转
OPT_ETF_PURCHASE1004ETF申购
OPT_ETF_REDEMPTION1005ETF赎回
OPT_OUTER_BUY1006外盘买入
OPT_OUTER_SELL1007外盘卖出
OPT_OUTER_CAN_CLOSE_BUY1008外盘可平买仓
OPT_OUTER_CAN_CLOSE_SELL1009外盘可平卖仓
OPT_SLO_SELL_SPECIAL1010专项融券卖出
OPT_BUY_SECU_REPAY_SPECIAL1011专项买券还券
OPT_DIRECT_SECU_REPAY_SPECIAL1012专项直接还券
OPT_NEEQ_O3B_LIMIT_PRICE_BUY1013全国股转-两网及退市交易-限价买入
OPT_NEEQ_O3B_LIMIT_PRICE_SELL1014全国股转-两网及退市交易-限价卖出
OPT_IBANK_BOND_BUY1015投行债券买入
OPT_IBANK_BOND_SELL1016投行债券卖出
OPT_IBANK_FUND_REPURCHASE1017质押式融资回购
OPT_IBANK_BOND_REPURCHASE1018质押式融券回购
OPT_IBANK_BOND_REPAY1019质押式融资购回
OPT_IBANK_FUND_RETRIEVE1020质押式融券购回
OPT_INTEREST_FEE1021融券息费
OPT_FIN_BUY_SPECIAL1022专项融资买入
OPT_SELL_CASH_REPAY_SPECIAL1023专项卖券还款
OPT_DIRECT_CASH_REPAY_SPECIAL1024专项直接还款
OPT_FUND_PRICE_BUY1025货币基金申购
OPT_FUND_PRICE_SELL1026货币基金赎回
OPT_N3B_CALL_AUCTION_BUY1027协议转让-集合竞价买入
OPT_N3B_CALL_AUCTION_SELL1028协议转让-集合竞价卖出
OPT_N3B_AFTER_HOURS_BUY1029全国股转-盘后协议买入
OPT_N3B_AFTER_HOURS_SELL1030全国股转-盘后协议卖出
OPT_ETF_HEDGE1031ETF套利
OPT_QUOTATION_REPURCHASE_BUY1032报价回购买入
OPT_QUOTATION_REPURCHASE_STOP1033报价回购终止续做
OPT_QUOTATION_REPURCHASE_BEFORE1034报价回购提前购回
OPT_QUOTATION_REPURCHASE_RESERVATION1035报价回购购回预约
OPT_QUOTATION_REPURCHASE_CANCEL1036报价回购取消预约
OPT_BLOCK_CONFIRM_MATCH_BUY1037成交申报配对买入
OPT_BLOCK_CONFIRM_MATCH_SELL1038成交申报配对卖出
OPT_FUTURE_OPTION_ABANDON1039期货期权放弃行权
OPT_ONEKEY_TRANSFER1040一键划转
OPT_ONEKEY_TRANSFER_IN1041一键划入
OPT_ONEKEY_TRANSFER_OUT1042一键划出
OPT_AFTER_FIX_BUY1043盘后定价买入
OPT_AFTER_FIX_SELL1044盘后定价卖
OPT_AGREEMENT_REPURCHASE_TRANSACTION_DEC_FORWARD1045成交申报正回购
OPT_AGREEMENT_REPURCHASE_TRANSACTION_DEC_REVERSE1046成交申报逆回购
OPT_AGREEMENT_REPURCHASE_EXPIRE_CONFIRM1047到期确认
OPT_AGREEMENT_REPURCHASE_ADVANCE_REPURCHASE1048提前购回正回购
OPT_AGREEMENT_REPURCHASE_ADVANCE_REVERSE1049提前购回逆回购
OPT_AGREEMENT_REPURCHASE_EXPIRE_RENEW1050到期续做正回购
OPT_AGREEMENT_REPURCHASE_EXPIRE_REVERSE1051到期续做逆回购
OPT_TRANSACTION_IN_CASH_BUY1052现券买入
OPT_TRANSACTION_IN_CASH_SELL1053现券卖出
OPT_OUTRIGHT_REPO_FUND_REPURCHASE1054买断式融资回购
OPT_OUTRIGHT_REPO_BOND_REPURCHASE1055买断式融券回购
OPT_OUTRIGHT_REPO_BOND_REPAY1056买断式融资购回
OPT_OUTRIGHT_REPO_FUND_RETRIEVE1057买断式融券购回
OPT_DISTRIBUTION_BUYING1058分销买入
OPT_FIXRATE_TO_FLOATINGRATE1059固定利率换浮动利率
OPT_FLOATINGRATE_TO_FIXRATE1060浮动利率换固定利率
OPT_IBANK_TRANSFER_OUT1061银行间转出托管
OPT_IBANK_TRANSFER_IN1062银行间转入托管
OPT_AGREEMENT_REPURCHASE_INTENTION_BUY1063意向申报正回购买入
OPT_AGREEMENT_REPURCHASE_INTENTION_SELL1064意向申报正回购卖出
OPT_AGREEMENT_REPURCHASE_BIZ_APPLY_CONFIRM1065协议回购成交申报确认
OPT_AGREEMENT_REPURCHASE_BIZ_APPLY_REJECT1066协议回购成交申报拒绝
OPT_AGREEMENT_REPURCHASE_CONTINUE_CONFIRM1067协议回购到期续做申报确认
OPT_AGREEMENT_REPURCHASE_CONTINUE_REJECT1068协议回购到期续做申报拒绝
OPT_AGREEMENT_REPURCHASE_INTENTION_CHANGE_BONDS1069协议回购换券申报
OPT_AGREEMENT_REPURCHASE_INTENTION_CHANGE_BONDS_CONFIRM1070协议回购换券申报确认
OPT_AGREEMENT_REPURCHASE_INTENTION_CHANGE_BONDS_REJECT1071协议回购换券申报拒绝
OPT_AGREEMENT_REPURCHASE_STOP_AHEAD_CONFIRM1072协议回购正回购提前终止申报确认
OPT_AGREEMENT_REPURCHASE_STOP_AHEAD_REJECT1073协议回购正回购提前终止申报拒绝
OPT_AGREEMENT_REPURCHASE_RELEASE_PLEDGE1074协议回购正回购方解除质押申报
OPT_AGREEMENT_REPURCHASE_RELEASE_PLEDGE_CONFIRM1075协议回购正回购解除质押申报确认
OPT_AGREEMENT_REPURCHASE_RELEASE_PLEDGE_REJECT1076协议回购正回购解除质押申报拒绝
OPT_AGREEMENT_REPURCHASE_EXPIRE_CONFIRM_SELL1077深圳到期确认卖出
OPT_LOAN_DISTRIBUTION_BUY1078债券分销
OPT_PREFERENCE_SHARES_BIDDING_BUY1079优先股竞价买入
OPT_PREFERENCE_SHARES_BIDDING_SELL1080优先股竞价卖出
OPT_TOC_BOND1081债券转托管
OPT_TOC_FUND1082基金转托管
OPT_IBANK_BORROW1083同业拆入
OPT_IBANK_LOAN1084同业拆出
OPT_IBANK_BORROW_REPAY1085拆入还款
OPT_IBANK_LOAN_REPAY1086拆出还款
OPT_FINANCIAL_PRODUCT_BUY1087理财产品申购
OPT_FINANCIAL_PRODUCT_SELL1088理财产品赎回
OPT_OPTION_COMB_EXERCISE1089组合行权
OPT_OPTION_BUILD_COMB_STRATEGY1090构建组合策略
OPT_OPTION_RELEASE_COMB_STRATEGY1091解除组合策略
OPT_AGREEMENT_REPURCHASE_REVERSE_STOP_AHEAD_CONFIRM1092协议回购逆回购提前终止申报确认
OPT_AGREEMENT_REPURCHASE_REVERSE_STOP_AHEAD_REJECT1093协议回购逆回购提前终止申报拒绝
OPT_AGREEMENT_REPURCHASE_REVERSE_RELEASE_PLEDGE1094协议回购逆回购方解除质押申报
OPT_AGREEMENT_REPURCHASE_REVERSE_RELEASE_PLEDGE_CONFIRM1095协议回购逆回购解除质押申报确认
OPT_AGREEMENT_REPURCHASE_REVERSE_RELEASE_PLEDGE_REJECT1096协议回购逆回购解除质押申报拒绝
OPT_BOND_TENDER1097债券投标
OPT_FINANCIAL_PRODUCT_CALL1098理财产品认购
OPT_NEEQ_O3B_CONTINUOUS_AUCTION_BUY1099全国股转-北交所买入
OPT_NEEQ_O3B_CONTINUOUS_AUCTION_SELL1100全国股转-北交所卖出
OPT_NEEQ_O3B_ASK_PRICE1101全国股转-申购-询价申报
OPT_NEEQ_O3B_PRICE_CONFIRM1102全国股转-申购-申购申报
OPT_NEEQ_O3B_BLOCKTRADING_BUY1103全国股转-大宗交易买入
OPT_NEEQ_O3B_BLOCKTRADING_SELL1104全国股转-大宗交易卖出
OPT_LMT_LOAN_SET1105转融通非约定出借申报
OPT_LMT_LOAN_CONVENTION1106转融通约定出借申报
OPT_LMT_LOAN_RENEWAL1107转融通出借展期
OPT_LMT_LOAN_SETTLE_EARLY1108转融通出借提前了结
OPT_CROSS_MARKET_IN_ETF_PURCHASE1109跨市场ETF场内申购
OPT_CROSS_MARKET_IN_ETF_REDEMPTION1110跨市场ETF场内赎回
OPT_CROSS_MARKET_OUT_ETF_PURCHASE1111跨市场ETF场外申购
OPT_CROSS_MARKET_OUT_ETF_REDEMPTION1112跨市场ETF场外赎回
OPT_CREDIT_APPOINTMENT1113券源预约
OPT_OFF_IPO_PUB_PRICE1114网下申购-公开发行询价
OPT_OFF_IPO_PUB_PURCHASE1115网下申购-公开发行申购
OPT_OFF_IPO_NON_PUB_PRICE1116网下申购-非公开发行询价
OPT_OFF_IPO_NON_PUB_PURCHASE1117网下申购-非公开发行申购
OPT_IBANK_PUT1118债券回售
OPT_IBANK_BOND_BORROW1119债券借贷融入
OPT_IBANK_BOND_LEND1120债券借贷融出
OPT_IBANK_BOND_BORROW_REPAY1121债券借贷融入购回
OPT_IBANK_BOND_LEND_RETRIEVE1122债券借贷融出购回
OPT_IBANK_BOND_DISPLACE1123债券借贷-质押券置换
OPT_LENDING_INTEGRATE_INTO1124融券通-预约融券融入
OPT_LENDING_MELT_OUT1125融券通-预约融券融出
OPT_FICC_MANUAL_DECLARE_BUY1126固收业务-点击成交-报价申报买入
OPT_FICC_MANUAL_DECLARE_SELL1127固收业务-点击成交-报价申报卖出
OPT_FICC_MANUAL_CONFIRM_BUY_CONFIRM1128固收业务-点击成交-报价确认-买入-确认
OPT_FICC_MANUAL_CONFIRM_BUY_REJECT1129固收业务-点击成交-报价确认-买入-拒绝
OPT_FICC_MANUAL_CONFIRM_SELL_CONFIRM1130固收业务-点击成交-报价确认-卖出-确认
OPT_FICC_MANUAL_CONFIRM_SELL_REJECT1131固收业务-点击成交-报价确认-卖出-拒绝
OPT_FICC_CONSULT_DECLARE_BUY1132固收业务-协商成交-协商申报买入
OPT_FICC_CONSULT_DECLARE_SELL1133固收业务-协商成交-协商申报卖出
OPT_FICC_CONSULT_CONFIRM_BUY_CONFIRM1134固收业务-协商成交-协商确认-买入-确认
OPT_FICC_CONSULT_CONFIRM_BUY_REJECT1135固收业务-协商成交-协商确认-买入-拒绝
OPT_FICC_CONSULT_CONFIRM_SELL_CONFIRM1136固收业务-协商成交-协商确认-卖出-确认
OPT_FICC_CONSULT_CONFIRM_SELL_REJECT1137固收业务-协商成交-协商确认-卖出-拒绝
OPT_FICC_ENQUIRY_DECLARE_BUY1138固收业务-询价成交-询价申报买入
OPT_FICC_ENQUIRY_DECLARE_SELL1139固收业务-询价成交-询价申报卖出
OPT_FICC_ENQUIRY_REPLAY_BUY_CONFIRM1140固收业务-询价成交-报价回复-买入-确认
OPT_FICC_ENQUIRY_REPLAY_BUY_REJECT1141固收业务-询价成交-报价回复-买入-拒绝--预留字段
OPT_FICC_ENQUIRY_REPLAY_SELL_CONFIRM1142固收业务-询价成交-报价回复-卖出-确认
OPT_FICC_ENQUIRY_REPLAY_SELL_REJECT1143固收业务-询价成交-报价回复-卖出-拒绝--预留字段
OPT_FICC_ENQUIRY_INQUIRY_BUY_CONFIRM1144固收业务-询价成交-询价成交-买入-确认
OPT_FICC_ENQUIRY_INQUIRY_BUY_REJECT1145固收业务-询价成交-询价成交-买入-拒绝--预留字段
OPT_FICC_ENQUIRY_INQUIRY_SELL_CONFIRM1146固收业务-竞买成交-询价成交-卖出-确认
OPT_FICC_ENQUIRY_INQUIRY_SELL_REJECT1147固收业务-竞买成交-询价成交-卖出-拒绝--预留字段
OPT_FICC_BINDDING_RESERVE_BUY1148固收业务-竞买成交-竞买预约买入
OPT_FICC_BINDDING_RESERVE_SELL1149固收业务-竞买成交-竞买预约卖出
OPT_FICC_BINDDING_DECLARE_BUY1150固收业务-竞买成交-竞买申报买入
OPT_FICC_BINDDING_DECLARE_SELL1151固收业务-竞买成交-竞买申报卖出
OPT_FICC_BINDDING_PRICE_DECLARE_BUY1152固收业务-竞买成交-应价申报买入
OPT_FICC_BINDDING_PRICE_DECLARE_SELL1153固收业务-竞买成交-应价申报卖出
OPT_OPTION_BUY_CLOSE_THEN_OPEN1154买入优先平仓,个股期权交易业务补充类型
OPT_OPTION_SELL_CLOSE_THEN_OPEN1155卖出优先平仓
OPT_FUND_TRANSFER_IN1156资金划入
OPT_FUND_TRANSFER_OUT1157资金划出

enum_EOrderType - 算法交易、普通交易类型

变量名称数值描述
OTP_ORDINARY0常规
OTP_ALGORITHM1算法交易
OTP_RANDVOLUME2随机量交易
OTP_ALGORITHM33算法交易3
OTP_ZXJT4中信建投算法
OTP_ZSGS5隔时交易
OTP_ORDINARY_BASKET_TRIGGER_SINGLE_ORDER6普通交易的触价单笔委托方式
OTP_ALGORITHM_BASKET_TRIGGER_SINGLE_ORDER7算法交易的触价单笔委托方式
OTP_ZXZQ8中信证券算法
OTP_GENUS9金纳算法
OTP_JAZZ10爵士算法
OTP_VWAP11智能VWAP
OTP_TWAP12智能TWAP
OTP_XTALGO13智能算法
OTP_HUACHUANG14华创算法
OTP_HUARUN15华润算法
OTP_CUSTOM16回转算法
OPT_EXTERN17主动算法
OTP_GUANGFA18广发算法

enum_EPriceType - 价格类型

变量名称数值描述
PRTP_SALE50卖5
PRTP_SALE41卖4
PRTP_SALE32卖3
PRTP_SALE23卖2
PRTP_SALE14卖1
PRTP_LATEST5最新价
PRTP_BUY16买1
PRTP_BUY27买2
PRTP_BUY38买3
PRTP_BUY49买4
PRTP_BUY510买5
PRTP_FIX11指定价
PRTP_MARKET12市价_涨跌停价
PRTP_HANG13挂单价
PRTP_COMPETE14对手价
PRTP_AUTO15自动盘口
PRTP_CLOSE16昨收价
PRTP_AVERAGE17大宗加权平均价
PRTP_MARKET_BEST18市价_最优价
PRTP_MARKET_CANCEL19市价_即成剩撤
PRTP_MARKET_CANCEL_ALL20市价_全额成交或撤
PRTP_MARKET_CANCEL_121市价_最优1档即成剩撤
PRTP_MARKET_CANCEL_522市价_最优5档即成剩撤
PRTP_MARKET_CONVERT_123市价_最优1档即成剩转
PRTP_MARKET_CONVERT_524市价_最优5档即成剩转
PRTP_STK_OPTION_ASK25询价
PRTP_STK_OPTION_FIX_CANCEL_ALL26限价即时全部成交否则撤单
PRTP_STK_OPTION_MARKET_CACEL_LEFT27市价即时成交剩余撤单
PRTP_STK_OPTION_MARKET_CANCEL_ALL28市价即时全部成交否则撤单
PRTP_STK_OPTION_MARKET_CONVERT_FIX29市价剩余转限价
PRTP_SALE630卖6
PRTP_SALE731卖7
PRTP_SALE832卖8
PRTP_SALE933卖9
PRTP_SALE1034卖10
PRTP_BUY635买6
PRTP_BUY736买7
PRTP_BUY837买8
PRTP_BUY938买9
PRTP_BUY1039买10
PRTP_UPPER_LIMIT_PRICE40涨停价
PRTP_LOWER_LIMIT_PRICE41跌停价
PRTP_MARKET_SH_CONVERT_5_CANCEL42最优五档即时成交剩余撤销
PRTP_MARKET_SH_CONVERT_5_LIMIT43最优五档即时成交剩转限价
PRTP_MARKET_PEER_PRICE_FIRST44对手方最优价格委托
PRTP_MARKET_MINE_PRICE_FIRST45本方最优价格委托
PRTP_MARKET_SZ_INSTBUSI_RESTCANCEL46即时成交剩余撤销委托
PRTP_MARKET_SZ_CONVERT_5_CANCEL47最优五档即时成交剩余撤销委托
PRTP_MARKET_SZ_FULL_REAL_CANCEL48全额成交或撤销委托
PRTP_AFTER_FIX_PRICE49盘后定价申报

enum_ETaskStatus - 任务状态

变量名称数值描述
TASK_STATUS_UNKNOWN0未知
TASK_STATUS_WAITING1等待
TASK_STATUS_COMMITING2提交中
TASK_STATUS_RUNNING3执行中
TASK_STATUS_PAUSE4暂停
TASK_STATUS_CANCELING_DEPRECATED5撤销中(已弃用)
TASK_STATUS_EXCEPTION_CANCELING_DEPRECATED6异常撤销中(已弃用)
TASK_STATUS_COMPLETED7完成
TASK_STATUS_CANCELED8已撤
TASK_STATUS_REJECTED9打回
TASK_STATUS_EXCEPTION_CANCELED10异常终止
TASK_STATUS_DROPPED11放弃(用于组合交易中,放弃补单)
TASK_STATUS_FORCE_CANCELED_DEPRECATED12强制终止(已弃用)

完整示例

获取行情示例

按品种划分

两融

获取融资融券账户可融资买入标的
python
#coding:gbk
def init(C):

    r = get_assure_contract('123456789')
    if len(r) == 0:
        print('未取到担保明细')
    else:
        finable = [o.m_strInstrumentID+'.'+o.m_strExchangeID for o in r if o.m_eFinStatus==48]
        print('可融资买入标的:', finable)

按功能划分

订阅K线全推

  1. K线全推需要VIP权限,非VIP用户请勿使用此功能

订阅全市场1m周期K线

python
#coding:gbk

import pandas as pd
import numpy as np

def init(C):
    stock_list = C.get_stock_list_in_sector("沪深A股")
    sub_num_dict = {i:C.subscribe_quote(
        stock_code = i, 
        period = '1m',  
        dividend_type = 'none',
        result_type = 'dict',  # 回调函数的行情数据格式
        callback = call_back  # 指定一个自定义的函数接收行情,自定义的函数只能有一个位置参数
        ) for i in stock_list}

def call_back(data):
    print(data)

获取N分钟周期K线数据

  1. 获取历史N分钟数据前,需要先下载历史数据
  2. 1m以上,5m以下的数据,是通过1m数据合成的
  3. 5m以上,1d以下的数据,是通过5m数据合成的
  4. 1d以上的数据,是通过1d的数据合成的
python
#coding:gbk

import pandas as pd
import numpy as np

def init(C):

    # start_date = '20231001'# 格式"YYYYMMDD",开始下载的日期,date = ""时全量下载
    start_date = '20231001'# 格式"YYYYMMDD",开始下载的日期,date = ""时增量下载
    end_date = "" # 格式同上,下载结束时间
    period = "3m" # 数据周期
    need_download = 1 # 取数据是空值时,将need_download赋值为1,确保正确下载了历史数据
    # code_list = ["110052.SH"] # 可转债
    # code_list = ["rb2401.SF", "FG403.ZF"] # 期货列表
    # code_list = ["HO2310-P-2500.IF"] # 期权列表
    code_list = ["000001.SZ", "600519.SH"] # 股票列表

    # 判断要不要下载数据
    if need_download:
        my_download(code_list, period, start_date, end_date)
    # 取数据
    data = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,dividend_type = "back_ratio")

    print(data)# 行情数据查看
    print(C.get_instrumentdetail(code_list[0])) # 合约信息查看

def hanldebar(C):
    return

def my_download(stock_list,period,start_date = '', end_date = ''):
    '''
    用于显示下载进度
    '''
    if "d" in period:
        period = "1d"
    elif "m" in period:
        if int(period[0]) < 5:
            period = "1m"
        else:
            period = "5m"
    elif "tick" == period:
        pass
    else:
        raise KeyboardInterrupt("周期传入错误")


    n = 1
    num = len(stock_list)
    for i in stock_list:
        print(f"当前正在下载{n}/{num}")

        download_history_data(i,period,start_date, end_date)
        n += 1
    print("下载任务结束")

获取 Lv1 行情数据

本示例用于说明如何通过函数获取行情数据。

python
#coding:gbk
# get_market_data_ex(subscribe=True)有订阅股票数量限制
# 即stock_list参数的数量不能超过500

# get_market_data_ex(subscribe=False) 该模式下(非订阅模式),接口会从本地行情文件里获取数据,不会获取动态行情数,且不受订阅数限制,但需要提前下载数据
# 下载数据在 操作/数据管理/补充数据选项卡里,按照页面提示下载数据

# get_market_data_ex(subscribe=True) 该模式下(订阅模式),受订阅数量上限限制,可以取到动态行情

# 建议每天盘后增量补充对应周期的行情

import time


def init(C):
    C.stock = C.stockcode + '.' + C.market
    # 获取指定时间的k线
    price = C.get_market_data_ex(['open','high','low','close'], [C.stock], start_time='', end_time='',period='1d', subscribe=False)
    print(price[C.stock].head())


def handlebar(C):

    bar_timetag = C.get_bar_timetag(C.barpos)
    bar_date = timetag_to_datetime(bar_timetag, '%Y%m%d%H%M%S')
    print('获取截至到%s为止前5根k线的开高低收等字段:'%(bar_date))
    # 获取截至今天为止前30根k线
    price = C.get_market_data_ex(
                    [], [C.stock], 
                    end_time=bar_date,
                    period=C.period, 
                    subscribe=True, 
                    count=5,
                    )
    print(price[C.stock].to_dict('dict'))

获取 Lv2 数据(需要数据源支持)

方法1 - 查询LV2数据

使用该函数后,会定期查询最新数据,并进行数据返回。

python返回值

python
#coding:gbk
def init(C):
    C.sub_nums  = []

    C.stock = C.stockcode+'.'+C.market
    for field in ['l2transaction', 'l2order', 'l2transactioncount', 'l2quote']:
        num = C.subscribe_quote(C.stock, period=field,
                            dividend_type='follow',
                            )

        C.sub_nums.append(num)

def handlebar(C):
    if not C.is_last_bar():
        return
    price = C.get_market_data_ex([],[C.stock],period='l2transaction',count=10)[C.stock]
    price_dict = price.to_dict('index')
    print(price_dict)
    for pos, t in enumerate(price_dict):
        print(f" 逐笔成交:{pos+1} 时间:{price_dict[t]['stime']}, 时间戳:{price_dict[t]['time']}, 成交价:{price_dict[t]['price']}, \
成交量:{price_dict[t]['volume']}, 成交额:{price_dict[t]['amount']} \
成交记录号:{price_dict[t]['tradeIndex']}, 买方委托号:{price_dict[t]['buyNo']},\
卖方委托号:{price_dict[t]['sellNo']}, 成交类型:{price_dict[t]['tradeType']}, \
成交标志:{price_dict[t]['tradeFlag']}, ")

    price = C.get_market_data_ex([],[C.stock],period='l2quote',count=10)[C.stock]
    price_dict = price.to_dict('index')
    print(price_dict)
    for pos, t in enumerate(price_dict):
        print(f" 十档快照:{pos+1} 时间:{price_dict[t]['stime']}, 时间戳:{price_dict[t]['time']}, 最新价:{price_dict[t]['lastPrice']}, \
开盘价:{price_dict[t]['open']}, 最高价:{price_dict[t]['high']} 最低价:{price_dict[t]['low']}, 成交额:{price_dict[t]['amount']},\
成交总量:{price_dict[t]['volume']}, 原始成交总量:{price_dict[t]['pvolume']}, 证券状态:{price_dict[t]['stockStatus']}, 持仓量:{price_dict[t]['openInt']},\
成交笔数:{price_dict[t]['transactionNum']},前收盘价:{price_dict[t]['lastClose']},多档委卖价:{price_dict[t]['askPrice']},多档委卖量:{price_dict[t]['askVol']},\
多档委买价:{price_dict[t]['bidPrice']},多档委买量:{price_dict[t]['bidVol']}")


    price = C.get_market_data_ex([],[C.stock],period='l2order',count=10)[C.stock]
    price_dict = price.to_dict('index')
    for pos, t in enumerate(price_dict):
        print(f" 逐笔委托:{pos+1} 时间:{price_dict[t]['stime']}, 时间戳:{price_dict[t]['time']}, 委托价:{price_dict[t]['price']}, \
委托量:{price_dict[t]['volume']}, 委托号:{price_dict[t]['entrustNo']} \
委托类型:{price_dict[t]['entrustType']}, 委托方向:{price_dict[t]['entrustDirection']},\
")
# 委托类型: 0:未知 1: 买入,2: 卖出,3: 撤单


    price = C.get_market_data_ex([],[C.stock],period='l2transactioncount',count=10)[C.stock]
    price_dict = price.to_dict('index')
    for pos, t in enumerate(price_dict):
        print('大单统计:', price_dict[t])

def stop(C):
    for num in C.sub_nums:
        C.unsubscribe_quote(num)
方法2 - 订阅LV2数据

此方法在发起订阅后,会自动收到所订阅数据,订阅方需要记录订阅函数返回的订阅号,并在不需要订阅时调用unsubscribe_quote反订阅数据,释放资源。

python返回值

python
#coding:gbk

def l2_quote_callback(data):
    for s in data:
        print('lv2快照:',s, data[s])

def l2transaction_callback(data):
    for s in data:
        print('逐笔成交',s, data[s])


def l2order_callback(data):
    for s in data:
        print('逐笔委托',s, data[s])

def l2quoteaux_callback(data):
    for s in data:
        print('行情快照补充',s, data[s])


def l2transactioncount_callback(data):
    for s in data:
        print('大单统计',s, data[s])


def l2orderqueue_callback(data):
    for s in data:
        print('委买委卖队列',s, data[s])


def init(C):
    C.stock = C.stockcode + '.' + C.market

    # Level2 逐笔快照
    C.subscribe_quote(C.stock, 'l2quote', result_type='dict', callback=l2_quote_callback)
    # Level2 行情快照补充
    C.subscribe_quote(C.stock, 'l2quoteaux', result_type='dict', callback=l2quoteaux_callback)
    # Level2 逐笔成交
    C.subscribe_quote(C.stock, 'l2transaction', result_type='dict', callback=l2transaction_callback)
    # Level2 逐笔委托
    C.subscribe_quote(C.stock, 'l2order', result_type='dict', callback=l2order_callback)
    # Level2大单统计
    C.subscribe_quote(C.stock, 'l2transactioncount', result_type='dict', callback=l2transactioncount_callback)
    # Level2委买委卖队列
    C.subscribe_quote(C.stock, 'l2orderqueue', result_type='dict', callback=l2orderqueue_callback)

def handlebar(C):
    return

使用 Lv1 全推数据计算全市场涨幅

python
#coding:gbk

import time

class a():pass

A = a()

def init(C):
    A.hsa = C.get_stock_list_in_sector('沪深A股') + C.get_stock_list_in_sector('京市A股')
    print('股票池大小', len(A.hsa))
    A.vol_dict = {}
    for stock in A.hsa:
            A.vol_dict[stock] = C.get_last_volume(stock)
    C.run_time("f","3nSecond","2019-10-14 13:20:00")


def to_zw(a):
    '''0.中文价格字符串'''
    import numpy as np
    if np.isnan(a):
            return '问题数据'
    if abs(a) < 1000:
            print(a, str(round(int(a) / 1000.0, 2)) + "千")
            return str(round(int(a) / 1000.0, 2)) + "千"
    if abs(a) < 10000:
            return str(int(a))[0] + "千"
    if abs(a) < 100000000:
            return str(int(a))[:-4] + "万" + str(int(a))[-4]
    return f"{int(a / 100000000)}亿"



def f(C):
    t0 = time.time()
    full_tick = C.get_full_tick(A.hsa)
    total_market_value = 0
    total_ratio = 0
    count = 0
    total_amount = 0
    ratio_list = []
    for stock in A.hsa:
            ratio = full_tick[stock]['lastPrice'] / full_tick[stock]['lastClose'] - 1
            amount = full_tick[stock]['amount']
            total_amount += amount
            rise_price = round(full_tick[stock]['lastClose'] *1.2,2) if stock[0] == '3' or stock[:3] == '688' else round(full_tick[stock]['lastClose'] *1.1,2)
            #如果要打印涨停品种
            #if abs(full_tick[stock]['lastPrice'] - rise_price) <0.01:
            #        print(f"涨停品种 {stock} {C.get_stock_name(stock)}")
            market_value = full_tick[stock]['lastPrice'] * A.vol_dict[stock]
            total_ratio += ratio * market_value
            total_market_value += market_value
            count += 1
            ratio_list.append(ratio)
    #print(count)
    total_ratio /= total_market_value
    total_ratio *= 100
    middle  = int(len(ratio_list) / 2)
    middle_ratio = ratio_list[middle]
    rise_num = len([i for i in ratio_list if i > 0])
    down_num = len([i for i in ratio_list if i < 0])
    print(f'A股加权涨幅 {round(total_ratio,2)}% 涨幅中位数 {round(middle_ratio,2)}% {rise_num}个上涨 {down_num}个下跌 成交金额 {to_zw(total_amount)} 耗时{round(time.time()- t0,5)}秒')

在行情回调函数里处理动态行情

ContextInfo.subscribe_quote - 订阅行情函数说明
行情回调函数字段说明

python
#coding:gbk

sub_nums = []


def init(C):
    global sub_nums

    # def on_quote(data1, data2): # 错误写法
    def on_quote(data):
        for s in data:
            q = data[s]
            print(type(q), q)

    stocks = [C.stockcode + '.' + C.market]  # 获取到当前主图股票代码
    for s in stocks:
        num = C.subscribe_quote(s, period='1d',  
                          dividend_type='none',
                          result_type='dict',  # 回调函数的行情数据格式
                          callback=on_quote  # 指定一个自定义的函数接收行情,自定义的函数只能有一个位置参数
                        )
        sub_nums.append(num)


def stop(C):
    # 反订阅
    for num in sub_nums:
        C.unsubscribe_quote(num)

python写入扩展数据

python
# coding:gbk
'''
python写扩展数据,投研接口
'''

def init(C):
    # 创建扩展数据
    extencd_name  = 'test' # 创建名为test的扩展数据
    create_extend_data# (父节点, 扩展数据名称, 是否覆盖)
    C.extencd_name = create_extend_data('扩展数据', extencd_name, True)


def handlebar(C):
    if C.is_last_bar():
        data = {'SH600177': 0.43, 'SZ000767': 0.18, 'SH600362': 0.27, 'SH600171': 0.25, 'SH600170': 0.18, 'SH600073': 0.13, 'SZ000768': 0.17, 'SH600282': 0.19, 'SH600601': 0.42, 'SH600569': 0.26, 'SZ000401': 0.21, 'SH600602': 0.17, 'SZ000806': 0.13, 'SZ000807': 0.15, 'SH600608': 0.08, 'SH600874': 0.09, 'SZ000825': 0.44, 'SZ000652': 0.19, 'SH600078': 0.11, 'SH600871': 0.1, 'SZ000573': 0.1, 'SZ000520': 0.14, 'SH600879': 0.43, 'SZ000960': 0.2, 'SH600597': 0.21, 'SZ000550': 0.1, 'SH600591': 0.14, 'SZ000059': 0.13, 'SH600215': 0.12, 'SZ000968': 0.11, 'SZ000969': 0.14, 'SZ000568': 0.22, 'SH600598': 0.22, 'SH600028': 1.85, 'SH600270': 0.27, 'SH600060': 0.22, 'SH600062': 0.15, 'SH600779': 0.14, 'SH600997': 0.2, 'SZ000707': 0.12, 'SH600068': 0.16, 'SH600770': 0.14, 'SZ000680': 0.14, 'SH600674': 0.1, 'SH600675': 0.25, 'SZ000488': 0.28, 'SZ000012': 0.11, 'SH600863': 0.17, 'SZ000429': 0.17, 'SH600027': 0.32, 'SH600866': 0.13, 'SH600001': 0.43, 'SZ000636': 0.11, 'SH600900': 2.73, 'SH600600': 0.31, 'SH600895': 0.26, 'SH600029': 0.43, 'SH600020': 0.24, 'SH600205': 0.39, 'SH600688': 0.76, 'SH600207': 0.1, 'SZ000970': 0.3, 'SZ000601': 0.19, 'SH600200': 0.35, 'SZ000975': 0.08, 'SZ000538': 0.39, 'SZ000422': 0.14, 'SZ000858': 0.88, 'SZ000651': 0.44, 'SH600780': 0.21, 'SH600007': 0.11, 'SH600016': 2.36, 'SZ000866': 0.84, 'SH600267': 0.12, 'SH600266': 0.16, 'SH600786': 0.27, 'SZ000406': 0.39, 'SH600269': 0.47, 'SZ000528': 0.19, 'SH600694': 0.51, 'SZ000786': 0.14, 'SH600004': 0.4, 'SH600663': 0.25, 'SH600662': 0.21, 'SH600548': 0.11, 'SH600383': 0.42, 'SH600357': 0.12, 'SH600705': 0.13, 'SH600812': 0.18, 'SH600707': 0.06, 'SZ000895': 0.49, 'SZ000898': 0.68, 'SZ000400': 0.17, 'SZ000607': 0.1, 'SH600894': 0.1, 'SH600418': 0.4, 'SZ000061': 0.15, 'SH600653': 0.31, 'SZ000682': 0.17, 'SZ000543': 0.07, 'SZ000541': 0.25, 'SH600377': 0.12, 'SZ000949': 0.06, 'SH600256': 0.17, 'SH600006': 0.23, 'SH600005': 1.13, 'SH600790': 0.1, 'SH600797': 0.2, 'SH600002': 0.51, 'SH600795': 0.49, 'SH600000': 1.64, 'SH600652': 0.17, 'SH600121': 0.13, 'SH600123': 0.3, 'SH600125': 0.27, 'SH600126': 0.12, 'SH600008': 0.51, 'SZ000016': 0.14, 'SH600550': 0.24, 'SH600718': 0.16, 'SH600654': 0.2, 'SZ000157': 0.2, 'SH600808': 0.42, 'SZ000666': 0.1, 'SH600805': 0.11, 'SZ000527': 0.39, 'SH600717': 0.5, 'SH600399': 0.07, 'SZ000828': 0.14, 'SZ000959': 0.17, 'SZ000729': 0.29, 'SH600098': 0.43, 'SZ000886': 0.09, 'SZ000099': 0.13, 'SZ000800': 0.29, 'SH600096': 0.29, 'SZ001872': 0.17, 'SH600091': 0.12, 'SZ000956': 0.41, 'SH600887': 0.63, 'SH600886': 0.2, 'SH600884': 0.12, 'SH600308': 0.32, 'SH600309': 0.64, 'SH600881': 0.21, 'SH600307': 0.14, 'SZ000069': 0.8, 'SZ000068': 0.1, 'SH600153': 0.19, 'SZ000792': 0.55, 'SZ000060': 0.38, 'SZ000002': 2.25, 'SZ000001': 1.25, 'SH600138': 0.1, 'SH600649': 0.44, 'SH600015': 0.99, 'SZ000533': 0.07, 'SZ000009': 0.24, 'SH600408': 0.09, 'SZ000778': 0.23, 'SH600643': 0.17, 'SH600642': 0.71, 'SH600832': 0.71, 'SZ000089': 0.36, 'SZ000088': 0.44, 'SZ000539': 0.3, 'SH600835': 0.19, 'SH600726': 0.09, 'SH600010': 0.42, 'SH600724': 0.16, 'SH600839': 0.61, 'SH600011': 0.38, 'SH600012': 0.27, 'SH600089': 0.23, 'SH600088': 0.12, 'SH600087': 0.12, 'SH600085': 0.38, 'SZ000927': 0.2, 'SZ000920': 0.11, 'SZ000962': 0.13, 'SZ000559': 0.16, 'SH600050': 2.98, 'SZ000708': 0.09, 'SZ000503': 0.36, 'SZ000839': 0.44, 'SZ000717': 0.28, 'SZ000100': 0.31, 'SZ000036': 0.18, 'SZ000878': 0.24, 'SZ000511': 0.09, 'SZ000410': 0.19, 'SH600033': 0.24, 'SH600108': 0.13, 'SZ000031': 0.21, 'SZ000507': 0.09, 'SH600104': 0.78, 'SZ002024': 0.45, 'SH600102': 0.18, 'SH600103': 0.14, 'SH600100': 0.41, 'SH600019': 2.84, 'SH600009': 1.5, 'SH600639': 0.19, 'SZ000709': 0.34, 'SH600820': 0.14, 'SZ000571': 0.1, 'SH600739': 0.13, 'SH600631': 0.25, 'SH600021': 0.24, 'SH600635': 0.22, 'SH600637': 0.15, 'SZ000733': 0.09, 'SZ000780': 0.09, 'SH600210': 0.25, 'SZ000939': 0.12, 'SZ000937': 0.26, 'SZ000875': 0.15, 'SZ000933': 0.22, 'SZ000932': 0.51, 'SZ000659': 0.15, 'SZ000930': 0.38, 'SH600320': 0.8, 'SZ000822': 0.17, 'SZ000726': 0.14, 'SZ000727': 0.1, 'SZ000725': 0.13, 'SH600380': 0.14, 'SH600030': 0.63, 'SH600031': 0.16, 'SH600036': 3.93, 'SH600037': 0.62, 'SH600035': 0.16, 'SH600058': 0.2, 'SH600110': 0.13, 'SH600508': 0.19, 'SZ000402': 0.62, 'SH600115': 0.1, 'SH600117': 0.13, 'SZ000423': 0.22, 'SH600348': 0.34, 'SZ000518': 0.14, 'SH600500': 0.26, 'SH600660': 0.37, 'SH600057': 0.09, 'SH600744': 0.12, 'SH600747': 0.11, 'SH600740': 0.09, 'SH600741': 0.17, 'SH600621': 0.11, 'SZ000698': 0.14, 'SH600851': 0.19, 'SZ000900': 0.28, 'SH600854': 0.1, 'SH600868': 0.25, 'SH600428': 0.3, 'SZ000630': 0.36, 'SH600811': 0.3, 'SZ000735': 0.1, 'SZ000737': 0.09, 'SZ000066': 0.19, 'SH600331': 0.25, 'SH600183': 0.27, 'SH600333': 0.1, 'SZ000581': 0.25, 'SZ000425': 0.11, 'SZ000983': 0.49, 'SH600236': 0.25, 'SH600026': 0.45, 'SH600339': 0.08, 'SH600231': 0.16, 'SH600188': 0.27, 'SH600022': 0.2, 'SH600166': 0.08, 'SH600350': 0.37, 'SH600519': 1.14, 'SZ000063': 1.49, 'SH600690': 0.44, 'SZ000758': 0.24, 'SH600296': 0.26, 'SH601607': 0.17, 'SHT00018': 0.8, 'SZ000039': 0.78, 'SZ000599': 0.1, 'SH600198': 0.21, 'SZ000917': 0.15, 'SZ000916': 0.22, 'SZ000912': 0.21, 'SH600190': 0.11, 'SH600196': 0.25, 'SH600583': 0.54, 'SH600581': 0.12, 'SZ000027': 0.6, 'SZ000629': 0.52, 'SH600585': 0.32, 'SZ000021': 0.26, 'SZ000625': 0.25, 'SZ000623': 0.18, 'SZ000024': 0.42, 'SH600221': 0.13, 'SH600220': 0.17}
        timetag = C.get_bar_timetag(C.barpos)
        stock_list = list(data.keys())
        print(stock_list)

        #设置需要写入的扩展数据股票列表
        #reset_extend_data_stock_list(扩展数据名称, 股票列表)
        reset_extend_data_stock_list(C.extencd_name, stock_list)
        # 执行写入扩展数据
        # set_extend_data_value(扩展数据名称,时间戳(毫秒),数据)
        set_extend_data_value(C.extencd_name, timetag, data)  
        print('写入完成')

常见问题

常见问题。下面是实盘里最常碰到的。

三方库报 not in whitelist

券商后台开了 Python 库白名单。openpyxl 这类库要营业部加白。装库命令指向客户端目录:

pip install 库名 -t 安装目录\bin.x64\Lib\site-packages

装完重启。不要乱升级自带 pandas。

pandas 找不到 / 没有 core

设置 → 模型设置,路径指到 &#123;安装目录&#125;\bin.x64module 'pandas' has no attribute 'core' 多半是导入被中断,重启客户端。

ContextInfo 里存的值丢了

盘中每个分笔都会进 handlebar,但只有 K 走完的最后一笔 会把对 ContextInfo 的改动留下。立刻下单用普通全局对象(class a()),passorderquickTrade2

quickTrade 怎么填

行为典型场景
0(默认)只在当根 K 结束时下单有效handlebar 逐 K
1最新 K 上调用就发,历史 K 不发盘中立刻下、不要历史重放
2任何位置调用都发run_time / after_init / 行情回调 / 成交回调

日线及以上用 0,等于当天可能发不出去。

下单了查不到委托

交易接口是异步的。get_trade_detail_data 读的是客户端本地缓存,不是当场查柜台。刚卖完立刻查,委托和资金可能还没变。用投资备注当 key 自己记状态。

模型交易里没单

先看是不是「实盘」模式。「模拟」只出信号。再看 quickTrade。左下角消息栏有废单原因。

三种行情别混

种类是什么接口
本地下到硬盘的历史文件get_market_data_ex(..., subscribe=False)
全推全市场最新快照,无历史get_full_tick / subscribe_whole_quote
订阅指定品种实时,有数量上限subscribe_quote / get_market_data_ex(..., subscribe=True)

超出订阅上限会用前值填充,看起来像行情卡住。init 里的 gmd 系列只能读到本地,读不到最新盘。

全推没有五档

改行情源的全推行情级别(交易中心影响全推,行情中心影响单支订阅)。

策略自己跑起来了

挂在行情副图上会随客户端启动。右上角布局 → 恢复默认布局后重启。交易日切换、行情重连时挂着的模型会被重新跑,这是正常的。

回测复权

官方建议回测用等比前复权,少被配股增发的价格跳变带偏。

下单数量(连续竞价,以交易所规则为准)

板块限价单笔大约市价单笔大约数量步长
科创板10 万股5 万股200 起 1 股递增
创业板30 万股15 万股100 起 100 递增
主板100 万股100 起 100 递增

常见坑

按实盘里最费时间的问题排列。

1. 当日日线当收盘

盘中 get_market_data_ex(..., period='1d') 的 close 会变。均线、阴线、跌破昨收,全部会漂移。
已定稿日线截到上一交易日;今开今价用 tick。

2. run_time 回测没信号

不是策略废了,是定时器在回测里根本不跑。要回测请用 handlebar

3. init 里取交易日

get_trading_datesinit 不可用。启动时需要日期,等到第一根 bar 或第一个定时回调。

4. 编造 passorder 枚举

opType / orderType / prType 填错,轻则废单,重则开成两融。打开官方 md 检索,不要从记忆或聊天记录抄数字。

5. 市值字段

很多环境没有现成流通市值。用财务股本 × 现价,字段名查财务接口,不要发明 mktCap

6. 编码

策略文件按 GBK 声明。用 UTF-8 保存后在客户端里中文注释乱码、字符串对不上。

7. 代码后缀

上交所 .SH,不要写成 PTrade 的 .SS。从 PTrade 迁移先替换后缀。

8. 装在 C 盘

设置不保存、数据下不下来,先检查安装路径和管理员权限。

9. 全推没开

get_full_tick 字段缺、买卖盘空,先看通信设置里的全推档位。

10. 策略名过滤

passorderget_trade_detail_datastrategyName 必须一致,否则持仓机对空。


附录

手册后半本是表,这里只列查阅入口。具体代码、行业分类、Level-2 字段以券商《Python API 说明文档》附录为准。

建议对照的附录

  • 市场简称代码(.SH .SZ .BJ 等)
  • 行业列表(CSRC 等)
  • is_typed_stock 一类证券分类
  • 交易函数内含属性
  • 对象状态字段
  • Level-2 数据字段

财务与多因子

财务、股票因子库、大盘预测因子都有单独「表名 / 字段对照表」。字段随数据商版本变。本站不复制整张对照表,避免和你客户端不一致。

需要代验某个字段在你券商能不能取到,公众号留言 发函数名和一段返回日志。

第三方库

QMT 内置 Python 能用的库看《内置 Python》文档,同样不能假设和本机 Anaconda 一致。策略里少依赖冷门包。