# python api 接口

# 一、python api 主调函数接口

# 添加一次性定时任务

context.add_timer(nanotime, callback, enforce = False) 添加定时触发的函数。

例如:通过时间回调函数,在时间点 nano 撤去订单号为 order_id 的报单 context.add_timer(nano, partial(cancel_order, order_id = order_id))

  • nanotime(入参) 长整形(类型) 特定纳秒时间。
  • callback(入参) 回调函数(类型) ,特定时间要触发的回调函数。
  • enforce(入参) 布尔型(类型) ,指定是否强制执行,默认值为 False。
  • (返回值)

备注:

1.context.add_timer()函数的第三个参数 enforce,是从 2.0.11 版本开始支持,之前的版本只支持 nanotime 和 callback 两个参数;

2.参数 enforce 的值为 False 时,系统将对参数 nanotime 的值进行校验,如果 nanotime 的值小于当前时间,则定时操作失败;

3.参数 enforce 的值为 True 时,系统不校验参数 nanotime 的值;

# 添加周期性定时任务

context.add_time_interval(nano,callback) 注册每过一段时间周期性触发的回调函数,时长由参数 nano 决定, 单位是纳秒。 例如通过时间回调函数,每过一秒钟就执行一次 cancel_order 函数 context.add_time_interval( 1*1000000000, partial(cancel_order, order_id = order_id))

  • nano(入参) 长整形(类型) 特定纳秒时间。
  • callback(入参) 回调函数(类型) ,特定时间要触发的回调函数。
  • (返回值)

# 订阅快照行情和逐笔行情

context.subscribe(source_id, instruments, exchange_id) 执行该函数将订阅市场快照行情(快照行情回调)和逐笔行情(逐笔委托行情回调逐笔成交行情回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数:

# 退订快照行情和逐笔行情

context.unsubscribe(source_id, instruments, exchange_id) 执行该函数将退订市场快照行情和逐笔行情。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context.unsubscribe()函数从 2.0.11 版本开始支持

# 订阅分钟 Bar 行情

context.subscribe('bar',instruments, exchange_id) 执行该函数将订阅 Bar 行情( 分钟 Bar 行情回调)。

  • bar(入参)Bar 类型行情。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)
  • 备注 这种订阅 Bar 行情的方式准备弃用, 新的订阅 Bar 行情的接口为 subscribe_bar

所对应回调函数: 分钟 Bar 行情回调

# 订阅快照行情

context.subscribe_market_data(source_id, instruments, exchange_id) 执行该函数将订阅市场快照行情(快照行情回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数:快照行情回调

# 退订快照行情

context.unsubscribe_market_data(source_id, instruments, exchange_id) 执行该函数将退订市场快照行情。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context.unsubscribe_market_data()函数从 2.0.11 版本开始支持

# 订阅买一卖一队列信息

context.subscribe_bid1_ask1(source_id, instruments, exchange_id) 执行该函数将订阅买一卖一队列信息(买一卖一队列行情回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 买一卖一队列行情回调

备注:context.subscribe_bid1_ask1()函数从 2.0.11 版本开始支持

# 退订买一卖一队列信息

context.unsubscribe_bid1_ask1(source_id, instruments, exchange_id) 执行该函数将退订买一卖一队列信息。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context.unsubscribe_bid1_ask1()函数从 2.0.11 版本开始支持

# 订阅逐笔行情

context.subscribe_tick_by_tick(source_id, instruments, exchange_id) 执行该函数将订阅逐笔行情(包括逐笔委托(逐笔委托行情回调)和逐笔成交(逐笔成交行情回调))。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数:

# 退订逐笔行情

context.unsubscribe_tick_by_tick(source_id, instruments, exchange_id) 执行该函数将退订逐笔行情和逐笔成交。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context.unsubscribe_tick_by_tick()函数从 2.0.11 版本开始支持

# 订阅订单簿行情

context.subscribe_order_book(source_id, instruments, exchange_id) 执行该函数将订阅订单簿行情(订单簿行情回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 订单簿行情回调

# 退订订单簿行情

context.unsubscribe_order_book(source_id, instruments, exchange_id) 执行该函数将退订订单簿行情。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context.unsubscribe_order_book()函数从 2.0.11 版本开始支持

# 订阅全市场快照行情和逐笔行情

context.subscribe_all(source_id) 该函数将订阅全市场股票行情(快照行情回调)和全市场逐笔行情(逐笔委托行情回调逐笔成交行情回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • (返回值)

所对应回调函数:

# 退订全市场快照行情和逐笔行情

context.unsubscribe_all(source_id) 该函数将退订全市场股票行情和全市场逐笔行情。

  • source_id(入参) Source_id(类型) 柜台类型。
  • (返回值)

备注:context.unsubscribe_all()函数从 2.0.11 版本开始支持

# 订阅指定交易所所有证券的某类行情

context.subscribe_all_market(source_id, exchange_id, type) 根据 type 类型订阅不同类型的全市场行情数据。

  • source_id(入参) Source_id(类型) 柜台类型。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • type(入参) AllMarketDataType(类型) 订阅的行情类型。
  • (返回值)

所对应回调函数:

# 退订指定交易所所有证券的某类行情

context.unsubscribe_all_market(source_id, exchange_id, type) 根据 type 类型退订不同类型的全市场行情数据。

  • source_id(入参) Source_id(类型) 柜台类型。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • type(入参) AllMarketDataType(类型) 订阅的行情类型。
  • (返回值)

备注:context.unsubscribe_all_market()函数从 2.0.11 版本开始支持

# 添加交易柜台及资金账户

context.add_account(source_id, account_id, cash_limit) 添加交易柜台及资金账户,才能使用该账户报单。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • cash_limit(入参) 浮点型 (类型),策略资金限额,目前该字段未生效。
  • (返回值)

# 获取账户投资组合

context.get_account_book(source_id, account_id) 获取账户投资组合,直接返回查询结果。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • 账户投资组合(返回值)Book

# 查询柜台系统资金余额

context.query_asset(source_id, account_id) 请求查询资产(策略资金变动回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 策略资金变动回调

备注:context.query_asset()函数从 2.0.11 版本开始支持

# 请求查询信用账户特有信息

context.query_credit_fund_info(source_id, account_id) 请求查询信用账户特有信息,除资金账户以外的信息(融资融券特有帐户数据回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 融资融券特有帐户数据回调

备注:context.query_credit_fund_info()函数从 2.0.8 版本开始支持

# 融资融券业务中现金直接还款请求

context.credit_cash_repay(source_id, account_id, amount) 融资融券业务中请求现金直接还款(融资融券业务中现金直接还款的响应回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • amount(入参) 浮点型 (类型),现金还款的金额。
  • (返回值)

所对应回调函数: 融资融券业务中现金直接还款的响应回调

备注:context.credit_cash_repay()函数从 2.0.8 版本开始支持

# 查询信用账户可融券头寸信息

context.query_credit_ticker_assign_info(source_id, account_id, instrument_id, exchange_id) 请求查询信用账户可融券头寸信息(查询信用账户可融券头寸结果回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • instrument_id(入参) 字符串(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 查询信用账户可融券头寸结果回调

备注:context.query_credit_ticker_assign_info()函数从 2.0.11 版本开始支持

# 查询信用账户负债合约信息

context.query_credit_debt_info(source_id, account_id) 请求查询信用账户负债合约信息(查询信用账户负债合约回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 查询信用账户负债合约回调

备注:context.query_credit_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户指定证券负债信息

context.query_credit_ticker_debt_info(source_id, account_id, instrument_id, exchange_id) 请求查询指定证券负债未还信息(查询信用账户指定证券负债回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • instrument_id(入参) 字符串(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 查询信用账户指定证券负债回调

备注:context.query_credit_ticker_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户待还资金信息

context.query_credit_asset_debt_info(source_id, account_id) 请求查询信用账户待还资金信息(查询信用账户待还资金回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 查询信用账户待还资金回调

备注:context.query_credit_asset_debt_info()函数从 2.0.11 版本开始支持

# 查询沪深全市场的静态行情

context.getAllStaticQuote(source_id) 主动查询沪深全市场的静态行情。

  • source_id(入参) Source_id(类型) 柜台类型。
  • quotes(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"标的代码"+"."+"交易所代码"构成,如"600000.SSE";字典的 value 为QuoteStaticFullInfo(类型),为 key 所对应的全量静态行情

# 查询新三板(北交所)全市场的静态行情

context.getAllNQStaticQuote(source_id) 主动查询新三板(北交所)全市场的静态行情。

  • source_id(入参) Source_id(类型) 柜台类型。
  • quotes(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"标的代码"+"."+"交易所代码"构成,如"430017.BSE";字典的 value 为QuoteNQStaticFullInfo(类型),为 key 所对应的全量静态行情

备注:context.getAllNQStaticQuote()函数从 2.1.3 版本开始支持

# 向客户端发送自定义字符串

context.send_msg(msg) 策略向客户端发送自定义字符串。

  • msg(入参) 字符串(类型) 消息。
  • result(返回值) bool(类型) 发送成功返回 True;不成功返回 False。

所对应回调函数: 收到客户端发送消息回调

# 向策略发送自定义字符串

context.send_msg_to_other_strategy(strategy_id , msg ) 策略向其他策略发送自定义字符串。

  • strategy_id(入参) 字符串(类型) 策略 id。
  • msg(入参) 字符串(类型) 向其他策略发送自定义字符串。

所对应回调函数: 收到其他策略发送消息回调

# 下单函数

context.insert_order(symbol, exchange, account, limit_price, volume, type, side, offset=Offset.Open, hedge_flag=HedgeFlag.Speculation, business_type=BusinessType.CASH, turns=0) 下单函数(订单信息更新回调)。

  • symbol(入参) 字符串(类型) 标的代码。
  • exchange(入参) Exchange_id(类型) 交易所代码。
  • account(入参) 字符串 (类型),资金账号。
  • limit_price(入参) 浮点型 (类型),价格。
  • volume(入参) 整形 (类型),下单数量。
  • type(入参) PriceType (类型),价格类型。
  • side(入参) Side (类型),买卖方向。
  • offset(入参)(选填) Offset (类型),开平仓标识。
  • hedge_flag(入参)(选填) HedgeFlag (类型),投机套保标识。
  • business_type(入参)(选填) BusinessType (类型),证券业务类型。
  • turns(入参)(选填) 整形 (类型),轮次。
  • order_id(返回值) 长整形(类型) ,订单 ID

所对应回调函数: 订单信息更新回调

# 撤单函数

context.cancel_order(order_id) 撤单函数(撤单失败回调 )。

  • order_id(入参) 长整形(类型) 原订单号。
  • order_action_id(返回值) 长整形(类型) ,撤单订单 ID

所对应回调函数:

# 双节点账户间资金划转

context.fund_transfer(account, password, transfer_type, amount) 资金划转(双中心用户间资金划转)(资金划转结果回调)。

  • account(入参) 字符串(类型) 账户 ID。
  • password(入参) 字符串(类型) ,密码
  • transfer_type(入参) FUND_TRANSFER_TYPEFundTransferType(类型) ,资金划转类型
  • amount(入参) 浮点型(类型) ,金额
  • result(返回值) 长整形(类型) 发送成功返回 1;不成功返回 0。

所对应回调函数: 资金划转结果回调

# 对方节点资金查询(限双节点)

context.query_other_server_fund(account, query_type) 资金查询(双中心用户间资金查询)对方节点资金查询回调(限双节点)

  • account(入参) 字符串(类型) 账户 ID。
  • query_type(入参) FUND_QUERY_TYPEFundQueryType(类型) ,资金查询类型
  • result(返回值) 长整形(类型) 发送成功返回 1;不成功返回 0。

所对应回调函数: 对方节点资金查询回调(限双节点)

# 登录算法交易服务器

context.login_algo_server(source_id, account_id, user, password) XTP 算法交易业务中登录算法交易服务器请求(登录算法交易服务器回调)。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • user(入参) 字符串(类型) ,算法交易用户名。
  • password(入参) 字符串 (类型),算法交易密码。
  • (返回值)

所对应回调函数: 登录算法交易服务器回调

备注:context.login_algo_server()函数从 2.0.12 版本开始支持

# 创建算法母单

context.create_algo_strategy(account_id, strategy_type, client_strategy_id, strategy_param) XTP 算法交易业务中用户创建策略请求(创建算法母单结果回调)。

  • account_id(入参) 字符串 (类型),资金账号。
  • strategy_type(入参) 长整形(类型) ,需要创建的策略类型。
  • client_strategy_id(入参) 长整形(类型) ,用户自定义 id,帮助用户定位。
  • strategy_param(入参) 字符串 (类型),策略参数,参数参考文档
  • (返回值)

所对应回调函数: 创建算法母单结果回调

备注:context.create_algo_strategy()函数从 2.0.12 版本开始支持

# 销毁算法母单

context.destroy_algo_strategy(account_id, xtp_strategy_id) XTP 算法交易业务中用户销毁策略请求(销毁算法母单回调)。

  • account_id(入参) 字符串(类型),资金账号。
  • xtp_strategy_id(入参) 长整形(类型) ,需要销毁的策略在 xtp 系统中的 id。
  • (返回值)

所对应回调函数: 销毁算法母单回调

备注:context.destroy_algo_strategy()函数从 2.0.12 版本开始支持

# 启动算法母单

context.start_algo_strategy(account_id, xtp_strategy_id) XTP 算法交易业务中用户开始运行策略请求(启动算法母单回调)。

  • account_id(入参) 字符串(类型),资金账号。
  • xtp_strategy_id(入参) 长整形(类型) ,需要运行的策略在 xtp 系统中的 id。
  • (返回值)

所对应回调函数: 启动算法母单回调

备注:context.start_algo_strategy()函数从 2.0.12 版本开始支持

# 停止算法母单

context.stop_algo_strategy(account_id, xtp_strategy_id) XTP 算法交易业务中用户停止运行策略请求(停止算法母单回调)。

  • account_id(入参) 字符串(类型),资金账号。
  • xtp_strategy_id(入参) 长整形(类型) ,需要停止运行的策略在 xtp 系统中的 id。
  • (返回值)

所对应回调函数: 停止算法母单回调

备注:context.stop_algo_strategy()函数从 2.0.12 版本开始支持

# 查询算法母单

context.query_algo_strategy(account_id, strategy_type = 0, client_strategy_id = 0, xtp_strategy_id = 0) XTP 算法交易业务中用户查询策略请求(所对应回调函数: 查询算法母单回调)。

  • account_id(入参) 字符串(类型),资金账号。
  • strategy_type(入参) 长整形(类型) ,需要创建的策略类型,可填 0。
  • client_strategy_id(入参) 长整形(类型) ,用户自定义 id,帮助用户定位,可填 0。
  • xtp_strategy_id(入参) 长整形(类型) ,需要查询的策略在 xtp 系统中的 id,如果指定,就一定按指定查询,如果填 0,则按其他筛选条件查询。
  • (返回值)

所对应回调函数: 查询算法母单回调

备注:context.query_algo_strategy()函数从 2.0.12 版本开始支持

# 获取系统支持申赎的全部 ETF

context.load_etf_info() 获取系统支持申赎的全部 ETF。

  • result(返回值) bool(类型) 加载成功返回 True; 不成功返回 False。

备注:context.load_etf_info()函数从 2.0.12 版本开始支持

# 获取系统支持申赎的全部 ETF 清单

context.get_all_etfs() 获取系统支持申赎的全部 ETF 清单。

  • etf_bases(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE";字典的 value 为ETFBase(类型),为 key 所对应的 ETF 清单

备注:context.get_all_etfs()函数从 2.0.12 版本开始支持

# 获取指定 ETF 清单

context.get_etf_base(exchange, etf) 获取指定 ETF 清单。

  • exchange(入参) 字符串(类型),交易所代码。
  • etf(入参) 字符串(类型),ETF 代码,若为空字符串,则查询指定交易所的所有 ETF 清单。
  • etf_bases(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE";字典的 value 为ETFBase(类型),为 key 所对应的 ETF 清单

备注:context.get_etf_base()函数从 2.0.12 版本开始支持

# 获取指定 ETF 清单

context.get_etf_all_baskets(etf_key) 获取指定 ETF 的所有成分股列表。

  • etf_key(入参) 字符串(类型),内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE"。
  • etf_baskets(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 成分股标的代码"+"."+"ETF 成分股交易所代码"构成,如"688772.SSE";字典的 value 为ETFBasket(类型),为 key 所对应的 ETF 成分股

备注:context.get_etf_all_baskets(etf_key)函数从 2.0.12 版本开始支持

# 获取指定 ETF 成分股(按条件查询)

context.get_etf_baskets(etf_key, cpt_exchange, cpt_ist) 获取指定 ETF 的部分成分股列表。

  • etf_key(入参) 字符串(类型),内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE"。
  • cpt_exchange(入参) 字符串(类型),ETF 成分股的交易所代码。
  • cpt_ist(入参) 字符串(类型),ETF 成分股标的代码, 为空字符串时,则查询指定交易所的该 ETF 的所有成分股。
  • etf_baskets(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 成分股标的代码"+"."+"ETF 成分股交易所代码"构成,如"688772.SSE";字典的 value 为ETFBasket(类型),为 key 所对应的 ETF 成分股

备注:context.get_etf_baskets(etf_key, cpt_exchange, cpt_ist)函数从 2.0.12 版本开始支持

# 输出日志

context.log.info(msg) 输出日志。还可以为 context.log.warning context.log.error context.log.debug 等

  • msg(入参) 字符串(类型) 原订单号。
  • (返回值)

# 加载客户自定义库文件

context.import_local_lib(lib_name) 加载客户自定义库文件

  • lib_name(入参) 字符串(类型),库文件名,含扩展名
  • impl(返回值) 库实例,内含客户自定义的各种工具类、工具函数

# 订阅任意分钟 Bar 行情

context.subscribe_bar(codes, period, on_bar_callback)

  • codes(入参)(必填) string 类型的数组,表示要订阅的股票代码,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]。
  • period(入参)(选填) 字符串类型,表示要订阅的 Bar 行情的周期,如 "5m" 表示 5 分钟,取值范围为["1m", "60m"], 即 1 到 60 分钟,默认值为"1m",即一分钟
  • on_bar_callback(context, bar)(入参)(选填),接收 Bar 行情的回调函数,若不填则通过默认的回调函数 on_bar 接收 Bar 行情, 参数 bar 表示收到的 Bar 行情,传入的回调函数 on_bar_callback 和 默认回调函数 on_bar 的函数参数必须相同
  • 返回值 string 类型的数组,表示订阅失败的股票代码
  • 备注 context.subscribe_bar 从 2.1.2 版本开始支持

# 取消任意分钟 Bar 行情的订阅

context.unsubscribe_bar(codes, period)

  • codes(入参)(必填) string 类型的数组,表示要取消订阅的股票代码,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]。

  • period(入参)(选填) 字符串类型,表示要取消订阅的 Bar 行情的周期,如 "5m" 表示 5 分钟,取值范围为["1m", "60m"], 即 1 到 60 分钟,默认值为"1m",即一分钟

  • 返回值 string 类型的数组,表示订阅失败的股票代码

  • 备注

    1、如果 codes 列表中包含了一支从未订阅过的股票,则对该股票 Bar 行情的取消订阅会失败

    2、context.unsubscribe_bar 从 2.1.2 版本开始支持

# 通用指标订阅

context.subscribe_indicator(type, codes, on_indicator_callback)

  • type(入参)(必填),string 类型,指标类型参数,目前仅支持 "etf"

  • codes(入参)(必填) string 类型的数组,表示要订阅的指标的代码,其中指标代码支持 "510990.SH" 和 "510990.SSE" 两种格式,如["510990.SSE","159974.SZ"]

  • on_indicator_callback(context, type, indicator)(入参)(选填),接收指标行情的回调函数,若不填则通过默认回调函数 on_indicator 接收指标行情,indicator 的类型为 dict, 函数 on_indicator_callback 和 on_indicator 和函数参数必须相同,其中 type 为指标类型,indicator 为 dict 类型的指标数据

  • 返回值 string 类型的数组,表示订阅失败的股票代码

  • 备注

    1、context.subscribe_indicator 从 2.1.2 版本开始支持

# 通用指标取消订阅

context.unsubscribe_indicator(type, codes, on_indicator_callback)

  • type(入参)(必填),string 类型,指标类型参数,目前仅支持 "etf"

  • codes(入参)(必填) string 类型的数组,表示要取消订阅的股票代码,其中股票代码支持 "510990.SH" 和 "510990.SSE" 两种格式,如["510990.SSE","159974.SZ"]。

  • on_indicator_callback(context, indicator)(入参)(选填),接收指标行情的回调函数,若不填则通过默认回调函数 on_indicator 接收指标行情,indicator 的类型为 dict, 函数 on_indicator_callback 和 on_indicator 和函数参数必须相同

  • 返回值 string 类型的数组,表示订阅失败的股票代码

  • 备注

    1、context.unsubscribe_indicator 从 2.1.2 版本开始支持

# 同步查询当天 Bar 行情

def context.query_bar_today(codes, period)

  • codes (入参)(必填),类型为 list, 股票代码列表,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]

  • period (入参)(选填),Bar 行情周期,类型为 String,如 "2m" 代表 2 分钟, 单位为分钟,取值范围为 1 分钟到 60 分钟,即 ["1m", "60m"],默认值为 "1m"

  • 返回值 类型为 dict, key 为股票代码,并且与参数 codes 中的 股票代码格式一致, value 为对应的 Bar 结构体数组

  • 备注

    1、context.query_bar_today 从 2.1.2 版本开始支持

# 异步查询当天的 Bar 行情

def context.query_bar_today_async(codes, query_bar_today_callback, period, query_id)

  • codes: (入参)(必填),类型为 list, 股票代码列表,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]

  • query_bar_today_callback (入参)(必填),接收查询到的 Bar 行情的回调函数

  • period (入参)(选填),Bar 行情周期,类型为 String,如 "2m" 代表 2 分钟, 单位为分钟,取值范围为 1 分钟到 60 分钟,即 ["1m", "60m"],默认值为 "1m"

  • query_id(入参)(选填),整型,取值范围为 [0, 4294967295],默认值为 0, 用作回调函数的入参

  • 返回值

  • 备注

    1、query_bar_today_callback(context, today_bar, query_id) 接收 3 个参数,其中 today_bar 类型为 dict, 其 key 为 code 码, value 为对应的 Bar 结构体数组, query_id 为调用 query_bar_today_async 时传入的 query_id

    2、context.query_bar_today_async 从 2.1.2 版本开始支持

# 查询历史 Bar 行情

def context.query_bar(params)

  • params (入参)(必填),类型为 dict, 查询 Bar 使用的参数

  • 返回值 类型为 list, list 的元素为 Bar 结构体

  • 备注

    1、params 格式如下所示

    params = {
        "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", # 股票代码
        "exchange_id": "SZE",   # 交易所代码
        "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", ##String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" #String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询 Bar
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    2、只能查询到当天以前的数据

    3、context.query_bar 从 2.1.2 版本开始支持

# 异步查询历史 Bar 行情

def context.query_bar_async(params, query_bar_callback, query_id)

  • params (入参)(必填),类型为 json, 查询 Bar 使用的参数

  • query_bar_callback (入参)(必填),接收 Bar 行情的回调函数

  • query_id (入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 返回值

  • 备注

    1、params 格式如下所示

    params = {
        "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", # 股票代码
        "exchange_id": "SZE",   # 交易所代码
        "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", ##String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" #String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询 Bar 行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    2、query_bar_callback(context, bars, query_id) 接收 3 个参数,其中 bars 的类型为 list,其元素为 Bar 结构体行情,query_id 为调用 query_bar_async 时传入的 query_id

    3、只能查询到当天以前的数据

    4、context.query_bar_async 从 2.1.2 版本开始支持

# 查询市场行情数据

def context.query_market_data(params)

  • params (入参)(必填),类型为 json, 查询市场行情数据使用的参数

  • 返回值 市场行情数据,类型为 list, 其元素类型为 Quote

  • 备注

    1、params 格式如下所示

     params = {
         "code": "000001.SZ",  # 000001.SZ 600000.SH 证券代码  SZ:深证 SH:上海
         "instrument": "000002", # 股票代码
         "exchange_id": "SZE",   # 交易所代码
         "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
         "end_date": "2024-01-12 15:00:00" #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
     }
    
     # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    2、只能查询到当天以前的数据

    3、context.query_market_data 从 2.1.2 版本开始支持

# 异步查询市场行情数据

def context.query_market_data_async(params, query_market_data_callback, query_id)

  • params (入参)(必填),类型为 json, 查询市场行情数据使用的参数

  • query_market_data_callback (入参)(必填),接收行情数据的回调函数

  • query_id (入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 返回值

  • 备注

    1、params 格式如下所示

     params = {
         "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
         "instrument": "000002", # 股票代码
         "exchange_id": "SZE",   # 交易所代码
         "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
         "end_date": "2024-01-12 15:00:00" #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
     }
    
     # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    2、query_market_data_callback(context, quotes, query_id) 接收 3 个参数,其中 quotes 的类型为 list,其元素类型为查询到 Quote 结构体行情数据,query_id 为调用 query_market_data_async 时传入的 query_id

    3、只能查询到当天以前的数据

    4、context.query_market_data_async 从 2.1.2 版本开始支持

# 同步数据查询接口

def context.query_data(method, params, out_format)

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,类型为 dict,里边的参数根据 method 的不同而变化

  • out_format (入参)(选填),类型为OutFormat, 详见OutFormat,用来指定返回值的格式, 默认值为 OutFormat.List

  • 返回值 dict 类型的结果集,如下所示,其中当 code 的值为 200 时表示查询成功,其它值均表示查询失败

    {
      "code":200    # 错误码, 当code的值为 200时表示查询成功,其它值均表示查询失败
      "msg":""      # 错误消息
      "data":       # 查询到的数据,格式由参数 out_format 指定 可能为 List、DataFrame或Ndarray
    }
    
    1
    2
    3
    4
    5
  • 备注:

    1、method 目前支持的参数有

    (1)"bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", # 股票代码
        "exchange_id": "SZE",   # 交易所代码
        "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", #String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" #String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    (2)"market_data": 查询市场数据,此时 params 参数如下所示

        params = {
          "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", # 股票代码
          "exchange_id": "SZE",   # 交易所代码
          "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00"  #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
      }
    
      # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    2、查询历史数据时只能查询到当天以前的数据

    3、context.query_data 从 2.1.2 版本开始支持

# 异步数据查询接口

def context.query_data_async(method, params, query_data_callback, out_format, query_id)

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,类型为 dict,里边的参数根据 method 的不同而变化

  • query_data_async_callback 接收查询到的数据的回调函数

  • out_format (入参)(选填),类型为OutFormat,详见OutFormat, 用来指定查询结果的格式, 默认值为 OutFormat.List

  • query_id (入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 返回值

  • 备注

    1、method 目前支持的参数有

    (1)"bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", # 股票代码
        "exchange_id": "SZE",   # 交易所代码
        "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", ##String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" #String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    (2)"market_data": 查询市场数据,此时 params 参数如下所示

        params = {
          "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", # 股票代码
          "exchange_id": "SZE",   # 交易所代码
          "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00" #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
      }
    
      #  params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    2、query_data_callback(context, result, query_id) 接收 3 个参数

    (1) result 为 dict 类型的结果集,如下所示,其中当 code 的值为 200 时表示查询成功,其它值均表示查询失败

    {
      "code":200    # 错误码,当code的值为 200时表示查询成功,其它值均表示查询失败
      "msg":""      # 错误消息
      "data":       # 查询到的数据,格式由参数 out_format 指定 可能为 List、DataFrame或Ndarray
    }
    
    1
    2
    3
    4
    5

    (2) query_id 为调用 query_data_async 时传入的 query_id

    3、查询历史数据时只能查询到当天以前的数据

    4、context.query_data_async 从 2.1.2 版本开始支持

# 分页数据查询接口

def context.query_data_page(method, params, out_format)

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,类型为 dict,里边的参数根据 method 的不同而变化

  • out_format (入参)(选填),类型为OutFormat, 详见OutFormat,用来指定返回数据的格式, 默认值为 OutFormat.List

  • 返回值 DataPageInfo 类型的对象,如下所示,

    class DataPageInfo :
      def __init__(self):
          self.currentPage = None # 当前页码数
          self.pageSize = None # 每页记录数
          self.totalCount = None # 总记录数
          self.totalPage = None # 总页数
          self.data = {
              "code": 200,   # 错误码,当code的值为 200时表示查询成功,其它值均表示查询失败
              "msg": "",     # 错误消息
              "data": # 查询到的数据,格式由参数out_format指定, 可能为List、DataFrame或Ndarray
          }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  • 备注

    1、method 目前支持的参数有

    (1)"bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", # 股票代码
        "exchange_id": "SZE",   # 交易所代码
        "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", #String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre", #String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
        "current_page": 1,  #  当前页,不传 默认当前页 为1
        "page_size": 10000  #  分页数量,最大为10000
    }
    
    # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    (2)"market_data": 查询市场数据,此时 params 参数如下所示

        params = {
          "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", # 股票代码
          "exchange_id": "SZE",   # 交易所代码
          "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
          "current_page": 1,  #  当前页,不传 默认当前页 为1
          "page_size": 10000  #  分页数量,最大为10000
      }
    
      # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    3、查询历史数据时只能查询到当天以前的数据

    4、context.query_data_page 从 2.1.2 版本开始支持

    # 异步分页数据查询接口

def context.query_data_page_async(method, params, query_data_page_async_callback, out_format, query_id)

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,类型为 dict,里边的参数根据 method 的不同而变化

  • query_data_page_async_callback (入参)(必填), 接收分页数据的回调函数

  • out_format (入参)(选填),类型为OutFormat, 详见OutFormat,用来指定返回的数据的格式, 默认值为 OutFormat.List

  • query_id (入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 返回值

  • 备注

    1、method 目前支持的参数有

    (1)"bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", # 股票代码
        "exchange_id": "SZE",   # 交易所代码
        "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", ##String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre", #String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
        "current_page": 1,  #  当前页,不传 默认当前页 为1
        "page_size": 10000  #  分页数量,最大为10000
    }
    
    # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    (2)"market_data": 查询市场数据,此时 params 参数如下所示

        params = {
          "code": "000001.SZ",  # 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", # 股票代码
          "exchange_id": "SZE",   # 交易所代码
          "start_date": "2024-01-12 10:00:00", #String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00", #String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
          "current_page": 1,  #  当前页,不传 默认当前页 为1
          "page_size": 10000  #  分页数量,最大为10000
      }
    
      # params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    2、query_data_page_async_callback(context, data_page_info, query_id) 接收 3 个参数

    (1) data_page_info 为 DataPageInfo 类型的分页数据 (2) query_id 为调用 query_data_async 时传入的 query_id

    3、查询历史数据时只能查询到当天以前的数据

    4、context.query_data_page_async 从 2.1.2 版本开始支持

# 二、python api 回调函数接口

# 策略启动前

pre_start(context) 启动前调用函数,策略连接上行情交易柜台后调用,本函数回调后,策略可以执行添加时间回调、获取策略持仓等操作。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • (返回值)

# 策略启动后

post_start(context) 启动后调用函数。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • (返回值)

# 策略退出前

pre_stop(context) 启动退出前该函数将被回调,可以在此方法中添加一些策略清理、回收工作。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • (返回值)

# 策略退出后

post_stop(context) 策略退出后该函数将被回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • (返回值)

# 快照行情回调

on_quote(context, quote ) 当策略收到某一标的物实时快照行情时,该回调函数将会被触发。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • quote(入参) 类型 Quote 实时快照行情。
  • (返回值)

# 订单簿行情回调

on_order_book(context, order_book) 收到订单簿消息时触发该回调。这个行情需要 level2 行情权限。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • order_book(入参)OrderBook(类型) 订单簿行情。
  • (返回值)

备注:订单簿行情是中泰证券根据逐笔行情合成的类快照行情,频率极快,只要市场行情(委托或成交)发生变化都会被推送。

# 买一卖一队列行情回调

on_bid1ask1(context, b1a1) 当策略收到某一标的物买一卖一队列信息时,该回调函数将会被触发。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • b1a1(入参) 类型 Bid1Ask1 买一卖一队列信息。
  • (返回值)

备注:on_bid1ask1()函数从 2.0.11 版本开始支持

# 分钟 Bar 行情回调

on_bar(context,bar ) 当策略收到某一标的物实时 Bar 行情时,该回调函数将会被触发。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • bar(入参) Bar(类型) 快照行情。
  • (返回值)

# 通用指标回调函数

on_indicator(context, type, indicator) 如果通过 subscribe_indicator 函数订阅通用指标时没有传入接收指标行情的回调函数,则通过 on_indicator 接入指标数据

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • type(入参)(string 类型) 指标的类型
  • indicator (入参) dict 类型的指标数据

# 订单信息更新回调

on_order(context, order ) 订单信息的更新会自动触发该函数被调用。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • order(入参)Order(类型) 订单信息。
  • (返回值)

备注:

  • 如果订单为废单,那么on_order回调函数只会被触发一次,订单状态为Error。
  • 对于非废单的订单,on_order回调函数最多被触发两次,第一次被触发表示订单已经报到交易所的确认消息,函数中order的订单状态为 'Pending' (等待中);第二次被触发表示订单达到最终状态的消息。其中最终状态包括:
    • Cancelled : '已撤单'
    • Filled: '已成交'
    • PartialCancel: '部分撤单'
订单的状态分类:
1 'Submitted' : '已提交':kungfu平台发给柜台,还没有收到柜台委托确认消息的状态。
2 'Pending' : '等待中':收到柜台的委托确认消息。
3 'Cancelled' : '已撤单':收到柜台全部撤单消息。
4 'Error' : '错误':收到柜台拒单消息。
5 'Filled' : '已成交':收到柜台全部成交消息。
6 'PartialCancel' : '部分撤单':收到柜台部分撤单消息。
1
2
3
4
5
6
7

# 订单成交回报回调

on_trade(context, trade ) 策略订单成交信息的更新会自动触发该函数被调用。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • trade(入参)Trade(类型) 订单信息。
  • (返回值)

# 逐笔委托行情回调

on_entrust(context, entrust ) 收到逐笔委托行情时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • entrust(入参)Entrust(类型) 逐笔委托行情。
  • (返回值)

备注:

上海市场撤单在逐笔委托里面,通过 entrust.price_type == PriceType.ShLevel2CancelOrder 来找到撤单。

深圳市场撤单在逐笔成交里面,通过 transaction.exec_type != ExecType.Trade 来找到撤单。

# 逐笔成交行情回调

on_transaction(context, transaction ) 收到逐笔成交行情时触发该回调。这个行情需要 level2 行情权限

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • transaction(入参)Transaction(类型) 逐笔成交行情。
  • (返回值)

备注:

深圳市场撤单在逐笔成交里面,通过 transaction.exec_type != ExecType.Trade 来找到撤单。

上海市场撤单在逐笔委托里面,通过 entrust.price_type == PriceType.ShLevel2CancelOrder 来找到撤单。

# 撤单失败回调

on_order_action_error(context, err ) 撤单失败反馈信息回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • err(入参) OrderActionError(类型) 撤单失败反馈信息。
  • (返回值)

# 策略资金变动回调

on_asset(context, asset ) 策略交易引致策略资金变化回调

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • asset(入参) Asset(类型) 资金账户数据。
  • (返回值)

备注:on_asset()函数从 2.0.11 版本开始支持

# 资金划转结果回调

on_fund_transfer(context, feedback ) 双节点用户策略发起的两个节点间资金账号划转引致资金账号可用余额发生变动,则该回调函数被触发。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • feedback(入参) FundTransferFeedBack(类型) 资金划转反馈消息。
  • (返回值)

# 对方节点资金查询回调(限双节点)

on_query_other_server_fund(context, feedback ) 该接口仅限双中心用户,查询对方中心资金情况结果。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • feedback(入参) FundQueryFeedBack(类型) 资金查询反馈消息。
  • (返回值)

# 收到客户端发送消息回调

on_client_msg(context, msg ) 策略通过该回调接收客户端发送来的消息。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • msg(入参) 字符串(类型),客户端给策略发送来的消息。
  • (返回值)

# 收到其他策略发送消息回调

on_other_strategy_msg(context, source_strategy_id, msg) 策略通过该回调接收其他策略发送来的消息。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • source_strategy_id(入参) 策略 id。
  • msg(入参) 字符串(类型),客户端给策略发送来的消息。

on_other_strategy_msg()函数从 2.1.2 版本开始支持

# 融资融券特有帐户数据回调

on_query_credit_fund_info(context, crdfundinfo) 收到融资融券特有帐户数据时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • crdfundinfo(入参)CreditFundInfo(类型) 融资融券特有帐户数据。
  • (返回值)

备注:on_query_credit_fund_info()函数从 2.0.8 版本开始支持

# 融资融券业务中现金直接还款的响应回调

on_credit_cash_repay(context, crd_cash_repay_info) 收到信融资融券业务中现金直接还款响应时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • crd_cash_repay_info(入参)CreditCashRepayRsp(类型) 现金直接还款通知信息。
  • (返回值)

备注:on_credit_cash_repay()函数从 2.0.8 版本开始支持

# 查询信用账户可融券头寸结果回调

on_query_credit_ticker_assign_info(context, crd_position_stk_info) 收到信用账户可融券头寸信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • crd_position_stk_info(入参)CrdPositionStkInfo(类型) 融券头寸证券信息。
  • (返回值)

备注:on_query_credit_ticker_assign_info()函数从 2.0.11 版本开始支持

# 查询信用账户负债合约回调

on_query_credit_debt_info(context, crd_debt_info) 收到信用账户负债合约信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • crd_debt_info(入参)CrdDebtInfo(类型) 负债合约信息。
  • (返回值)

备注:on_query_credit_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户指定证券负债回调

on_query_credit_ticker_debt_info(context, crd_debt_stk_info) 收到指定证券负债未还信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • crd_debt_stk_info(入参)CrdDebtStockInfo(类型) 指定证券负债未还信息。
  • (返回值)

备注:on_query_credit_ticker_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户待还资金回调

on_query_credit_asset_debt_info(context, remain_amount) 收到信用账户待还资金信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • remain_amount(入参) 浮点型(类型) 信用账户待还资金。
  • (返回值)

备注:on_query_credit_asset_debt_info()函数从 2.0.11 版本开始支持

# 登录算法交易服务器回调

on_login_algo_server(context, success) 收到登录 xtp 算法交易服务器反馈信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • success(入参) 布尔型(类型),登录是否成功。
  • (返回值)

备注: on_login_algo_server()函数从 2.0.12 版本开始支持

# 创建算法母单结果回调

on_create_algo_strategy(context, algo_strategy_info) 收到 XTP 算法交易创建策略反馈信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_create_algo_strategy()函数从 2.0.12 版本开始支持

# 查询算法母单回调

on_query_algo_strategy(context, algo_strategy_info) 收到 XTP 算法交易查询策略反馈信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_query_algo_strategy()函数从 2.0.12 版本开始支持

# 启动算法母单回调

on_start_algo_strategy(context, algo_strategy_info) 收到 XTP 算法交易开始运行策略反馈信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_start_algo_strategy()函数从 2.0.12 版本开始支持

# 停止算法母单回调

on_stop_algo_strategy(context, algo_strategy_info) 收到 XTP 算法交易停止运行策略反馈信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_stop_algo_strategy()函数从 2.0.12 版本开始支持

# 销毁算法母单回调

on_destroy_algo_strategy(context, algo_strategy_info) 收到 XTP 算法交易销毁策略反馈信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_destroy_algo_strategy()函数从 2.0.12 版本开始支持

# 算法母单变动回调

on_algo_strategy_info(context, algo_strategy_info) 收到 XTP 算法交易策略信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_algo_strategy_info()函数从 2.0.12 版本开始支持

# 算法母单状态变动回调

on_algo_strategy_state_report(context, algo_strategy_state_report) 收到 XTP 算法交易运行时策略状态信息时触发该回调。

  • context(入参) 策略全局对象,通过点标记(”.”)来调用该对象中函数与变量。
  • algo_strategy_state_report(入参)AlgoStrategyStateReport(类型) XTP 算法交易策略状态结构体数据。
  • (返回值)

备注: on_algo_strategy_info()函数从 2.0.12 版本开始支持

# 三、python 工具函数包接口

# kungfu.wingchun.utils

使用方法示例:

import os
import sys
from   kungfu.wingchun.constants import OrderStatus
import kungfu.wingchun.utils as wc_utils

order_status = OrderStatus.Filled

if wc_utils.is_final_status(order_status):
    print("order_status[", order_status, "] is final status")
else:
    print("order_status[", order_status, "] is not final status")

1
2
3
4
5
6
7
8
9
10
11
12

# 判定某一订单状态是否为订单终结状态

is_final_status(status) 判定某一订单状态是否为订单终结状态(订单终结状态含:OrderStatus.Filled, OrderStatus.Error, OrderStatus.PartialFilledNotActive, OrderStatus.Cancelled)。

  • status(入参) [OrderStatus](### 订单状态标识)(类型) 订单状态标识。
  • result(返回值) bool(类型) 判定是终结状态,则返回 True; 判定不是,则返回 False。

--- -->

# kungfu.msg.utils

使用方法示例:

import os
import sys
import pywingchun
import kungfu.msg.utils as msg_utils

entrust = pywingchun.Entrust()
entrust.instrument_id = "600000"
entrust.exchange_id = "SSE"

entrust_dict = msg_utils.object_as_dict(entrust)

print("entrust_dict[instrument_id] = {}, entrust_dict[exchange_id] = {}".format(entrust_dict['instrument_id'], entrust_dict['exchange_id']))

1
2
3
4
5
6
7
8
9
10
11
12
13

# 将 python 对象转换为 dict(字典)类型

object_as_dict(obj) 将 python 对象转换为 dict(字典)类型

  • obj(入参) python 对象。
  • result(返回值) dict(类型) 与入参 python 对象相对应的字典表示形式。

# C++ api 接口

# 四、C++ api 主调函数接口

# 获取策略配置参数文件的路径

const std::string getParamFileDir() 获取策略配置参数文件的路径。该函数为 context 的成员函数。

  • dir字符串(类型) ,策略配置参数文件的路径。

# 添加一次性定时任务

// 函数原型
virtual void add_timer(int64_t nanotime, const std::function<void(yijinjing::event_ptr)> &callback, bool enforce)
1
2

context::add_timer 添加定时触发的函数。该函数为 context 的成员函数。

  • nanotime(入参) 长整形(类型) 特定纳秒时间。
  • callback(入参) 回调函数(类型) ,特定时间要触发的回调函数。
  • enforce(入参) 布尔型(类型) ,指定是否强制执行,默认值为 false。
  • (返回值)

备注:

1.add_timer()函数的第三个参数 enforce,是从 2.0.11 版本开始支持,之前的版本只支持 nanotime 和 callback 两个参数;

2.参数 enforce 的值为 false 时,系统将对参数 nanotime 的值进行校验,如果 nanotime 的值小于当前时间,则定时操作失败;

3.参数 enforce 的值为 true 时,系统不校验参数 nanotime 的值;

# 添加周期性定时任务

// 函数原型
virtual void add_time_interval(int64_t duration, const std::function<void(yijinjing::event_ptr)> &callback)
1
2

context::add_time_interval 注册每过一段时间周期性触发的回调函数,时长由参数 nano 决定, 单位是纳秒。该函数为 context 的成员函数。

  • nano(入参) 长整形(类型) 特定纳秒时间。
  • callback(入参) 回调函数(类型) ,特定时间要触发的回调函数。
  • (返回值)

# 添加交易柜台及资金账户

// 函数原型
virtual void add_account(const std::string &source_id, const std::string &account, double cash_limit)
1
2

context::add_account 添加交易柜台及资金账户,才能使用该账户报单。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • cash_limit(入参) double (类型),策略资金限额,目前该字段未生效。
  • (返回值)

# 下单函数

// 函数原型
virtual uint64_t insert_order(const std::string &instruments, const std::string &exchange_id, const std::string &account_id, double price, int64_t volume, PriceType priceType, Side side, Offset offset = Offset::Open, HedgeFlag hedge_flag = HedgeFlag::Speculation,  BusinessType business_type = BusinessType::CASH, int64_t turns = 0)
1
2

context::insert_order 下单函数。该函数为 context 的成员函数。

  • instruments(入参) string(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • account_id(入参) 字符串 (类型),资金账号。
  • price(入参) 浮点型 (类型),价格。
  • volume(入参) 整形 (类型),下单数量。
  • priceType(入参) PriceType (类型),价格类型。
  • side(入参) Side (类型),买卖方向。
  • offset(入参)(选填) Offset (类型),开平仓标识。
  • hedge_flag(入参)(选填) HedgeFlag (类型),投机套保标识。
  • business_type(入参)(选填) BusinessType (类型)业务类型。
  • turns(入参)(选填) [int] 表示下单轮数。
  • order_id(返回值) uint64_t(类型) ,订单 ID

所对应回调函数: 订单信息更新回调

# 撤单函数

// 函数原型
virtual uint64_t cancel_order(uint64_t order_id)
1
2

context::cancel_order 撤单函数。该函数为 context 的成员函数。

  • order_id(入参) 长整形(类型) 原订单号。
  • order_action_id(返回值) 长整形(类型) ,撤单订单 ID

所对应回调函数:撤单失败回调

# 双节点账户间资金划转

// 函数原型1
virtual uint64_t fund_transfer(const std::string &account , const std::string &password,FUND_TRANSFER_TYPE transfer_type, double amount)
1
2

context::fund_transfer 资金划转函数(双中心用户间资金划转)。该函数为 context 的成员函数。

  • account(入参) string(类型) 账户 ID。
  • password(入参) string(类型) 密码。
  • transfer_type(入参) FUND_TRANSFER_TYPE(类型) 资金划转类型。
  • amount(入参) 浮点型(类型) 金额。
  • result(返回值) 长整形(类型) ;发送成功返回 1;不成功返回 0。

所对应回调函数: 资金划转结果回调

备注: context::fund_transfer(const std::string &account , const std::string &password,FUND_TRANSFER_TYPE transfer_type, double amount), 在 2.0.9、2.0.10、2.0.11 三个版本中支持,从 2.1.0 版本开始废弃;

// 函数原型2
virtual uint64_t fund_transfer(const std::string &account , const std::string &password,FundTransferType transfer_type, double amount)
1
2

context::fund_transfer 资金划转函数(双中心用户间资金划转)。该函数为 context 的成员函数。

  • account(入参) string(类型) 账户 ID。
  • password(入参) string(类型) 密码。
  • transfer_type(入参) FundTransferType(类型) 资金划转类型。
  • amount(入参) 浮点型(类型) 金额。
  • result(返回值) 长整形(类型) ;发送成功返回 1;不成功返回 0。

所对应回调函数: 资金划转结果回调

备注: context::fund_transfer(const std::string &account , const std::string &password,FundTransferType transfer_type, double amount), 从 2.1.0 版本开始支持;

# 对方节点资金查询(限双节点)

// 函数原型1
virtual uint64_t query_other_server_fund(const std::string &account, const std::string &password, FUND_QUERY_TYPE query_type)
1
2

context::query_other_server_fund 资金查询函数(双中心用户间资金查询)。该函数为 context 的成员函数。

  • account(入参) string(类型) 账户 ID。
  • password(入参) string(类型) 密码。
  • query_type(入参) FUND_QUERY_TYPE(类型) 资金查询类型。
  • result(返回值) 长整形(类型) ;发送成功返回 1;不成功返回 0。

所对应回调函数: 对方节点资金查询回调(限双节点)

备注: context::query_other_server_fund(const std::string &account, const std::string &password, FUND_QUERY_TYPE query_type), 在 2.0.9、2.0.10、2.0.11 三个版本中支持,从 2.1.0 版本开始废弃;

// 函数原型2
virtual uint64_t query_other_server_fund(const std::string &account, const std::string &password, FundQueryType query_type)
1
2

context::query_other_server_fund 资金查询函数(双中心用户间资金查询)。该函数为 context 的成员函数。

  • account(入参) string(类型) 账户 ID。
  • password(入参) string(类型) 密码。
  • query_type(入参) FundQueryType(类型) 资金查询类型。
  • result(返回值) 长整形(类型) ;发送成功返回 1;不成功返回 0。

所对应回调函数: 对方节点资金查询回调(限双节点)

备注: context::query_other_server_fund(const std::string &account, const std::string &password, FundQueryType query_type), 从 2.1.0 版本开始支持;

# 查询柜台系统资金余额

// 函数原型
void query_asset(const std::string &source_id, const std::string &account_id)
1
2

context::query_asset 执行该函数将请求查询资产信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 策略资金变动回调

备注:context::query_asset()函数从 2.0.11 版本开始支持

# 登录算法交易服务器

// 函数原型
void login_algo_server(const std::string &source, const std::string &account, const std::string &user, const std::string &password)
1
2

context::login_algo_server 执行该函数将请求创建 XTP 算法交易策略。该函数为 context 的成员函数。

  • source(入参) 字符串 (类型),柜台 ID。
  • account(入参) 字符串 (类型) 账户 ID。
  • user(入参) 字符串 (类型) xtp 算法交易服务器用户名。
  • password(入参) 字符串 (类型),xtp 算法交易服务器密码。
  • (返回值)

所对应回调函数: 登录算法交易服务器回调

备注:context::login_algo_server()函数从 2.0.12 版本开始支持

# 创建算法母单

// 函数原型
void create_algo_strategy(const std::string &account_id, uint32_t strategy_type, uint64_t client_strategy_id, const std::string &strategy_param)
1
2

context::create_algo_strategy 执行该函数将请求创建 XTP 算法交易策略。该函数为 context 的成员函数。

  • account_id(入参) 字符串 (类型),资金账号。
  • strategy_type(入参) 整形(类型) 需要创建的策略类型。
  • client_strategy_id(入参) 长整形(类型) 用户自定义 id,帮助用户定位。
  • strategy_param(入参) 字符串 (类型),策略参数,参数参考文档
  • (返回值)

所对应回调函数: 创建算法母单结果回调

备注:context::create_algo_strategy()函数从 2.0.12 版本开始支持

# 销毁算法母单

// 函数原型
void destroy_algo_strategy(const std::string &account, uint64_t xtp_strategy_id)
1
2

context::destroy_algo_strategy 执行该函数将请求销毁 XTP 算法交易策略。该函数为 context 的成员函数。

  • account(入参) 字符串 (类型),资金账号。
  • xtp_strategy_id(入参) 长整形(类型) 需要销毁的策略在 xtp 系统中的 id。
  • (返回值)

所对应回调函数: 销毁算法母单回调

备注:context::destroy_algo_strategy()函数从 2.0.12 版本开始支持

StopStrategy()是停止算法策略;DestroyStrategy()是强停算法策略。

# 启动算法母单

// 函数原型
void start_algo_strategy(const std::string &account, uint64_t xtp_strategy_id)
1
2

context::start_algo_strategy 执行该函数将请求运行 XTP 算法交易策略。该函数为 context 的成员函数。

  • account(入参) 字符串 (类型),资金账号。
  • xtp_strategy_id(入参) 长整形(类型) 需要运行的策略在 xtp 系统中的 id。
  • (返回值)

所对应回调函数: 启动算法母单回调

备注:context::start_algo_strategy()函数从 2.0.12 版本开始支持

# 停止算法母单

// 函数原型
void stop_algo_strategy(const std::string &account, uint64_t xtp_strategy_id)
1
2

context::stop_algo_strategy 执行该函数将请求停止运行 XTP 算法交易策略。该函数为 context 的成员函数。

  • account(入参) 字符串 (类型),资金账号。
  • xtp_strategy_id(入参) 长整形(类型) 需要停止运行的策略在 xtp 系统中的 id。
  • (返回值)

所对应回调函数: 停止算法母单回调

备注:context::stop_algo_strategy()函数从 2.0.12 版本开始支持

StopStrategy()是停止算法策略;DestroyStrategy()是强停算法策略。

# 查询算法母单

// 函数原型
void query_algo_strategy(const std::string &account_id, uint32_t strategy_type = 0, uint64_t client_strategy_id = 0, uint64_t xtp_strategy_id = 0)
1
2

context::query_algo_strategy 执行该函数将请求查询 XTP 算法交易策略。该函数为 context 的成员函数。

  • account_id(入参) 字符串 (类型),资金账号。
  • strategy_type(入参) 整形(类型) 需要查询的策略类型,可填 0。
  • client_strategy_id(入参) 长整形(类型) 需要查询的策略用户自定义 id,可填 0。
  • xtp_strategy_id(入参) 长整形(类型) 需要查询的策略在 xtp 系统中的 id,如果指定,就一定按指定查询,如果填 0,则按其他筛选条件查询。
  • (返回值)

所对应回调函数: 查询算法母单回调

备注:context::query_algo_strategy()函数从 2.0.12 版本开始支持

# 订阅快照行情和逐笔行情

// 函数原型
virtual void subscribe(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::subscribe 执行该函数将订阅市场快照行情和逐笔行情。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 选填 时间间隔 默认 1,单位是分钟。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数:

# 退订快照行情和逐笔行情

// 函数原型
virtual void unsubscribe(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::unsubscribe 执行该函数将退订市场快照行情和逐笔行情。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context::unsubscribe()函数从 2.0.11 版本开始支持

# 订阅分钟 Bar 行情

// 函数原型
virtual void subscribe(bar, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::subscribe 订阅分钟 Bar 行情。该函数为 context 的成员函数。

  • bar(入参)Bar 类型行情。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)
  • 备注 这种订阅 Bar 行情的方式准备弃用, 新的订阅 Bar 行情的接口为 subscribe_bar

所对应回调函数: 分钟 Bar 行情回调

# 订阅全市场快照行情和逐笔行情

// 函数原型
virtual void subscribe_all(const std::string &source_id)
1
2

context::subscribe_all 该函数将订阅全市场股票行情和全市场逐笔行情。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • (返回值)

所对应回调函数:

# 退订全市场快照行情和逐笔行情

// 函数原型
virtual void unsubscribe_all(const std::string &source_id)
1
2

context::unsubscribe_all 该函数将退订全市场股票行情和全市场逐笔行情。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • (返回值)

备注:context::unsubscribe_all()函数从 2.0.11 版本开始支持

# 订阅指定交易所所有证券的某类行情

// 函数原型
virtual void subscribe_all_market(const std::string &source_id, const std::string& exchange_id, const msg::type::AllMarketDataType& type = msg::type::AllMarketDataType::type_market_data)
1
2

context::subscribe_all_market 根据 type 类型订阅不同类型的全市场行情数据。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • type(入参) AllMarketDataType(类型) 订阅的行情类型。
  • (返回值)

所对应回调函数:

# 退订指定交易所所有证券的某类行情

// 函数原型
virtual void unsubscribe_all_market(const std::string &source_id, const std::string& exchange_id, const msg::type::AllMarketDataType& type = msg::type::AllMarketDataType::type_market_data)
1
2

context::unsubscribe_all_market 根据 type 类型退订不同类型的全市场行情数据。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • type(入参) AllMarketDataType(类型) 订阅的行情类型。
  • (返回值)

备注:context::unsubscribe_all_market()函数从 2.0.11 版本开始支持

# 订阅快照行情

// 函数原型
virtual void subscribe_market_data(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::subscribe_market_data 执行该函数将订阅市场快照行情。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数:快照行情回调

# 退订快照行情

// 函数原型
virtual void unsubscribe_market_data(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::unsubscribe_market_data 执行该函数将退订市场快照行情。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context::unsubscribe_market_data()函数从 2.0.11 版本开始支持

# 订阅买一卖一队列信息

// 函数原型
virtual void subscribe_bid1_ask1(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::subscribe_bid1_ask1 执行该函数将订阅买一卖一队列信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 买一卖一队列行情回调

备注:context::subscribe_bid1_ask1()函数从 2.0.11 版本开始支持

# 退订买一卖一队列信息

// 函数原型
virtual void unsubscribe_bid1_ask1(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::unsubscribe_bid1_ask1 执行该函数将退订买一卖一队列信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context::unsubscribe_bid1_ask1()函数从 2.0.11 版本开始支持

# 订阅逐笔行情

// 函数原型
virtual void subscribe_tick_by_tick(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::subscribe_tick_by_tick 执行该函数将订阅逐笔行情(包括逐笔委托和逐笔成交)。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数:

# 退订逐笔行情

// 函数原型
virtual void unsubscribe_tick_by_tick(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::unsubscribe_tick_by_tick 执行该函数将退订逐笔行情(包括逐笔委托和逐笔成交)。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context::unsubscribe_tick_by_tick()函数从 2.0.11 版本开始支持

# 订阅订单簿行情

// 函数原型
virtual void subscribe_order_book(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::subscribe_order_book 执行该函数将订阅订单簿行情(订单簿行情仅深圳市场才有该行情)。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 订单簿行情回调

# 退订订单簿行情

// 函数原型
virtual void unsubscribe_order_book(const std::string &source_id, const std::vector<std::string> &instruments, const std::string &exchange_id = "")
1
2

context::unsubscribe_order_book 执行该函数将退订订单簿行情(订单簿行情仅深圳市场才有该行情)。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • instruments(入参) 字符串数组(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

备注:context::unsubscribe_order_book()函数从 2.0.11 版本开始支持

# 查询沪深全市场的静态行情

// 函数原型
std::unordered_map<std::string, QuoteStaticFullInfo> getAllStaticQuote(const std::string &source = SOURCE_XTP)
1
2

context::getAllStaticQuote 主动查询沪深全市场的全量静态行情。该函数为 context 的成员函数。

  • source(入参) Source_id(类型) 柜台类型。
  • quotes(返回值) std::unordered_map(类型);map 的 key 的类型为字符串,内容由"标的代码"+"."+"交易所代码"构成,如"600000.SSE";map 的 value 为QuoteStaticFullInfo(类型),为 key 所对应的全量静态行情。

# 查询新三板(北交所)全市场的静态行情

// 函数原型
std::unordered_map<std::string, QuoteNQStaticFullInfo> getAllNQStaticQuote(const std::string &source = SOURCE_XTP)
1
2

context::getAllNQStaticQuote 主动查询新三板(北交所)全市场的全量静态行情。该函数为 context 的成员函数。

  • source(入参) Source_id(类型) 柜台类型。
  • quotes(返回值) std::unordered_map(类型);map 的 key 的类型为字符串,内容由"标的代码"+"."+"交易所代码"构成,如"430017.BSE";map 的 value 为QuoteNQStaticFullInfo(类型),为 key 所对应的全量静态行情。

备注:context::getAllNQStaticQuote()函数从 2.1.3 版本开始支持

# 请求查询信用账户特有信息

// 函数原型
virtual void query_credit_fund_info(const std::string &source_id, const std::string &account_id)
1
2

context::query_credit_fund_info 执行该函数将请求查询信用账户特有信息,除资金账户以外的信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 融资融券特有帐户数据回调

备注:context::query_credit_fund_info()函数从 2.0.8 版本开始支持

# 融资融券业务中现金直接还款请求

// 函数原型
void credit_cash_repay(const std::string &source_id, const std::string &account_id, double amount)
1
2

context::credit_cash_repay 执行该函数将请求直接现金还款。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • amount(入参) 浮点型 (类型),现金还款的金额。
  • (返回值)

所对应回调函数: 融资融券业务中现金直接还款的响应回调

备注:context::credit_cash_repay()函数从 2.0.8 版本开始支持

# 查询信用账户可融券头寸信息

// 函数原型
void query_credit_ticker_assign_info(const std::string &source_id, const std::string &account_id,
                                                     const std::string &instrument_id, const std::string &exchange_id)
1
2
3

context::query_credit_ticker_assign_info 执行该函数将请求查询信用账户可融券头寸信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • instrument_id(入参) 字符串(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 查询信用账户可融券头寸结果回调

备注:context::query_credit_ticker_assign_info()函数从 2.0.11 版本开始支持

# 查询信用账户负债合约信息

// 函数原型
void query_credit_debt_info(const std::string &source_id, const std::string &account_id)
1
2

context::query_credit_debt_info 执行该函数将请求查询信用账户负债合约信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 查询信用账户负债合约回调

备注:context::query_credit_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户指定证券负债信息

// 函数原型
void query_credit_ticker_debt_info(const std::string &source_id, const std::string &account_id,
                                                   const std::string &instrument_id, const std::string &exchange_id)
1
2
3

context::query_credit_ticker_debt_info 执行该函数将请求信用账户指定证券负债未还信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • instrument_id(入参) 字符串(类型) 标的代码。
  • exchange_id(入参) Exchange_id(类型) 交易所代码。
  • (返回值)

所对应回调函数: 查询信用账户指定证券负债回调

备注:context::query_credit_ticker_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户待还资金信息

// 函数原型
void query_credit_asset_debt_info(const std::string &source_id, const std::string &account_id)
1
2

context::query_credit_asset_debt_info 执行该函数将请求信用账户指定证券负债未还信息。该函数为 context 的成员函数。

  • source_id(入参) Source_id(类型) 柜台类型。
  • account_id(入参) 字符串 (类型),资金账号。
  • (返回值)

所对应回调函数: 查询信用账户待还资金回调

备注:context::query_credit_asset_debt_info()函数从 2.0.11 版本开始支持

# 获取系统支持申赎的全部 ETF

// 函数原型
bool load_etf_info()
1
2

context::load_etf_info 执行该函数将加载 TD 收集到的 ETF 数据。该函数为 context 的成员函数。

  • result(返回值) bool (类型), 加载成功返回 true; 不成功返回 false.

备注:context::load_etf_info()函数从 2.0.12 版本开始支持

# 获取系统支持申赎的全部 ETF 清单

// 函数原型
std::unordered_map<std::string, msg::data::ETFBase> get_all_etfs()
1
2

context::get_all_etfs 执行该函数将获取全市场 ETF 清单。该函数为 context 的成员函数。

  • etf_bases(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE";字典的 value 为ETFBase(类型),为 key 所对应的 ETF 清单

备注:context::get_all_etfs()函数从 2.0.12 版本开始支持

# 算法交易获取指定 ETF 清单

// 函数原型
std::unordered_map<std::string, msg::data::ETFBase> get_etf_base(const std::string exchange, const std::string etf)
1
2

context::get_etf_base 执行该函数将获取指定 ETF 清单。该函数为 context 的成员函数。

  • exchange(入参) 字符串(类型),交易所代码。
  • etf(入参) 字符串(类型),ETF 代码,若为空字符串,则查询指定交易所的所有 ETF 清单。
  • etf_bases(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE";字典的 value 为ETFBase(类型),为 key 所对应的 ETF 清单

备注:context::get_etf_base 函数从 2.0.12 版本开始支持

# 获取指定 ETF 清单

// 函数原型
std::unordered_map<std::string, msg::data::ETFBasket> get_etf_all_baskets(const std::string &)
1
2

context::get_etf_all_baskets 执行该函数将获取指定 ETF 的所有成分股列表。该函数为 context 的成员函数。

  • etf_key(入参) 字符串(类型),内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE"。
  • etf_baskets(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 成分股标的代码"+"."+"ETF 成分股交易所代码"构成,如"688772.SSE";字典的 value 为ETFBasket(类型),为 key 所对应的 ETF 成分股

备注:context::get_etf_all_baskets 函数从 2.0.12 版本开始支持

# 获取指定 ETF 成分股(按条件查询)

// 函数原型
std::unordered_map<std::string, msg::data::ETFBasket> get_etf_baskets(const std::string &etf_key, const std::string cpt_exchange, const std::string cpt_ist)
1
2

context::get_etf_baskets 执行该函数将获取指定 ETF 的部分成分股列表。该函数为 context 的成员函数。

  • etf_key(入参) 字符串(类型),内容由"ETF 标的代码"+"."+"ETF 交易所代码"构成,如"588060.SSE"。
  • cpt_exchange(入参) 字符串(类型),ETF 成分股的交易所代码。
  • cpt_ist(入参) 字符串(类型),ETF 成分股标的代码, 为空字符串时,则查询指定交易所的该 ETF 的所有成分股。
  • etf_baskets(返回值) 数据字典(类型);字典的 key 的类型为字符串,内容由"ETF 成分股标的代码"+"."+"ETF 成分股交易所代码"构成,如"688772.SSE";字典的 value 为ETFBasket(类型),为 key 所对应的 ETF 成分股

备注:context::get_etf_baskets 函数从 2.0.12 版本开始支持

# 向客户端发送自定义字符串

// 函数原型
virtual bool send_msg(const std::string& msg)
1
2

context::send_msg 策略向客户端发送自定义字符串。该函数为 context 的成员函数。

  • msg(入参) 字符串(类型) 消息。
  • result(返回值) bool(类型) 发送成功返回 True;不成功返回 False。

# 订阅任意分钟 Bar 行情

// 函数原型
virtual std::vector<std::string> subscribe_bar(const std::vector<std::string>& codes, const std::string period = "1m", const std::function<void(Context_ptr, const msg::data::Bar&)>& on_bar_callback = NULL)
1
2

context::subscribe_bar 用于订阅 1 到 60 分钟内到的 Bar 行情

  • codes(入参)(必填) string 类型的数组,表示要订阅的股票代码,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]。
  • period(入参)(选填) 字符串类型,表示要订阅的 Bar 行情的周期,如 "5m" 表示 5 分钟,取值范围为["1m", "60m"], 即 1 到 60 分钟,默认值为"1m",即一分钟
  • on_bar_callback(context, bar)(入参)(选填),接收 Bar 行情的回调函数,若不填则通过默认的回调函数 on_bar 接收 Bar 行情, 参数 bar 表示收到的 Bar 行情,传入的回调函数 on_bar_callback 和 默认回调函数 on_bar 的函数参数必须相同
  • 返回值 string 类型的数组,表示订阅失败的股票代码
  • 备注 context::subscribe_bar 从 2.1.2 版本开始支持

# 取消订阅任意分钟 Bar 行情

// 函数原型
virtual std::vector<std::string> unsubscribe_bar(const std::vector<std::string>& codes, const std::string period = "1m");
1
2
  • codes(入参)(必填) string 类型的数组,表示要取消订阅的股票代码,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]。
  • period(入参)(选填) 字符串类型,表示要取消订阅的 Bar 行情的周期,如 "5m" 表示 5 分钟,取值范围为["1m", "60m"], 即 1 到 60 分钟,默认值为"1m",即一分钟
  • 返回值 string 类型的数组,表示订阅失败的股票代码
  • 备注 context::unsubscribe_bar 从 2.1.2 版本开始支持

# 通用指标订阅

// 函数原型
virtual std::vector<std::string> subscribe_indicator(const std::string& type, const vector<std::string>& codes, const std::function<void(Context_ptr, const std::string&, const nlohmann::json&)>& on_indicator_callback = NULL)
1
2

context.subscribe_indicator(type, codes, on_indicator_callback) 用于订阅通用指标

  • type(入参)(必填),string 类型,指标类型参数,目前仅支持 "etf"
  • codes(入参)(必填) string 类型的数组,表示要订阅的指标的代码,其中指标代码支持如 "510990.SH" 和 "510990.SSE" 两种格式,如["510990.SSE","159974.SZ"]。
  • on_indicator_callback(入参)(选填),接收指标行情的回调函数,若不填则通过默认回调函数 on_indicator 接收指标行情,函数 on_indicator_callback 和 on_indicator 和函数参数必须相同,其中 type 为指标类型,indicator 为指标数据
  • 备注 context::subscribe_indicator 从 2.1.2 版本开始支持

# 通用指标取消订阅

// 函数原型
virtual std::vector<std::string> unsubscribe_indicator(const std::string& type, const vector<std::string>& codes)
1
2

context.unsubscribe_indicator(type, codes, on_indicator_callback) 用于取消对通用指标的订阅

  • type(入参)(必填),string 类型,指标类型参数,目前仅支持 "etf"
  • codes(入参)(必填) string 类型的数组,表示要取消订阅的股票代码,其中指标代码支持如 "510990.SH" 和 "510990.SSE" 两种格式,如["510990.SSE","159974.SZ"]。
  • 备注 context::unsubscribe_indicator 从 2.1.2 版本开始支持

# 同步查询当天 bar 行情

// 函数原型
std::map<std::string, std::vector<msg::data::Bar>> query_bar_today(const std::vector<std::string>& codes, std::string period = "1m")
1
2

context::query_bar_today 用于查询当天的 Bar 行情, 该函数为 context 的成员函数

  • codes (入参)(必填), 股票代码列表,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]。
  • period (入参)(选填), bar 行情周期,类型为 String,如 "2m" 代表 2 分钟, 单位为分钟,取值范围为 1 分钟到 60 分钟,即 ["1m", "60m"],默认值为 "1m"
  • 返回值根据股票代码分类的查询到的 Bar 行情, key 为股票代码,并且与参数 codes 中的 股票代码格式一致, value 为对应的 Bar 结构体数组
  • 备注 context::query_bar_today 从 2.1.2 版本开始支持

# 异步查询当天 bar 行情

// 函数原型
void query_bar_today_async(const std::vector<std::string>& codes, const std::function<void(Context_ptr, const std::map<std::string, std::vector<msg::data::Bar>>&, uint32_t query_id)>& query_bar_today_callback, std::string period = "1m", uint32_t query_id = 0)
1
2

context::query_bar_today_async 用于异步查询当天的 Bar 行情, 该函数为 context 的成员函数

  • codes (入参)(必填), 股票代码列表,其中股票代码支持 "600000.SH" 和 "600000.SSE" 两种格式,如["000001.SZ","000002.SZ","000004.SZ","600000.SSE"]

  • period (入参)(选填), bar 行情周期,类型为 String,如 "2m" 代表 2 分钟, 单位为分钟,取值范围为 1 分钟到 60 分钟,即 ["1m", "60m"],默认值为 "1m"

  • query_bar_today_callback (入参)(必填),接收查询到的 bar 行情的回调函数

  • query_id (入参)(选填),整型,取值范围为 [0, 4294967295],默认值为 0, 用作回调函数的入参

  • 备注:

    1、query_bar_today_callback(context, today_bar, query_id) 接收 3 个参数,today_bar 为根据股票代码分类的查询到的 Bar 行情, key 为股票代码,并且与参数 codes 中的 股票代码格式一致, value 为对应的 Bar 结构体数组, query_id 为调用 query_bar_today_async 时传入的 query_id

    2、context::query_bar_today_async 从 2.1.2 版本开始支持

# 查询历史 Bar 行情

// 函数原型
std::vector<msg::data::Bar> query_bar(const nlohmann::json &params)
1
2

context::query_bar 用于查询历史 Bar 行情, 该函数为 context 的成员函数

  • params (入参)(必填), nlohmann::json 类型的 json,查询历史 Bar 用到的参数

  • 返回值查询到的 Bar 结构体行情数组

  • 备注

    1、params 格式如下所示

    params = {
        "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", // 股票代码
        "exchange_id": "SZE",   // 交易所代码
        "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询 Bar 行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    2、只能查询到当天以前的数据

    3、context::query_bar 从 2.1.2 版本开始支持

# 异步查询历史 Bar 行情

// 函数原型
void query_bar_async(const nlohmann::json &params, const std::function<void(Context_ptr, const std::vector<msg::data::Bar>&, uint32_t query_id)>& query_bar_callback, uint32_t query_id = 0)
1
2

context::query_bar_async 用于查询历史 Bar 行情, 该函数为 context 的成员函数

  • params (入参)(必填), nlohmann::json 类型的 json,查询历史 Bar 用到的参数

  • query_bar_callback (入参)(必填), 接收 Bar 行情的回调函数

  • query_id (入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 备注

    1、params 格式如下所示

    params = {
        "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", // 股票代码
        "exchange_id": "SZE",   // 交易所代码
        "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询 Bar 行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    2、query_bar_callback(context, bars, query_id) 接收 3 个参数, bars 的元素为 Bar 结构体行情,query_id 为调用 query_bar_async 时传入的 query_id

    3、只能查询到当天以前的数据

    4、context::query_bar_async 从 2.1.2 版本开始支持

# 查询市场行情数据

// 函数原型
std::vector<msg::data::Quote> query_market_data(const nlohmann::json &params)
1
2

context::query_market_data 市场行情数据查询函数,该函数为 context 的成员函数

  • params (入参)(必填),类型为 nlohmann::json, 查询市场行情数据使用的 json 格式的参数

  • 返回值 查询到的 Quote 结构体行情数据数组

  • 备注

    1、params 格式如下所示

     params = {
         "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
         "instrument": "000002", // 股票代码
         "exchange_id": "SZE",   // 交易所代码
         "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
         "end_date": "2024-01-12 15:00:00"  // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
     }
    
     // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    2、只能查询到当天以前的数据

    3、context::query_market_data 从 2.1.2 版本开始支持

# 异步查询市场行情数据

// 函数原型
void query_market_data_async(const nlohmann::json &params, const std::function<void(Context_ptr, const std::vector<msg::data::Quote>&, uint32_t query_id)>& query_market_data_callback, uint32_t query_id = 0)
1
2

context::query_market_data_async 市场行情数据查询函数, 该函数为 context 的成员函数

  • params (入参)(必填),类型为 nlohmann::json, 查询市场行情数据使用的 json 格式的参数

  • query_market_data_callback(入参)(必填),接收市场行情数据的回调函数

  • query_id (入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 返回值

  • 备注

    1、params 格式如下所示

     params = {
         "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
         "instrument": "000002", // 股票代码
         "exchange_id": "SZE",   // 交易所代码
         "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
         "end_date": "2024-01-12 15:00:00" // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
     }
    
     // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用 code 的参数,若未传 code 或者 code 的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    2、query_market_data_callback(context, quotes, query_id) 接收 3 个参数,其中 quotes 的类型为数组,其元素类型为查询到 Quote 结构体行情数据,query_id 为调用 query_market_data_async 时传入的 query_id

    3、只能查询到当天以前的数据

    4、context::query_market_data_async 从 2.1.2 版本开始支持

# 同步数据查询接口

// 函数原型
nlohmann::json query_data(const std::string& method, const nlohmann::json &params)
1
2

context::query_data 数据查询函数,该函数为 context 的成员函数

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,为 nlohmann::json 类型的 json,里边的参数根据 method 的不同而变化

    • 返回值 nlohmann::json 类型的 json 格式结果集,如下所示,其中当 code 的值为 200 时表示查询成功,其它值均表示查询失败
    {
      "code":200    // 错误码,当code的值为 200时表示查询成功,其它值均表示查询失败
      "msg":""      // 错误消息
      "data": []    // 查询到的数据, 类型为nlohmann::json 中的 json 数组,数组中的每个 json 对象代表条查询结果
    }
    
    1
    2
    3
    4
    5
  • 备注: method 目前支持的参数有

    1、"bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", // 股票代码
        "exchange_id": "SZE",   // 交易所代码
        "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    2、"market_data": 查询市场数据,此时 params 参数如下所示

        params = {
          "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", // 股票代码
          "exchange_id": "SZE",   // 交易所代码
          "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00" // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
      }
    
      //  params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    3、查询历史数据时只能查询到当天以前的数据

    4、context::query_data 从 2.1.2 版本开始支持

# 异步数据查询接口

// 函数原型
void query_data_async(const std::string& method, const nlohmann::json &params, const std::function<void(Context_ptr, const nlohmann::json&, uint64_t query_id)>& query_data_callback, uint64_t query_id = 0)
1
2

context::query_data_async 异步数据查询函数,该函数为 context 的成员函数

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,为 nlohmann::json 类型的 json,里边的参数根据 method 的不同而变化

  • query_data_callback (入参)(必填),接收数据的回调函数

  • query_id (入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 备注

    1、method 目前支持的参数有

    (1)"bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", // 股票代码
        "exchange_id": "SZE",   // 交易所代码
        "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre" // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
    }
    
    // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    (2)"market_data": 查询市场数据,此时 params 参数如下所示

    params = {
          "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", // 股票代码
          "exchange_id": "SZE",   // 交易所代码
          "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00" // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
      }
    
      // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

    2、query_data_callback(context, result, query_id) 接收 3 个参数

    (1) result 为 nlohmann::json 类型的 json 格式结果集,如下所示,其中当 code 的值为 200 时表示查询成功,其它值均表示查询失败

    {
      "code":200    // 错误码,当code的值为 200时表示查询成功,其它值均表示查询失败
      "msg":""      // 错误消息
      "data": []    // 查询到的数据, 类型为nlohmann::json 中的 json 数组, 数组中的每个 json 对象代表条查询结果
    }
    
    1
    2
    3
    4
    5

    (2) query_id 为调用 query_data_async 时传入的 query_id

    3、查询历史数据时只能查询到当天以前的数据

    4、context::query_data_async 从 2.1.2 版本开始支持

# 分页数据查询接口

// 函数原型
msg::data::DataPageInfo query_data_page(const std::string& method, const nlohmann::json &params)
1
2

context::query_data_page 分页数据查询函数,该函数为 context 的成员函数

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,为 nlohmann::json 类型的 json,里边的参数根据 method 的不同而变化

  • 返回值 DataPageInfo类型的分页查询结果

  • 备注

    1、method 目前支持的参数有

    (1) "bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码 SZ:深证 SH:上海
        "instrument": "000002", // 股票代码
        "exchange_id": "SZE",   // 交易所代码
        "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre", // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
        "current_page": 1,  //  当前页,不传 默认当前页 为1
        "page_size": 10000  //  分页数量,最大为10000
    }
    
    // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    (2) "market_data": 查询市场数据,此时 params 参数如下所示

      params = {
          "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", // 股票代码
          "exchange_id": "SZE",   // 交易所代码
          "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
          "current_page": 1,  //  当前页,不传 默认当前页 为1
          "page_size": 10000  //  分页数量,最大为10000
      }
    
      //  params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    3、查询历史数据时只能查询到当天以前的数据

    4、context::query_data_page 从 2.1.2 版本开始支持

# 异步分页数据查询接口

// 函数原型
void query_data_page_async(const std::string& method, const nlohmann::json &params, const std::function<void(Context_ptr, const msg::data::DataPageInfo&, uint64_t query_id)>& query_data_page_callback, uint64_t query_id = 0)
1
2

context::query_data_page_async 异步分页数据查询函数,该函数为 context 的成员函数

  • method (入参)(必填),查询使用的方法名,类型为 string

  • params (入参)(必填),查询使用的参数,为 nlohmann::json 类型的 json,里边的参数根据 method 的不同而变化

  • query_data_page_callback接收查询到的分页数据的回调函数

  • query_id(入参)(选填),整型,取值范围为 [0, 18446744073709551615],默认值为 0, 用作回调函数的入参

  • 返回值

  • 备注

    1、method 目前支持的参数有

    (1)"bar": 查询历史 bar,此时 params 参数如下所示

    params = {
        "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
        "instrument": "000002", // 股票代码
        "exchange_id": "SZE",   // 交易所代码
        "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
        "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
        "period": "5m", // String(选填) 频次 仅支持1m 5m 15m 30m 60m 1d 1w, 默认1d,(m代表分钟,d代表天,w代表周),注意:查询1d的则开始、截止时间需要将00:00:00包住,查询1w的则开始、截止时间需要将周五的00:00:00包住
        "adjust_type": "pre", // String(选填) 复权方式 none:不复权 pre:前复权 post:后复权 默认前复权
        "current_page": 1,  //  当前页,不传 默认当前页 为1
        "page_size": 10000  //  分页数量,最大为10000
    }
    
    // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的 Bar 行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询Bar行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    (2)"market_data": 查询市场数据,此时 params 参数如下所示

    params = {
          "code": "000001.SZ",  // 000001.SZ 600000.SH  证券代码  SZ:深证 SH:上海
          "instrument": "000002", // 股票代码
          "exchange_id": "SZE",   // 交易所代码
          "start_date": "2024-01-12 10:00:00", // String(必填) 开始日期 格式yyyy-MM-dd hh:mm:ss
          "end_date": "2024-01-12 15:00:00", // String(必填) 结束日期 格式yyyy-MM-dd hh:mm:ss
          "current_page": 1,  //  当前页,不传 默认当前页 为1
          "page_size": 10000  //  分页数量,最大为10000
      }
    
      // params 中的 code、instrument、exchange_id 用于指定要查询哪支股票的行情,优先使用code的参数,若未传code或者code的值为空,则使用 instrument 和 exchange_id 指定的股票查询行情
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    2、query_data_page_callback(context, data_page_info, query_id) 接收 3 个参数

    (1) data_page_info为 DataPageInfo 类型的分页数据

    (2) query_id 为调用 query_data_page_async 时传入的 query_id

    3、查询历史数据时只能查询到当天以前的数据

    4、context::query_data_page_async 从 2.1.2 版本开始支持

# 五、C++ api 回调函数接口

# 策略启动前

virtual void pre_start(Context_ptr context) 启动后调用函数,策略连接上行情交易柜台后调用,本函数回调后,策略可以执行添加时间回调、获取策略持仓等操作。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • (返回值)

# 策略启动后

virtual void post_start(Context_ptr context) 启动启动后该函数将被回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • (返回值)

# 策略退出前

virtual void pre_stop(Context_ptr context) 策略退出前该函数将被回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • (返回值)

# 策略退出后

virtual void post_stop(Context_ptr context) 策略退出后该函数将被回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • (返回值)

# 快照行情回调

virtual void on_quote(Context_ptr context, const msg::data::Quote& quote) 当策略收到某一标的物实时快照行情时,该回调函数将会被触发。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • quote(入参) 类型 Quote 实时快照行情。
  • (返回值)

# 买一卖一队列行情回调

virtual void on_bid1ask1(Context_ptr context, const msg::data::Bid1Ask1 &b1a1) 当策略收到某一标的物实时买一卖一队列信息时,该回调函数将会被触发。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • b1a1(入参) 类型 Bid1Ask1 买一卖一队列信息。
  • (返回值)

备注:on_bid1ask1()函数从 2.0.11 版本开始支持

# 分钟 Bar 行情回调

virtual void on_bar(Context_ptr context, const msg::data::Bar &bar) 当策略收到某一标的物实时 Bar 行情时,该回调函数将会被触发。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • bar(入参) Bar(类型) 快照行情。
  • (返回值)

# 逐笔委托行情回调

Virtual void on_entrust(Context_ptr context, const msg::data::Entrust &entrust) 收到逐笔委托行情时触发该回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • entrust(入参)Entrust(类型) 逐笔委托行情。
  • (返回值)

# 逐笔成交行情回调

virtual void on_transaction(Context_ptr context, const msg::data::Transaction &transaction) 收到逐笔成交行情时触发该回调。这个行情需要 level2 行情权限。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • transaction(入参)Transaction(类型) 逐笔成交行情。
  • (返回值)

# 订单簿行情回调

virtual void on_order_book(Context_ptr context, const msg::data::OrderBook& order_book) 收到订单簿消息时触发该回调。这个行情需要 level2 行情权限。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • order_book(入参)OrderBook(类型) 订单簿行情。
  • (返回值)

备注:订单簿行情是中泰证券根据逐笔行情合成的类快照行情,频率极快,只要市场行情(委托或成交)发生变化都会被推送。

# 订单信息更新回调

virtual void on_order(Context_ptr context, const msg::data::Order &order) 订单信息的更新会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • order(入参)Order(类型) 订单信息。
  • (返回值)

备注:

  • 如果订单为废单,那么on_order回调函数只会被触发一次,订单状态为Error。
  • 对于非废单的订单,on_order回调函数最多被触发两次,第一次被触发表示订单已经报到交易所的确认消息,函数中order的订单状态为 'Pending' (等待中);第二次被触发表示订单达到最终状态的消息。其中最终状态包括:
    • Cancelled : '已撤单'
    • Filled: '已成交'
    • PartialCancel: '部分撤单'
订单的状态分类:
1 'Submitted' : '已提交':kungfu平台发给柜台,还没有收到柜台委托确认消息的状态。
2 'Pending' : '等待中':收到柜台的委托确认消息。
3 'Cancelled' : '已撤单':收到柜台全部撤单消息。
4 'Error' : '错误':收到柜台拒单消息。
5 'Filled' : '已成交':收到柜台全部成交消息。
6 'PartialCancel' : '部分撤单':收到柜台部分撤单消息。
1
2
3
4
5
6
7

# 订单成交回报回调

virtual void on_trade(Context_ptr context, const msg::data::Trade &trade) 策略订单成交信息的更新会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • trade(入参)Trade(类型) 订单信息。
  • (返回值)

# 撤单失败回调

virtual void on_order_action_error(Context_ptr context, const msg::data::OrderActionError &error) 撤单失败反馈信息回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • error(入参) OrderActionError(类型) 撤单失败反馈信息。
  • (返回值)

# 策略资金变动回调

virtual void on_asset(Context_ptr context, const msg::data::Asset& asset) 资金账户响应回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • asset(入参) Asset(类型) 资金账户数据信息。
  • (返回值)

备注:on_asset()函数从 2.0.11 版本开始支持

# 资金划转结果回调

virtual void on_fund_transfer(Context_ptr context, const msg::data::FundTransferFeedBack &feedback) 资金划转结果回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • feedback(入参) FundTransferFeedBack(类型) 资金划转反馈信息。
  • (返回值)

# 对方节点资金查询回调(限双节点)

virtual void on_query_other_server_fund(Context_ptr context, const msg::data::FundQueryFeedBack &feedback) 资金查询结果回调。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • feedback(入参) FundQueryFeedBack(类型) 资金查询结果反馈。
  • (返回值)

# 收到客户端发送消息回调

virtual void on_client_msg(Context_ptr context, const std::string &msg) 策略通过该回调接收客户端发送来的消息。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • msg(入参) 字符串(类型),客户端给策略发送来的消息。
  • (返回值)

# 融资融券特有帐户数据回调

virtual void on_query_credit_fund_info(Context_ptr context, const msg::data::CreditFundInfo &crdfundinfo) 收到融资融券业务中特有帐户数据时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • crdfundinfo(入参)CreditFundInfo(类型) 融资融券特有帐户数据。
  • (返回值)

备注:on_query_credit_fund_info()函数从 2.0.8 版本开始支持

# 融资融券业务中现金直接还款的响应回调

virtual void on_credit_cash_repay(Context_ptr context, const msg::data::CreditCashRepayRsp& cash_repay_rsp) 收到融资融券业务中现金直接还款的响应时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • cash_repay_rsp(入参)CreditCashRepayRsp(类型) 现金直接还款通知信息。
  • (返回值)

备注:on_credit_cash_repay()函数从 2.0.8 版本开始支持

# 查询信用账户可融券头寸结果回调

virtual void on_query_credit_ticker_assign_info(Context_ptr context, const msg::data::CrdPositionStkInfo &crd_position_stk_info) 收到信用账户可融券头寸信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • crd_position_stk_info(入参)CrdPositionStkInfo(类型) 信用账户可融券头寸信息。
  • (返回值)

备注:on_query_credit_ticker_assign_info()函数从 2.0.11 版本开始支持

# 查询信用账户负债合约回调

virtual void on_query_credit_debt_info(Context_ptr context, const msg::data::CrdDebtInfo &crd_debt_info) 收到信用账户负债信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • crd_debt_info(入参)CrdDebtInfo(类型) 单条融资融券负债记录信息。
  • (返回值)

备注:on_query_credit_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户指定证券负债回调

virtual void on_query_credit_ticker_debt_info(Context_ptr context, const msg::data::CrdDebtStockInfo &crd_debt_stk_info) 收到信用账户指定证券负债未还信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • crd_debt_stk_info(入参)CrdDebtStockInfo(类型) 融资融券指定证券的融券负债相关信息。
  • (返回值)

备注:on_query_credit_ticker_debt_info()函数从 2.0.11 版本开始支持

# 查询信用账户待还资金回调

virtual void on_query_credit_asset_debt_info(Context_ptr context, const double &remain_amount) 收到信用账户待还资金信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • remain_amount(入参)double 信用账户待还资金。
  • (返回值)

备注:on_query_credit_asset_debt_info()函数从 2.0.11 版本开始支持

# 登录算法交易服务器回调

virtual void on_login_algo_server(Context_ptr context, bool success) 收到登录 xtp 算法交易服务器反馈信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • success(入参) 布尔型(类型),登录是否成功。
  • (返回值)

备注: on_login_algo_server()函数从 2.0.12 版本开始支持

# 创建算法母单结果回调

virtual void on_create_algo_strategy(Context_ptr context, const msg::data::AlgoStrategyInfo& algo_strategy_info) 收到 XTP 算法交易创建策略反馈信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_create_algo_strategy()函数从 2.0.12 版本开始支持

# 查询算法母单回调

virtual void on_query_algo_strategy(Context_ptr context, const msg::data::AlgoStrategyInfo& algo_strategy_info) 收到 XTP 算法交易查询策略反馈信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_query_algo_strategy()函数从 2.0.12 版本开始支持

# 启动算法母单回调

virtual void on_start_algo_strategy(Context_ptr context, const msg::data::AlgoStrategyInfo& algo_strategy_info) 收到 XTP 算法交易开始运行策略反馈信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_start_algo_strategy()函数从 2.0.12 版本开始支持

# 停止算法母单回调

virtual void on_stop_algo_strategy(Context_ptr context, const msg::data::AlgoStrategyInfo& algo_strategy_info) 收到 XTP 算法交易停止运行策略反馈信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_stop_algo_strategy()函数从 2.0.12 版本开始支持

# 销毁算法母单回调

virtual void on_destroy_algo_strategy(Context_ptr context, const msg::data::AlgoStrategyInfo& algo_strategy_info) 收到 XTP 算法交易销毁策略反馈信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注: on_destroy_algo_strategy()函数从 2.0.12 版本开始支持

# 算法母单变动回调

virtual void on_algo_strategy_info(Context_ptr context, const msg::data::AlgoStrategyInfo& algo_strategy_info) 收到 XTP 算法交易策略信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • algo_strategy_info(入参)AlgoStrategyInfo(类型) XTP 算法交易策略信息。
  • (返回值)

备注:on_algo_strategy_info()函数从 2.0.12 版本开始支持

# 算法母单状态变动回调

virtual void on_algo_strategy_state_report(Context_ptr context, const msg::data::AlgoStrategyStateReport& algo_strategy_state_report) 收到 XTP 算法交易运行时策略状态信息时会自动触发该函数被调用。

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • algo_strategy_state_report(入参)AlgoStrategyStateReport(类型) XTP 算法交易策略状态信息。
  • (返回值)

备注: on_algo_strategy_state_report()函数从 2.0.12 版本开始支持

# 通用指标回调函数

virtual void on_indicator(Context_ptr context, const std::string& type, const nlohmann::json &indicator) 在通过 subscribe_indicator 函数订阅通用指标时如果没有传入接收通用指标的函数,则使用该函数接收通用指标

  • context(入参) kungfu::wingchun::strategy::Context 类一个实例的智能指针, 在策略进程中这个类只有一个实例。
  • type(入参),表示指标的类型
  • indicator(入参),nlohmann::json 类型的 json 格式数据,表示指标数据

# 六、数据结构详细介绍

# 快照行情

Quote 快照行情信息

/** 行情信息
                    char source_id[SOURCE_ID_LEN];              //柜台ID
                    char trading_day[DATE_LEN];                 //交易日

                    int64_t data_time;                          //数据生成时间
                    bool kungfu_time_flag;                      //时间类型

                    char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];          //交易所ID

                    InstrumentType instrument_type;             //合约类型

                    double pre_close_price;                     //昨收价
                    double pre_settlement_price;                //昨结价(期货行情中有意义)

                    double last_price;                          //最新价
                    int64_t volume;                             //当前成交量
                    double turnover;                            //成交金额

                    double pre_open_interest;                   //昨持仓量(期货行情中有意义)
                    double open_interest;                       //持仓量(期货行情中有意义)

                    double open_price;                          //今开盘
                    double high_price;                          //最高价
                    double low_price;                           //最低价

                    double upper_limit_price;                   //涨停板价
                    double lower_limit_price;                   //跌停板价

                    double close_price;                         //收盘价
                    double settlement_price;                    //结算价(期货行情中有意义)

                    double bid_price[10];                       //申买价
                    double ask_price[10];                       //申卖价
                    int64_t bid_volume[10];                     //申买量
                    int64_t ask_volume[10];                     //申卖量

                    char ticker_status[TICKER_STATUS_LEN];      //当前交易状态说明  modified by shizhao on 20200511

                    int64_t total_bid_volume;                   //委托买入总量(SH,SZ)
                    int64_t total_ask_volume;                   //委托卖出总量(SH,SZ)
                    double ma_bid_price;                        //加权平均委买价格(SH,SZ)
                    double ma_ask_price;                        //加权平均委卖价格(SH,SZ)
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

备注:在行情 quote 数据中 ticker_status 字段,表示当前交易状态及标志

1、对于普通股票/基金,具体值如下:
交易状态
深交所只有第 0、1 位,没有第 2、3 位

上海市场 0-9:15 9:15-9:25 9:25-9:30 9:30-11:30 11:30-13:00 13:00-14:57 14:57-15:00 15:00-
非停牌 S11 C111 T111 T111 T111 T111 U111 E111
非停牌 P011 P011 P011 P011 P011 P011 P011 P011

注意:从 2018-12 月份开始,上交所停止发送开盘集合竞价消息(UA3107)。开盘/收盘集合竞价消息,直接从 UA3202 发出。

深圳市场 0-9:15 9:15-9:25 9:25-9:30 9:30-11:30 11:30-13:00 13:00-14:57 14:57-15:00 15:00-
非停牌 S1 C1 B1 T1 B1 T1 C1 E1
非停牌 S0 C0 B0 T0 B0 T0 C0 E0

2、对于债券,标志含义同股票/基金字段说明,具体如下:
上交所从 2021.10.25 后,上交所启用新的债券交易系统,修改了债券行情的协议。
上交所 L1 时,ticker_status 有值;
上交所 L2 时,ticker_status 无意义;参见 bond.instrument_status;
深交所深交所 L1 和 L2,ticker_status 有值;

# 订单簿行情

OrderBook 订单簿行情信息

/** 订单簿行情信息
					char source_id[SOURCE_ID_LEN];              //柜台ID
					char trading_day[DATE_LEN];                 //交易日
					int64_t data_time;                          //数据生成时间
					char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
					char exchange_id[EXCHANGE_ID_LEN];          //交易所ID
					//InstrumentType instrument_type;             //合约类型

					double last_price;                          //最新价

					int64_t qty;                                //数量,为总成交量

					double  turnover;                           //成交金额,为总成交金额

					int64_t trades_count;                       //成交笔数


					double bid[10];                             //十档申买价

					double  ask[10];                            //十档申卖价

					int64_t bid_qty[10];						//十档申买量

					int64_t ask_qty[10];						//十档申卖量
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

json 版数据展示样例:

{\"ask\":[21.09,21.1,21.11,21.12,21.14,21.150000000000002,21.16,21.17,21.18,21.19],\"ask_qty\":[100,38900,1300,3500,500,17800,1400,3700,4910,9200],\"bid\":[21.080000000000002,21.07,21.060000000000002,21.05,21.040000000000003,21.03,21.02,21.01,21.0,20.990000000000002],\"bid_qty\":[4900,48200,65700,41200,43300,29800,39100,82900,400900,44600],\"data_time\":1484532009390000000,\"exchange_id\":\"SZE\",\"instrument_id\":\"000002\",\"last_price\":21.080000000000002,\"qty\":14270227,\"source_id\":\"xtp\",\"trades_count\":18978,\"trading_day\":\"20210720\",\"turnover\":301336159.99}
1

# 买一卖一队列信息

Bid1Ask1 买一卖一队列信息

/** 买一卖一队列信息
                    char source_id[SOURCE_ID_LEN];              //柜台ID
                    char trading_day[DATE_LEN];                 //交易日

                    int64_t data_time;                          //数据生成时间

                    char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];          //交易所ID

                    InstrumentType instrument_type;             //合约类型
                    bool kungfu_time_flag;                      //XTP的时间类型

                    double  bid1_price;                         //买一价
                    int32_t bid1_count;                         //买一队列的有效委托笔数
                    int32_t max_bid1_count;                     //买一队列总委托笔数
                    int64_t bid1_qty[ENTRUST_LEN];              //买一队列数据


                    double  ask1_price;                         //卖一价
                    int32_t ask1_count;                         //卖一队列的有效委托笔数
                    int32_t max_ask1_count;                     //卖一队列总委托笔数
                    int64_t ask1_qty[ENTRUST_LEN];              //卖一队列数据
**/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

备注:Bid1Ask1 数据结构从 2.0.11 版本开始支持

# Bar

Bar 快照行情信息

/** 行情信息
 *  属性                      类型      说明              对应xtp字段
                    char trading_day[DATE_LEN];            //交易日
                    char instrument_id[INSTRUMENT_ID_LEN]; //合约代码
                    char exchange_id[EXCHANGE_ID_LEN];     //交易所代码

                    int64_t start_time;                    //开始时间
                    int64_t end_time;                      //结束时间

                    double open;                           //开
                    double close;                          //收
                    double low;                            //低
                    double high;                           //高

                    int64_t volume;                        //区间交易量
                    int64_t start_volume;                  //初始总交易量

                    int32_t tick_count;                    //区间有效tick数
 */

 /*  从 2.1.2 版本开始属性如下所示
                    char trading_day[DATE_LEN];            //交易日
                    char source_id[SOURCE_ID_LEN];         //柜台ID
                    char instrument_id[INSTRUMENT_ID_LEN]; //合约代码
                    char exchange_id[EXCHANGE_ID_LEN];     //交易所代码
                    char code[CODE_LEN];                   // 证券代码 例如: 600000.SH

                    char type[BAR_TYPE_LEN];               // 类型, 例如:bar_1min, bar_3min

                    // start_time 和 end_time 格式示例:2023-10-07 09:37:00
                    char start_time[START_TIME_LEN];       // 开始时间
                    char end_time[END_TIME_LEN];           // 结束时间

                    int64_t time_interval;                 // 周期,单位为分钟

                    double open;                           //开
                    double close;                          //收
                    double low;                            //低
                    double high;                           //高

                    int64_t volume;                        //区间交易量
                    int64_t start_volume;                  //初始总交易量
                    double  turnover;                      //区间成交金额
                    double  start_turnover;                //初始总成交金额

                    char period[BAR_PERIOD_LEN];           // 字符串表示的周期,如 1m, 5m, 1d, 1w(m代表分钟,d代表天,w代表周)
 */

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

# 逐笔委托

Entrust 逐笔委托

/** 逐笔委托
                    char source_id[SOURCE_ID_LEN];              //柜台ID
                    char trading_day[DATE_LEN];                 //交易日

                    int64_t data_time;                          //数据生成时间

                    char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];          //交易所代码

                    InstrumentType instrument_type;             //合约类型

                    double price;                               //委托价格
                    int64_t volume;                             //委托量
                    Side side;                                  //委托方向
                    PriceType price_type;                       //订单价格类型(市价、限价、本方最优)

                    int64_t main_seq;                           //主序号
                    int64_t seq;                                //子序号
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

备注:

上海市场撤单在逐笔委托里面,通过 entrust.price_type == PriceType.ShLevel2CancelOrder 来找到撤单;

深圳市场撤单在逐笔成交里面,通过 transaction.exec_type != ExecType.Trade 来找到撤单;

字段 main_seq,对应 XTP 数据中 XTPTickByTickEntrust 数据的 channel_no 字段;

字段 seq,对应 XTP 数据中 XTPTickByTickEntrust 数据的 seq 字段;

# 逐笔成交

Transaction 逐笔成交

  • 关联数据结构
  • ExecType(类型) 成交标识
  • BsFlag(类型) 内外盘标识
  • 如何判断逐笔成交是主动性买入还是主动性卖出?bs_flag 字段只对 上海市场 有意义;exec_type 字段只对 深圳市场 有意义。 上海市场只有成交才会发出来消息,撤单消息不会发出来,所以根据 bs_flag 字段判断主动买、卖就可以,集合竞价阶段该值是未知。 深圳市场不仅发送成交信息,还会发送撤单消息,通过 exec_type 来判断。如果撤单消息,看 bid_no(买方订单号) 和 ask_no(卖方订单号) 哪个非 0,就是哪方委托的。对于成交消息, 看 bid_no(买方订单号) 和 ask_no(卖方订单号) 哪个值较小,就是就是哪方委托的。
/** 逐笔成交
                    char source_id[SOURCE_ID_LEN];              //柜台ID
                    char trading_day[DATE_LEN];                 //交易日

                    int64_t data_time;                          //数据生成时间

                    char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];          //交易所代码

                    InstrumentType instrument_type;             //合约类型

                    double price;                               //成交价
                    int64_t volume;                             //成交量

                    int64_t bid_no;                             //买方订单号
                    int64_t ask_no;                             //卖方订单号

                    ExecType exec_type;                         //SZ: 成交标识
                    BsFlag bs_flag;                            //SH: 内外盘标识

                    int64_t main_seq;                               //主序号
                    int64_t seq;                                    //子序号
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

备注:

深圳市场撤单在逐笔成交里面,通过 transaction.exec_type != ExecType.Trade 来找到撤单;

上海市场撤单在逐笔委托里面,通过 entrust.price_type == PriceType.ShLevel2CancelOrder 来找到撤单;

字段 main_seq,对应 XTP 数据中 XTPTickByTickTrade 数据的 channel_no 字段;

字段 seq,对应 XTP 数据中 XTPTickByTickTrade 数据的 seq 字段;

# 静态行情

StaticQuote 静态行情信息

/** 静态行情信息
                    char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];          //交易所ID

                    InstrumentType instrument_type;             //合约类型

                    double pre_close_price;                     //昨收价
                    double upper_limit_price;                   //涨停板价
                    double lower_limit_price;                   //跌停板价

                    double price_tick;                         //最小变动价位
                    double buy_qty_unit;                    //合约最小交易量(买)
                    double sell_qty_unit;                       //合约最小交易量(卖)
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 全量静态行情

QuoteStaticFullInfo 股票行情全量静态信息(沪深交易所)

/** 股票行情全量静态信息
                    char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];          //交易所ID
                    char instrument_name[EXCHANGE_NAME_LEN];      //证券名称
                    InstrumentFullType instrument_full_type;    //合约类型
                    QualificationType qualification_class;      //合约适当性类别

                    //是否注册制(仅适用创业板股票,创新企业股票及存托凭证)
                    bool is_registration;
                    // 是否具有协议控制架构(仅适用创业板股票,创新企业股票及存托凭证)
                    bool is_VIE;
                    // 是否尚未盈利(仅适用创业板股票,创新企业股票及存托凭证)
                    bool is_noprofit;
                    // 是否存在投票权差异(仅适用创业板股票,创新企业股票及存托凭证)
                    bool is_weighted_voting_rights;
                    // 是否有涨跌幅限制
                    bool have_price_limit;

                    double upper_limit_price;                   //涨停板价(仅在有涨跌幅限制时有效)
                    double lower_limit_price;                   //跌停板价(仅在有涨跌幅限制时有效)
                    double pre_close_price;                     //昨收价
                    double price_tick;                          //最小变动价位

                    int32_t bid_qty_upper_limit;                //限价买委托数量上限
                    int32_t bid_qty_lower_limit;                //限价买委托数量下限
                    int32_t bid_qty_unit;                       //限价买数量单位

                    int32_t ask_qty_upper_limit;                //限价卖委托数量上限
                    int32_t ask_qty_lower_limit;                //限价卖委托数量下限
                    int32_t ask_qty_unit;                       //限价卖数量单位

                    int32_t market_bid_qty_upper_limit;         //市价买委托数量上限
                    int32_t market_bid_qty_lower_limit;         //市价买委托数量下限
                    int32_t market_bid_qty_unit;                //市价买数量单位

                    int32_t market_ask_qty_upper_limit;         //市价卖委托数量上限
                    int32_t market_ask_qty_lower_limit;         //市价卖委托数量上限
                    int32_t market_ask_qty_unit;                //市价卖数量单位

                    SecurityStatus security_status;             //证券状态
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# 新三板(北交所)全量静态信息

QuoteNQStaticFullInfo 新三板(北交所)股票全量静态信息

/** 股票行情全量静态信息
            char instrument_id[INSTRUMENT_ID_LEN];      //合约ID
            char exchange_id[EXCHANGE_ID_LEN];          //交易所ID
            char instrument_name[EXCHANGE_NAME_LEN];    //证券名称
            InstrumentFullType instrument_full_type;    //合约类型
            QualificationType qualification_class;      //合约适当性类别

            char instrument_abbr_en[EXCHANGE_NAME_LEN]; //英文简称
            char base_instrument_id[INSTRUMENT_ID_LEN];      //基础证券

            char industry_type[8];                              //行业种类
            char currency_type[8];                              //货币种类

            int32_t trade_unit;                                 //交易单位
            int32_t hang_out_date;                              //挂牌日期
            int32_t value_date;                                 //起息日期
            int32_t maturity_date;                              //到期日
            int32_t per_limit_vol;                              //每笔限量
            int32_t buy_vol_unit;                               //买数量单位
            int32_t sell_vol_unit;                              //卖数量单位
            int32_t mini_declared_vol;                          //最小申报数量
            int32_t limit_price_attr;                           //限价参数性质
            int32_t market_maker_quantity;                      //做市商数量

            double price_gear;                                  //价格档位
            double first_limit_trans;                           //首笔交易限价参数
            double subsequent_limit_trans;                      //后续交易限价参数
            double limit_upper_price;                           //涨停价格
            double limit_lower_price;                           //跌停价格
            double block_trade_upper;                           //大宗交易价格上限(预留,默认0)
            double block_trade_lower;                           //大宗交易价格下限(预留,默认0)
            double convert_into_ration;                         //折合比例

            TradeStatus        trade_status;           //交易状态
            SecurityLevel      security_level;         ///<证券级别
            TradeType          trade_type;             ///<交易类型
            SuspendFlag        suspend_flag;           ///<停牌标志
            ExDividendFlag    ex_dividend_flag;       ///<除权除息标志
            SecurityLayerType layer_type;             ///<分层信息

            char trade_places[8];                               ///<交易场所 预留
            char is_rzbd;                                       ///<是否融资标的 Y是 N否
            char is_rqbd;                                       ///<是否融券标的 Y是 N否
            char is_drrz;                                       ///<是否当日可融资 Y是 N否
            char is_drrq;                                       ///<是否当日可融券 Y是 N否
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

备注:QuoteNQStaticFullInfo 数据结构从 2.1.3 版本开始支持

# 账户信息

Asset 账户信息

/** 账户信息
                    int64_t update_time;               //更新时间
                    char trading_day[DATE_LEN];        //交易日

                    uint32_t holder_uid;
                    LedgerCategory ledger_category;

                    char source_id[SOURCE_ID_LEN];     //柜台ID
                    char broker_id[BROKER_ID_LEN];     //Broker ID
                    char account_id[ACCOUNT_ID_LEN];   //账号ID
                    char client_id[CLIENT_ID_LEN];     //client ID

                    double initial_equity;             //期初权益
                    double static_equity;              //静态权益
                    double dynamic_equity;             //动态权益

                    double realized_pnl;               //累计收益
                    double unrealized_pnl;

                    double avail;                      //可用资金
                    double market_value;               //市值(股票)
                    double total_asset;                //净资金

                    double margin;                     //保证金(期货)

                    double accumulated_fee;            //累计手续费
                    double intraday_fee;               //当日手续费

                    double frozen_cash;                //冻结资金(股票: 买入挂单资金; 期货: 冻结保证金+冻结手续费)
                    double frozen_margin;              //冻结保证金(期货)
                    double frozen_fee;                 //冻结手续费(期货)

                    double position_pnl;               //持仓盈亏(期货)
                    double close_pnl;                  //平仓盈亏(期货)
**/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 投资组合

Book 投资组合(包含资金信息与持仓信息,分为策略和账号两种类型)

/**

                    float avail;                            //可用资金(若book为账号类型,则为账号的可用资金;反之为策略的可用资金)
                    float margin;                           //保证金
                    float market_value;                     //市值
                    float initial_equity;                   //初始权益
                    float dynamic_equity;                   //动态权益
                    float static_equity;                    //静态权益
                    float realized_pnl;                     //已实现盈亏
                    float unrealized_pnl;                   //未实现盈亏
                      positions;                            //持仓(若book为账号类型,则为账号的持仓;反之为策略的持仓)

 */
1
2
3
4
5
6
7
8
9
10
11
12
13

# 期货持仓

Position 期货持仓

/**

var             instrument_id		        合约ID
InstrumentType  instrument_type		        合约类型
var             exchange_id		            交易所
Direction       direction		            方向
long            volume		                总仓
long            frozen_total                持仓冻结
long            yesterday_volume	        昨仓(:对股票来说,可卖持仓=yesterday_volume - frozen_yesterday)
long            frozen_yesterday            昨仓冻结
float           last_price		            最新价
float           settlement_price	        结算价
float           pre_settlement_price		昨结价
float           avg_open_price		        开仓均价
float           position_cost_price		    持仓成本
float           margin		                保证金
float           position_pnl		        持仓盈亏
float           realized_pnl		        已实现盈亏
float           unrealized_pnl		        未实现盈亏
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 股票持仓

Position 股票持仓

/**

var             instrument_id               合约ID
InstrumentType  instrument_type             合约类型
var             exchange_id                 交易所
Direction       direction                   方向
long            volume                      总仓
long            frozen_total                持仓冻结
long            yesterday_volume            昨仓(:对股票来说,可卖持仓=yesterday_volume - frozen_yesterday)
long            frozen_yesterday            昨仓冻结
float           last_price                  最新价
float           pre_close_price             昨收价
float           close_price                 收盘价
float           avg_open_price              开仓均价
float           position_cost_price         持仓成本
float           profit_price                盈亏成本
float           realized_pnl                已实现盈亏
float           unrealized_pnl              未实现盈亏
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 订单

Order 订单信息

/** 订单信息
                    uint64_t parent_id;                      //母订单ID
                    uint64_t order_id;                       //订单ID

                    int64_t insert_time;                     //订单写入时间, kungfu系统时间
                    int64_t update_time;                     //订单更新时间, kungfu系统时间

                    char trading_day[DATE_LEN];              //交易日

                    char instrument_id[INSTRUMENT_ID_LEN];   //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];       //交易所ID

                    char source_id[SOURCE_ID_LEN];           //柜台ID
                    char account_id[ACCOUNT_ID_LEN];         //账号ID
                    char client_id[CLIENT_ID_LEN];           //Client ID

                    InstrumentType instrument_type;          //合约类型

                    double limit_price;                      //价格
                    double frozen_price;                     //冻结价格,市价单冻结价格为0

                    int64_t volume;                          //数量
                    int64_t volume_traded;                   //成交数量
                    double  amount_traded;                   //成交金额
                    int64_t volume_left;                     //剩余数量

                    double tax;                              //税
                    double commission;                       //手续费

                    OrderStatus status;                      //订单状态

                    int32_t error_id;                        //错误ID
                    char error_msg[ERROR_MSG_LEN];           //错误信息

                    Side side;                               //买卖方向
                    Offset offset;                           //开平方向
                    HedgeFlag hedge_flag;                    //投机套保标识
                    PriceType price_type;                    //价格类型
                    VolumeCondition volume_condition;        //成交量类型
                    TimeCondition time_condition;            //成交时间类型

                    uint64_t external_order_id;// 柜台订单id,
                    uint32_t source;// order来源,

                    uint64_t external_cancel_order_id;//柜台撤单id
                    int64_t cancel_time;//柜台撤单时间
                    BusinessType business_type;//业务类型
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

# 成交信息

Trade 成交信息

/** 成交信息
                    uint64_t external_order_id;              //柜台订单id
                    uint64_t trade_id;                       //成交ID

                    uint64_t order_id;                       //订单ID
                    uint64_t parent_order_id;                //母订单ID

                    int64_t trade_time;                     //成交时间, xtp或ctp柜台时间
                    char trading_day[DATE_LEN];              //交易日

                    char instrument_id[INSTRUMENT_ID_LEN];   //合约ID
                    char exchange_id[EXCHANGE_ID_LEN];       //交易所ID
                    char source_id[SOURCE_ID_LEN];           //柜台ID
                    char account_id[ACCOUNT_ID_LEN];         //账号ID
                    char client_id[CLIENT_ID_LEN];           //Client ID

                    char exec_id[EXEC_ID_LEN];         //成交编号  XTP_EXEC_ID_LEN xtp为18,ctp为21,取kungfu定义的EXEC_ID_LEN,长度为32

                    InstrumentType instrument_type;          //合约类型

                    Side side;                               //买卖方向
                    Offset offset;                           //开平方向
                    HedgeFlag hedge_flag;                    //投机套保标识

                    double price;                            //成交价格
                    int64_t volume;                          //成交量
                    int64_t close_today_volume;              //平今日仓量(期货)

                    double tax;                              //税
                    double commission;                       //手续费

                    char trade_type;                //成交类型

                    ///成交金额,此次成交的总金额 = price*volume
                    double trade_amount;

                    //业务类型
                    BusinessType business_type;
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

# 撤单失败反馈信息

CancelOrderFeedBack 撤单失败反馈信息

/** 撤单失败反馈信息
                    uint64_t feedback_type;                  //反馈类型
                    uint64_t order_id;                       //订单ID

                    uint64_t xtp_order_id;                   //xtp订单ID
                    uint64_t xtp_action_id;                  //xtp action ID
                    uint64_t session_id;                     //xtp session_id

                    int error_id;                            //错误ID
                    char error_msg[ERROR_MSG_LEN];           //错误信息

                    uint64_t order_cancel_xtp_id;            //xtp撤单ID
 */
1
2
3
4
5
6
7
8
9
10
11
12
13

# 撤单失败反馈信息

OrderActionError 撤单失败反馈信息

/** 撤单失败反馈信息
                    uint64_t order_id;                       //订单ID
                    uint64_t order_action_id;                //订单操作ID
                    int32_t error_id;                        //错误ID
                    char error_msg[ERROR_MSG_LEN];           //错误信息


 */
1
2
3
4
5
6
7
8

# 融资融券特有帐户数据

CreditFundInfo 融资融券特有帐户数据

/** 融资融券特有帐户数据
                    int64_t update_time;                // 更新时间
                    char   source_id[SOURCE_ID_LEN];    // 柜台ID
                    char   account_id[ACCOUNT_ID_LEN];  // 账号ID
                    double maintenance_ratio;           // 维持担保品比例
                    double all_asset;                   // 总资产
                    double all_debt;                    // 总负债
                    double line_of_credit;              // 两融授信额度
                    double guaranty;                    // 两融保证金可用数
                    double reserved;                    // 保留字段
**/
1
2
3
4
5
6
7
8
9
10
11

备注:CreditFundInfo 数据结构从 2.0.8 版本开始支持

# 现金直接还款通知信息

CreditCashRepayRsp 融资融券业务中查询到的某一笔现金直接还款通知的具体信息

/** 现金直接还款通知信息
                    int64_t update_time;                           //更新时间
                    int64_t xtp_id;                                //直接还款操作的XTPID
                    CrdCRStatus status;                            //直接还款处理状态
                    double  request_amount;                        //直接还款的申请金额
                    double  cash_repay_amount;                     //实际还款使用金额
**/
1
2
3
4
5
6
7

备注:CreditCashRepayRsp 数据结构从 2.0.8 版本开始支持

# 可融券头寸

CrdPositionStkInfo 融券头寸证券信息

/** 融券头寸证券信息
                    int64_t update_time;                        ///<更新时间
                    char instrument_id[INSTRUMENT_ID_LEN];      ///<证券代码
                    char exchange_id[EXCHANGE_ID_LEN];          ///<证券市场

                    int64_t limit_qty;                          ///< 融券限量(保留字段)
                    int64_t yesterday_qty;                      ///< 昨日日融券数量(保留字段)
                    int64_t left_qty;                           ///< 剩余可融券数量
                    int64_t frozen_qty;                         ///< 冻结融券数量(保留字段)
**/
1
2
3
4
5
6
7
8
9
10

备注:CrdPositionStkInfo 数据结构从 2.0.11 版本开始支持

# 负债合约信息

CrdDebtInfo 单条融资融券负债记录信息

/** 单条融资融券负债记录信息
                    int64_t             update_time;            ///<更新时间
                    int32_t             debt_type;              ///< 负债合约类型:0为融资,1为融券,2未知

                    char                debt_id[33];            ///< 负债合约编号
                    int64_t             position_id;            ///< 负债对应两融头寸编号
                    uint64_t            order_xtp_id;           ///< 生成负债的订单编号,非当日负债无此项

                    int32_t             debt_status;            ///< 负债合约状态:0为未偿还或部分偿还,1为已偿还,2为过期未平仓,3未知

                    char instrument_id[INSTRUMENT_ID_LEN];      ///<证券代码
                    char exchange_id[EXCHANGE_ID_LEN];          ///<证券市场

                    uint64_t            order_date;             ///< 委托日期
                    uint64_t            end_date;               ///< 负债截止日期
                    uint64_t            orig_end_date;          ///< 负债原始截止日期

                    bool                is_extended;            ///< 当日是否接收到展期请求:false为没收到,true为收到

                    double              remain_amt;             ///< 未偿还金额
                    int64_t             remain_qty;             ///< 未偿还融券数量
                    double              remain_principal;       ///< 未偿还本金金额
                    int64_t				due_right_qty;			///< 应偿还权益数量
**/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

备注:CrdDebtInfo 数据结构从 2.0.11 版本开始支持

# 指定证券的融券负债信息

CrdDebtStockInfo 指定证券的融券负债相关信息

/** 融资融券指定证券的融券负债相关信息
                    int64_t             update_time;            ///<更新时间

                    char instrument_id[INSTRUMENT_ID_LEN];      ///<证券代码
                    char exchange_id[EXCHANGE_ID_LEN];          ///<证券市场

                    int64_t         stock_repay_quantity;       ///< 融券负债可还券数量
                    int64_t         stock_total_quantity;       ///< 融券负债未还总数量
**/
1
2
3
4
5
6
7
8
9

备注:CrdDebtStockInfo 数据结构从 2.0.11 版本开始支持

# 资金划转反馈消息

FundTransferFeedBack 资金划转反馈消息

该数据结构在 2.0.11 版本及之前, 定义如下:

/** 资金划转反馈消息
                    uint64_t                serial_id;         ///资金内转编号
                    FUND_TRANSFER_TYPE      transfer_type;     ///内转类型
                    double                  amount;            ///金额
                    FUND_OPER_STATUS        oper_status;       ///操作结果
                    uint64_t                transfer_time;     ///操作时间
                    uint32_t                holder_uid;        ///用于区分哪类book需要处理这个消息,类似于Asset与Position消息
**/
1
2
3
4
5
6
7
8

该数据结构从 2.1.0 版本开始, 定义如下:

/** 资金划转反馈消息
        struct FundTransferFeedBack
        {
            uint64_t                serial_id;         ///资金内转编号
            FundTransferType      transfer_type;     ///内转类型
            double                  amount;            ///金额
            FUND_OPER_STATUS        oper_status;       ///操作结果
            uint64_t                transfer_time;     ///操作时间
            uint32_t                holder_uid;        ///用于区分哪类book需要处理这个消息,类似于Asset与Position消息
        }
**/
1
2
3
4
5
6
7
8
9
10
11

# 资金查询反馈消息

FundQueryFeedBack 资金查询反馈消息

该数据结构在 2.0.11 版本及之前, 定义如下:

/** 资金查询反馈消息
                    ///金额
                    double        amount;
                    ///资金查询类型
                    FUND_QUERY_TYPE    query_type;
**/
1
2
3
4
5
6

该数据结构从 2.1.0 版本开始, 定义如下:

/** 资金划转反馈消息
        struct FundQueryFeedBack
        {
            double        amount;          ///金额
            FundQueryType    query_type;   ///查询类型
        }
**/
1
2
3
4
5
6
7

# XTP 算法交易策略信息

AlgoStrategyInfo 策略信息结构体

/** XTP算法交易策略信息结构体
                    uint16_t				strategy_type;		///< 策略类型
                    AlgoStrategyStatus  	strategy_state;		///< 策略状态
                    uint64_t				client_strategy_id;	///< 客户策略id
                    uint64_t				xtp_strategy_id;	///< xtp策略id
                    uint32_t                source;             ///< AlgoStrategyInfo来源
                    int32_t                 error_id;                   ///< 错误ID
                    char                    error_msg[ERROR_MSG_LEN];   ///< 错误信息
**/
1
2
3
4
5
6
7
8
9

备注:AlgoStrategyInfo 数据结构从 2.0.12 版本开始支持

# XTP 算法交易策略状态结构体信息

AlgoStrategyStateReport 策略状态结构体

/** XTP算法交易策略状态结构体
                    AlgoStrategyInfo		strategy_info;			    ///< 策略信息
                    int64_t					strategy_qty;			    ///< 策略总量
                    int64_t					strategy_ordered_qty;	    ///< 策略已委托数量
                    int64_t					strategy_cancelled_qty;	    ///< 策略已撤单数量
                    int64_t					strategy_execution_qty;	    ///< 策略已成交数量
                    int64_t					strategy_unclosed_qty;	    ///< 策略未平仓数量(T0卖出数量-买入数量)
                    double					strategy_asset;			    ///< 策略总金额
                    double					strategy_ordered_asset;	    ///< 策略已委托金额
                    double					strategy_execution_asset;	///< 策略已成交金额
                    double					strategy_execution_price;	///< 策略执行价格
                    double					strategy_market_price;	    ///< 策略市场价
                    double					strategy_price_diff;		///< 策略执行价差
                    double					strategy_asset_diff;		///< 策略执行绩效(T0资金预净收入)
**/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

备注:AlgoStrategyStateReport 数据结构从 2.0.12 版本开始支持

# XTP ETF 清单结构体信息

ETFBase XTP ETF 清单结构体

/** XTP ETF清单结构体
                    // 交易所ID
                    char exchange_id[EXCHANGE_ID_LEN];
                    // etf代码,买卖,申赎统一使用该代码
                    char etf[INSTRUMENT_ID_LEN];
                    // etf申购赎回代码
                    char subscribe_redemption_ticker[INSTRUMENT_ID_LEN];
                    // 最小申购赎回单位对应的ETF份数,例如上证"50ETF"就是900000
                    int32_t unit;
                    // 是否允许申购,1-允许,0-禁止
                    int32_t subscribe_status;
                    // 是否允许赎回,1-允许,0-禁止
                    int32_t redemption_status;
                    // 最大现金替代比例,小于1的数值
                    double max_cash_ratio;
                    // T日预估金额差额
                    double estimate_amount;
                    // T-X日现金差额
                    double cash_component;
                    // 基金单位净值
                    double net_value;
                    // 最小申赎单位净值总金额=net_value*unit
                    double total_amount;
**/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

备注:ETFBase 数据结构从 2.0.12 版本开始支持

# XTP ETF 成分股结构体信息

ETFBasket XTP ETF 成分股结构体

/** XTP ETF成分股结构体
                    // 交易所ID
                    char exchange_id[EXCHANGE_ID_LEN];
                    // ETF代码
                    char instrument_id[INSTRUMENT_ID_LEN];
                    // 成份股代码
                    char component_instrument_id[INSTRUMENT_ID_LEN];
                    // 成份股名称
                    char component_name[EXCHANGE_NAME_LEN];
                    // 成份股交易市场
                    char component_exchange_id[EXCHANGE_ID_LEN];
                    // 成份股数量
                    int64_t quantity;
                    // 成份股替代标识
                    ETFReplaceType replace_type;
                    // 溢价比例
                    double premium_ratio;
                    // 成分股替代标识为必须现金替代时候的总金额
                    double amount;
                    // 申购溢价比例
                    double creation_premium_ratio;
                    // 赎回溢价比例
                    double redemption_discount_ratio;
                    // 申购时,成分股替代标识为必须现金替代时候的总金额
                    double creation_amount;
                    // 赎回时,成分股替代标识为必须现金替代时候的总金额
                    double redemption_amount;
**/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

备注:ETFBasket 数据结构从 2.0.12 版本开始支持

# 合约类型

InstrumentType 合约类型

/** 合约类型
        enum class InstrumentType: int8_t
        {
            Unknown,       //未知
            Stock,         //普通股票
            Future,        //期货
            Bond,          //债券
            StockOption,   //股票期权
            Fund,          //基金
            TechStock,     //科创板股票
            Index,         //指数
            Repo           //回购
        };
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 合约详细类型

InstrumentFullType 合约详细类型

/** 合约详细类型
        enum class InstrumentFullType: int8_t
        {
            Unknown = 0,                 //未知/其他
            MainBoard,                   //主板股票
            SecondBoard,                 //中小板股票
            StartupBoard,                //创业板股票
            Index,                       //指数
            TechBoard = 5,               //科创板股票(上海)
            StateBond,                   //国债
            EnterpriceBond,              //企业债
            CompaneyBond,                //公司债
            ConvertableBond = 9,         //转换债券
            NationalBondReverseRepo = 13,//国债逆回购
            ETFSingleMarketStock = 15,   //本市场股票 ETF
            ETFInterMarketStock,         //跨市场股票 ETF
            ETFCrossBorderStock,         //跨境股票 ETF
            ETFSingleMarketBond,         //本市场实物债券 ETF
            ETFSecurityCashBond,         //现金债券 ETF
            ETFGold = 20,                //黄金 ETF
            ETFCommondityFutures = 23,   //商品期货ETF
            StructuredFundChild = 25,    //分级基金子基金
            SZSERecreationFund = 27,     //深交所仅申赎基金
            StockOption = 30,            //个股期权
            ETFOption = 31,              //ETF期权
            Allotment = 101,             //配股
            MonetaryFundSHcr = 111,      //上交所申赎型货币基金
            MonetaryFundSHtr = 112,      //上交所交易型货币基金
            MonetaryFundSZ = 113         //深交所货币基金
        };
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 证券适当性枚举类型

QualificationType 证券适当性枚举类型

/** 证券适当性枚举类型
        enum class QualificationType: int8_t
        {
            Unknown,        //未知,期权等可能为此种类型
            Public,         //公众投资者,合格投资者与机构投资者均可
            Common,         //仅合格投资者与公众投资者
            Organization    //仅限机构投资者
        };
 */
1
2
3
4
5
6
7
8
9

# 证券状态枚举类型

SecurityStatus 证券状态枚举类型

/** 证券状态枚举类型
        enum class SecurityStatus: int8_t
        {
            ST = 0,         ///< 风险警示板
            N_IPO,          ///< 首日上市
            COMMON,         ///< 普通
            RESUME,         ///< 恢复上市
            DELISTING = 10, ///< 退市整理期
            OTHERS = 127    ///< 其他
        };
 */
1
2
3
4
5
6
7
8
9
10
11

# 交易状态枚举类型

TradeStatus 交易状态枚举类型

/** 交易状态枚举类型
    enum class TradeStatus : int8_t
    {
        TRADE_STATUS_UNKNOW = 0, 		///< 未知状态
        TRADE_STATUS_N,					///< 正常状态
        TRADE_STATUS_Y,					///< 首日挂牌
        TRADE_STATUS_D,					///< 新增股票挂牌交易
        TRADE_STATUS_I,					///< 询价
        TRADE_STATUS_F,					///< 申购
    };
 */
1
2
3
4
5
6
7
8
9
10
11

备注: TradeStatus 枚举类型从 2.1.3 版本开始支持

# 证券级别枚举类型

SecurityLevel 证券级别枚举类型

/** 证券级别枚举类型
    enum class SecurityLevel : int8_t
    {
        SECURITY_LEVEL_UNKNOW = 0, 		///< 未知类型
        SECURITY_LEVEL_T,				///< 挂牌公司股票
        SECURITY_LEVEL_B,				///< 两网公司及退市股票
        SECURITY_LEVEL_O,				///< 仅提供行权功能的期权
        SECURITY_LEVEL_P,				///< 持有人数存在200人限制的证券
        SECURITY_LEVEL_R,				///< 其他类型的业务
        SECURITY_LEVEL_F,				///< 发行业务
    };
 */
1
2
3
4
5
6
7
8
9
10
11
12

备注: SecurityLevel 枚举类型从 2.1.3 版本开始支持

# 交易类型枚举类型

TradeType 交易类型枚举类型

/** 交易类型枚举类型
    enum class TradeType : int8_t
    {
        TRADE_TYPE_UNKNOW = 0,			///< 未知类型
        TRADE_TYPE_T,					///< 协议交易方式
        TRADE_TYPE_M,					///< 做市交易方式
        TRADE_TYPE_B,					///< 集合竞价+连续交易方式
        TRADE_TYPE_C,					///< 集合竞价交易方式
        TRADE_TYPE_P,					///< 发行方式
        TRADE_TYPE_O,					///< 其他类型
    };
 */
1
2
3
4
5
6
7
8
9
10
11
12

备注: TradeType 枚举类型从 2.1.3 版本开始支持

# 停牌标志枚举类型

SuspendFlag 停牌标志枚举类型

/** 停牌标志枚举类型
    enum class SuspendFlag : int8_t
    {
        SUSPEND_FLAG_UNKNOW = 0,		///< 未知状态
        SUSPEND_FLAG_F,					///< 正常交易
        SUSPEND_FLAG_T,					///< 停牌,不接受申报
        SUSPEND_FLAG_H,					///< 停牌,接受申报
    };
 */
1
2
3
4
5
6
7
8
9

备注: SuspendFlag 枚举类型从 2.1.3 版本开始支持

# 除权除息标志枚举类型

ExDividendFlag 除权除息标志枚举类型

/** 除权除息标志枚举类型
    enum class ExDividendFlag : int8_t
    {
        EX_DIVIDEND_FLAG_UNKNOW = 0,	///< 未知状态
        EX_DIVIDEND_FLAG_N,				///< 正常状态
        EX_DIVIDEND_FLAG_E,				///< 除权
        EX_DIVIDEND_FLAG_D,				///< 除息
        EX_DIVIDEND_FLAG_A,				///< 除权除息
    };
 */
1
2
3
4
5
6
7
8
9
10

备注: ExDividendFlag 枚举类型从 2.1.3 版本开始支持

# 股转代码分层类型枚举类型

SecurityLayerType 股转代码分层类型枚举类型

/** 股转代码分层类型枚举类型
    enum class SecurityLayerType : int8_t
    {
        SECURITY_LAYER_BASIC = 0,		///< 基础层
        SECURITY_LAYER_INNOVATIVE = 1,	///< 创新层
        SECURITY_LAYER_NORTH_EX = 2,	///< 北交所
        SECURITY_LAYER_OTHER = 8,		///< 其他
    };
 */
1
2
3
4
5
6
7
8
9

备注: SecurityLayerType 枚举类型从 2.1.3 版本开始支持

# 成交标识

ExecType 成交标识

/** 成交标识
        enum class ExecType: int8_t
        {
            Unknown,
            Cancel,
            Trade
        };
 */
1
2
3
4
5
6
7
8

# 内外盘标识

BsFlag 内外盘标识

/** 内外盘标识
        enum class BsFlag: int8_t
        {
            Unknown,
            Buy,
            Sell
        };
 */
1
2
3
4
5
6
7
8

# 撤单失败反馈信息

CancelOrderFeedBack 撤单失败反馈信息

/** 撤单失败反馈信息
                    uint64_t feedback_type;                  //反馈类型
                    uint64_t order_id;                       //订单ID

                    uint64_t xtp_order_id;                   //xtp订单ID
                    uint64_t xtp_action_id;                  //xtp action ID
                    uint64_t session_id;                     //xtp session_id

                    int error_id;                            //错误ID
                    char error_msg[ERROR_MSG_LEN];           //错误信息

                    uint64_t order_cancel_xtp_id;            //xtp撤单ID
 */
1
2
3
4
5
6
7
8
9
10
11
12
13

# 柜台类型

Source_id 柜台类型

/** 柜台类型
       BAR: "bar", //bar
       XTP: "xtp", //xtp
       CTP: "ctp", //ctp
       SIM: "sim", //sim
 */
1
2
3
4
5
6

# 交易所代码

Exchange_id 交易所代码

/**
       Unknown: 0, //未知 xtp:3 XTP_MKT_UNKNOWN 或 0 XTP_MKT_INIT初始化值或者未知
       SZE: "SZE", //深交所 xtp:1 XTP_MKT_SZ_A深圳A股
       SSE: "SSE", //上交所 xtp:2 XTP_MKT_SH_A上海A股
       BSE: "BSE", //北交所
       SHFE: "SHFE", //上期所
       DCE: "DCE", //大商所
       CZCE: "CZCE", //郑商所
       CFFEX: "CFFEX", //中金所
       INE: "INE", //能源中心
 */
1
2
3
4
5
6
7
8
9
10
11

# 订阅全市场行情类型

AllMarketDataType 全市场行情订阅类型

/**
            type_unkown = 0,           //未知
            type_market_data,          //订阅全市场快照行情
            type_tick_by_tick,         //订阅全市场逐笔行情
            type_order_book,           //订阅全市场订单簿行情
            type_bid1_ask1,            //订阅全市场买一卖一队列行情
            type_bar,                  //订阅全市场bar行情
            type_option_market_data,   //订阅全市期权场行情
            type_option_tick_by_tick,  //订阅全市场期权逐笔行情
            type_option_order_book     //订阅全市场期权行情订单簿
 */
1
2
3
4
5
6
7
8
9
10
11
  • priceType(入参) PriceType (类型),价格类型。
  • side(入参) Side (类型),买卖方向。
  • offset(入参) Offset (类型),开平仓标识。

# 价格类型

PriceType 价格类型

/**
            Limit,                  //限价,证券通用
            Any,                    //市价,证券通用,对于股票上海为最优五档剩余撤销,深圳为即时成交剩余撤销,建议客户采用
            FakBest5,               //上海深圳最优五档即时成交剩余撤销,上交所的市价需要报价,深交所的市价不需要报价
            ForwardBest,            //深圳本方最优价格申报, 不需要报价
            ReverseBest,            //上海最优五档即时成交剩余转限价,需要报价; 深圳对手方最优价格申报,不需要报价
            Fak,                    //深圳即时成交剩余撤销,不需要报价
            Fok,                    //深圳市价全额成交或者撤销,不需要报价
            UnKnown,
            ShLevel2InsertOrder,    //上海市场level2行情逐笔委托中下单标识
            ShLevel2CancelOrder     //上海市场level2行情逐笔委托中撤单标识
 */
1
2
3
4
5
6
7
8
9
10
11
12

# 买卖方向

Side 买卖方向

/**
            Buy,            // 买
            Sell,           // 卖
            Lock,           // 锁定(功夫原生)
            Unlock,         // 解锁(功夫原生)
            Exec,           // 执行
            Drop,           // 放弃
            Purchase = 107, // 申购
            Redemption,     // 赎回
            Split,          // 拆分
            Merge,          // 合并
            Cover,          // 备兑
            Freeze,         // 锁定(对应开平标识为开)/解锁(对应开平标识为平)
            MarginTrade,    // 融资买入
            ShortSell,      // 融券卖出
            RepayMargin,    // 卖券还款
            RepayStock,     // 买券还券
            StockRepayStock,// 现券还券
            Unknown         // 未知或者无效买卖方向
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 开平仓标识

Offset 开平仓标识

/**
            Unknown = -2,   /// 未知的开平标识类型
            Init = -1,    /// 初始值或未知值开平标识,现货适用
            Open = 0,   /// 开
            Close = 1,    /// 平
            CloseToday = 2,  /// 平今
            CloseYesterday = 3,/// 平昨
            ForceClose = 4,   /// 强平
            ForceOff = 5,    /// 强减
            LocalForceClose,    /// 本地强平
            CreditForceCover,    /// 信用业务追保强平
            CreditForceClear,    /// 信用业务清偿强平
            CreditForceDebt,    /// 信用业务合约到期强平
            CreditForceUncond   /// 信用业务无条件强平
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 投机套保标识

HedgeFlag 投机套保标识

/**
            Speculation,    //投机, (默认为Speculation)
            Arbitrage,      //套利
            Hedge,          //套保
            Covered         //备兑
 */
1
2
3
4
5
6

# 订单状态标识

OrderStatus 订单状态标识

/**
            Unknown,(默认为Unknown)     //未知
            Submitted,                 //已提交
            Pending,                   //已挂单
            Cancelled,                 //已撤单
            Error,                     //错误,废单
            Filled,                    //已成交
            PartialFilledNotActive,    //部分成交部分撤单
            PartialFilledActive        //部分成交
 */
1
2
3
4
5
6
7
8
9
10

# 业务类型标识

BusinessType 业务类型标识

/**
            CASH,                                 ///<普通股票业务(股票买卖,ETF买卖等)
            IPOS,                                 ///<新股申购业务(对应的price type需选择限价类型)
            REPO,                                 ///<回购业务 ( 对应的price type填为限价,side填为卖 )
            ETF,                                  ///<ETF申赎业务
            MARGIN,                               ///<融资融券业务(暂未支持)
            DESIGNATION,                          ///<转托管(未支持)
            ALLOTMENT,                            ///<配股业务(对应的price type需选择限价类型,side填为买)
            STRUCTURED_FUND_PURCHASE_REDEMPTION,  ///<分级基金申赎业务
            STRUCTURED_FUND_SPLIT_MERGE,          ///<分级基金拆分合并业务
            MONEY_FUND,                           ///<货币基金业务(暂未支持)
            OPTION,                               ///<期权业务
            EXECUTE,                              ///<行权
            FREEZE,                               ///<锁定解锁,暂不支持
            OPTION_COMBINE,                       ///<期权组合策略 组合和拆分业务
            EXECUTE_COMBINE,                      ///<期权行权合并业务
            BOND_SWAP_STOCK,                      ///<债转股业务
            UNKNOWN                               ///<未知类型
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 资金划转类型

FUND_TRANSFER_TYPE 资金划转类型 1

 /**
            FUND_TRANSFER_OUT = 0,         ///<转出 从XTP转出到主柜台
            FUND_TRANSFER_IN,              ///<转入 从主柜台转入XTP
            FUND_INTER_TRANSFER_OUT,       ///<跨节点转出 从本XTP节点1,转出到对端XTP节点2,XTP服务器之间划拨,只能双节点账户使用
            FUND_INTER_TRANSFER_IN,        ///<跨节点转入 从对端XTP节点2,转入到本XTP节点1,XTP服务器之间划拨,只能双节点账户使用
            FUND_TRANSFER_UNKNOWN          ///<未知类型
 */
1
2
3
4
5
6
7

备注: FUND_TRANSFER_TYPE 枚举类型, 在 2.0.9、2.0.10、2.0.11 三个版本中支持,从 2.1.0 版本开始废弃;

FundTransferType 资金划转类型 2

 /**
    enum class FundTransferType : int8_t
    {
        FundTransferOut = 0,          ///<转出 从XTP转出到柜台
        FundTransferIn,               ///<转入 从柜台转入XTP
        FundInterTransferOut,         ///<跨节点转出 从本XTP节点1,转出到对端XTP节点2,XTP服务器之间划拨,只能跨账户用户使用
        FundInterTransferIn,          ///<跨节点转入 从对端XTP节点2,转入到本XTP节点1,XTP服务器之间划拨,只能跨账户用户使用
        FundInterTransferRepayOut,    ///<跨节点转出 融券卖出资金 从本XTP节点1,转出到对端XTP节点2,XTP服务器之间划拨
        FundInterTransferRepayIn,     ///<跨节点转入 融券卖出资金 从对端XTP节点2,转入到本XTP节点1,XTP服务器之间划拨
        FundInterTransferContractOut, ///<跨节点转出 授信额度 从本XTP节点1,转出到对端XTP节点2,XTP服务器之间划拨
        FundInterTransferContractIn,  ///<跨节点转入 授信额度 从对端XTP节点2,转入到本XTP节点1,XTP服务器之间划拨
        FundTransferUnknown           ///<未知类型
    };
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14

备注: FundTransferType 枚举类型, 从 2.1.0 版本开始支持;

# 资金查询类型

FUND_QUERY_TYPE 资金查询类型 1

/**
            FUND_QUERY_JZ = 0,         ///<查询金证主柜台可转资金
            FUND_QUERY_INTERNAL,       ///<查询一账号两中心设置时,对方节点的资金
            FUND_QUERY_UNKNOWN         ///<未知类型
 */
1
2
3
4
5

备注: FUND_QUERY_TYPE 枚举类型, 在 2.0.9、2.0.10、2.0.11 三个版本中支持,从 2.1.0 版本开始废弃;

FundQueryType 资金查询类型 2

/**
    enum class FundQueryType : int8_t
    {
        FundQueryJz = 0,           ///<查询金证主柜台可转资金
        FundQueryInternal,         ///<查询一账号两中心设置时,对方节点的资金
        FundQueryInternalRepay,	   ///<查询一账号两中心设置时,对方节点的融券卖余额资金
        FundQueryInternalContract, ///<查询一账号两中心设置时,对方节点的授信额度
        FundQueryUnknown           ///<未知类型
    };
 */
1
2
3
4
5
6
7
8
9
10

备注: FundQueryType 枚举类型, 从 2.1.0 版本开始支持;

# 融资融券直接还款状态类型

CrdCRStatus 融资融券直接还款状态类型

/**
            Unknown = 0,     // 未知状态
            Init,            // 初始、未处理状态
            Success,         // 已成功处理状态
            Failed           // 处理失败状态
 */
1
2
3
4
5
6

备注:CrdCRStatus 枚举类型从 2.0.8 版本开始支持

# XTP 算法交易策略状态类型

AlgoStrategyStatus 算法交易策略状态类型

/**
            Creating = 0,    // 创建中
            Created,         // 已创建
            Starting,        // 开始执行中
            Started,         // 已执行
            Stopping,        // 停止中
            Stopped,         // 已停止
            Destroying,      // 销毁中
            Destroyed,       // 已销毁
            Error            // 发生错误
 */
1
2
3
4
5
6
7
8
9
10
11

备注:AlgoStrategyStatus 枚举类型从 2.0.12 版本开始支持

# XTP ETF 现金替代类型

ETFReplaceType ETF 现金替代类型

/**
            // 禁止现金替代
            ERTCashForbidden = 0,
            // 可以现金替代
            ERTCashOptional,
            // 必须现金替代
            ERTCashMust,
            // 深市退补现金替代
            ERTCashRecomputeInterSZ,
            // 深市必须现金替代
            ERTCashMustInterSZ,
            // 非沪深市场成分证券退补现金替代(不适用于跨沪深港ETF产品)
            ERTCashRecomputeInterOther,
            // 表示非沪深市场成份证券必须现金替代(不适用于跨沪深港ETF产品)
            ERTCashMustInterOther,
            // 港市退补现金替代(仅适用于跨沪深港ETF产品)
            ERTCashRecomputeInterHK,
            // 港市必须现金替代(仅适用于跨沪深港ETF产品)
            ERTCashMustInterHK,
            // 无效值
            EPTInvalid
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

备注:ETFReplaceType 枚举类型从 2.0.12 版本开始支持

# c++分页数据

struct DataPageInfo {
    nlohmann::json data;         // 查询结果集,是一个 json array
    uint32_t currentPage;        // 当前页码数
    uint32_t totalPage;          // 总页数
    uint32_t pageSize;           // 每页记录数
    uint32_t totalCount;         // 总记录数
}
// data 的格式如下所示
{
    "code": 200,    // 错误码,当code的值为 200时表示查询成功,其它值均表示查询失败
    "msg": "",      // 错误消息
    "data: {} // 查询到的结果,类型为nlohmann::json 中的 json 数组,数组中的每个 json 对象代表条查询结果
}
1
2
3
4
5
6
7
8
9
10
11
12
13

备注:c++ 分页数据从 2.1.2 开始支持

# python 分页数据

class DataPageInfo :
    def __init__(self):
        self.currentPage = None # 当前页码数
        self.pageSize = None # 每页记录数
        self.totalCount = None # 总记录数
        self.totalPage = None # 总页数
        self.data = {} # 查询结果集,类型为 dict

# data 的格式如下所示
{
    "code": 200,    # 错误码,当code的值为 200时表示查询成功,其它值均表示查询失败
    "msg": "",      # 错误消息
    "data:    # 查询到的数据,格式由参数 out_format 指定 可能为 List、DataFrame或Ndarray
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

备注:python 分页数据从 2.1.2 开始支持

# python 接口中用于指定查询结构类型的枚举类

class OutFormat():
    Unknown = "Unknown"  # 未知,传些参数和传 List 效果相同
    List = "List"  # list类型
    DataFrame = "DataFrame"  # DataFrame类型
    Ndarray = "Ndarray" #  Ndarray类型
1
2
3
4
5

# XTP 查询当日可申购新股/新债信息

IPOTickerInfo 查询当日可申购新股/新债信息

/**
            // 交易所ID
            char exchange_id[EXCHANGE_ID_LEN];
            // 申购代码
            char instrument_id[INSTRUMENT_ID_LEN];
            // 申购名称
            char instrument_name[EXCHANGE_NAME_LEN];
            // 合约类型
            InstrumentType instrument_type;
            // 申购价格
            double price;
            // 申购单元
            int32_t unit;
            // 最大允许申购数量
            int32_t qty_upper_limit;

            // 错误ID
            int32_t error_id;
            // 错误信息
            char error_msg[ERROR_MSG_LEN];
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

备注:IPOTickerInfo 枚举类型从 2.1.2 版本开始支持

# XTP 查询债转股请求信息

QueryBondSwapStockReq 查询债转股请求信息

/**
            // 合约ID
            char instrument_id[INSTRUMENT_ID_LEN];
            // 交易所ID
            char exchange_id[EXCHANGE_ID_LEN];
 */
1
2
3
4
5
6

备注:QueryBondSwapStockReq 枚举类型从 2.1.2 版本开始支持

# XTP 查询债转股响应信息

QueryBondSwapStockRsp 查询债转股响应信息

/**
            // 债券证券代码
            char instrument_id[INSTRUMENT_ID_LEN];
            //交易所ID
            char exchange_id[EXCHANGE_ID_LEN];
            // 转股后的股票证券代码
            char underlying_instrument_id[INSTRUMENT_ID_LEN];
            // 转换数量单位(张)
            int32_t unit;
            // 最小下单量(张)
            int64_t qty_min;
            // 最大下单量(张)
            int64_t qty_max;
            // 转股价格
            double swap_price;
            // 是否处于转股期;0: 不可转股;1:可转股;
            int32_t swap_flag;

            // 错误ID
            int32_t error_id;
            // 错误信息
            char error_msg[ERROR_MSG_LEN];
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

备注:QueryBondSwapStockRsp 枚举类型从 2.1.2 版本开始支持