6.6.1P1_API接口说明目录

> 6.6.1P1_API接口说明

  主页

  阅读指引

  文档版本与重要更新

  6.6.1P1版本更新说明

  6.5.1版本更新说明

  6.5.1版本更新说明补充说明

  > 看穿式监管数据采集说明

    常见FAQ

    CTP-GetSystemInfo

  > 行情接口

    > CThostFtdcMdApi

      CreateFtdcMdApi

      GetApiVersion

      GetTradingDay

      Init

      Join

      RegisterFensUserInfo

      RegisterFront

      RegisterNameServer

      RegisterSpi

      Release

      ReqQryMulticastInstrument

      ReqUserLogin

      ReqUserLogout

      SubscribeForQuoteRsp

      SubscribeMarketData

      UnSubscribeForQuoteRsp

      UnSubscribeMarketData

    > CThostFtdcMdSpi

      OnFrontConnected

      OnFrontDisconnected

      OnHeartBeatWarning

      OnRspError

      OnRspQryMulticastInstrument

      OnRspSubForQuoteRsp

      OnRspSubMarketData

      OnRspUnSubForQuoteRsp

      OnRspUnSubMarketData

      OnRspUserLogin

      OnRspUserLogout

      OnRtnDepthMarketData

      OnRtnForQuoteRsp

  > 交易接口

    > CThostFtdcTraderSpi

      OnErrRtnBankToFutureByFuture

      OnErrRtnBatchOrderAction

      OnErrRtnCombActionInsert

      OnErrRtnExecOrderAction

      OnErrRtnExecOrderInsert

      OnErrRtnForQuoteInsert

      OnErrRtnFutureToBankByFuture

      OnErrRtnOptionSelfCloseAction

      OnErrRtnOptionSelfCloseInsert

      OnErrRtnOrderAction

      OnErrRtnOrderInsert

      OnErrRtnQueryBankBalanceByFuture

      OnErrRtnQuoteAction

      OnErrRtnQuoteInsert

      OnErrRtnRepealBankToFutureByFutureManual

      OnErrRtnRepealFutureToBankByFutureManual

      OnFrontConnected

      OnFrontDisconnected

      OnHeartBeatWarning

      OnRspAuthenticate

      OnRspBatchOrderAction

      OnRspCombActionInsert

      OnRspError

      OnRspExecOrderAction

      OnRspExecOrderInsert

      OnRspForQuoteInsert

      OnRspFromBankToFutureByFuture

      OnRspFromFutureToBankByFuture

      OnRspGenUserCaptcha

      OnRspGenUserText

      OnRspOptionSelfCloseAction

      OnRspOptionSelfCloseInsert

      OnRspOrderAction

      OnRspOrderInsert

      OnRspParkedOrderAction

      OnRspParkedOrderInsert

      OnRspQryAccountregister

      OnRspQryBrokerTradingAlgos

      OnRspQryBrokerTradingParams

      OnRspQryCFMMCTradingAccountKey

      OnRspQryCombAction

      OnRspQryCombInstrumentGuard

      OnRspQryContractBank

      OnRspQryDepthMarketData

      OnRspQryEWarrantOffset

      OnRspQryExchange

      OnRspQryExchangeMarginRate

      OnRspQryExchangeMarginRateAdjust

      OnRspQryExchangeRate

      OnRspQryExecOrder

      OnRspQryForQuote

      OnRspQryInstrument

      OnRspQryInstrumentCommissionRate

      OnRspQryInstrumentMarginRate

      OnRspQryInstrumentOrderCommRate

      OnRspQryInvestor

      OnRspQryInvestorPosition

      OnRspQryInvestorPositionCombineDetail

      OnRspQryInvestorPositionDetail

      OnRspQryInvestorProductGroupMargin

      OnRspQryInvestUnit

      OnRspQryMMInstrumentCommissionRate

      OnRspQryMMOptionInstrCommRate

      OnRspQryNotice

      OnRspQryOptionInstrCommRate

      OnRspQryOptionInstrTradeCost

      OnRspQryOptionSelfClose

      OnRspQryOrder

      OnRspQryParkedOrder

      OnRspQryParkedOrderAction

      OnRspQryProduct

      OnRspQryProductExchRate

      OnRspQryProductGroup

      OnRspQryQuote

      OnRspQrySecAgentACIDMap

      OnRspQrySecAgentCheckMode

      OnRspQrySecAgentTradeInfo

      OnRspQrySecAgentTradingAccount

      OnRspQrySettlementInfo

      OnRspQrySettlementInfoConfirm

      OnRspQryTrade

      OnRspQryTradingAccount

      OnRspQryTradingCode

      OnRspQryTradingNotice

      OnRspQryTransferBank

      OnRspQryTransferSerial

      OnRspQueryBankAccountMoneyByFuture

      OnRspQueryCFMMCTradingAccountToken

      OnRspQuoteAction

      OnRspQuoteInsert

      OnRspRemoveParkedOrder

      OnRspRemoveParkedOrderAction

      OnRspSettlementInfoConfirm

      OnRspTradingAccountPasswordUpdate

      OnRspUserAuthMethod

      OnRspUserLogin

      OnRspUserLogout

      OnRspUserPasswordUpdate

      OnRtnBulletin

      OnRtnCancelAccountByBank

      OnRtnCFMMCTradingAccountToken

      OnRtnChangeAccountByBank

      OnRtnCombAction

      OnRtnErrorConditionalOrder

      OnRtnExecOrder

      OnRtnForQuoteRsp

      OnRtnFromBankToFutureByBank

      OnRtnFromBankToFutureByFuture

      OnRtnFromFutureToBankByBank

      OnRtnFromFutureToBankByFuture

      OnRtnInstrumentStatus

      OnRtnOpenAccountByBank

      OnRtnOptionSelfClose

      OnRtnOrder

      OnRtnQueryBankBalanceByFuture

      OnRtnQuote

      OnRtnRepealFromBankToFutureByBank

      OnRtnRepealFromBankToFutureByFuture

      OnRtnRepealFromBankToFutureByFutureManual

      OnRtnRepealFromFutureToBankByBank

      OnRtnRepealFromFutureToBankByFuture

      OnRtnRepealFromFutureToBankByFutureManual

      OnRtnTrade

      OnRtnTradingNotice

      OnRspQryMaxOrderVolume

      OnRspQryClassifiedInstrument

      OnRspQryCombPromotionParam

      OnRspQryRiskSettleInvstPosition

      OnRspQryRiskSettleProductStatus

    > CThostFtdcTraderApi

      CreateFtdcTraderApi

      GetApiVersion

      GetTradingDay

      Init

      Join

      RegisterFensUserInfo

      RegisterFront

      RegisterNameServer

      RegisterSpi

      RegisterUserSystemInfo

      Release

      ReqAuthenticate

      ReqBatchOrderAction

      ReqCombActionInsert

      ReqExecOrderAction

      ReqExecOrderInsert

      ReqForQuoteInsert

      ReqFromBankToFutureByFuture

      ReqFromFutureToBankByFuture

      ReqGenUserCaptcha

      ReqGenUserText

      ReqOptionSelfCloseAction

      ReqOptionSelfCloseInsert

      ReqOrderAction

      ReqOrderInsert

      ReqParkedOrderAction

      ReqParkedOrderInsert

      ReqQryAccountregister

      ReqQryBrokerTradingAlgos

      ReqQryBrokerTradingParams

      ReqQryCFMMCTradingAccountKey

      ReqQryCombAction

      ReqQryCombInstrumentGuard

      ReqQryContractBank

      ReqQryDepthMarketData

      ReqQryEWarrantOffset

      ReqQryExchange

      ReqQryExchangeMarginRate

      ReqQryExchangeMarginRateAdjust

      ReqQryExchangeRate

      ReqQryExecOrder

      ReqQryForQuote

      ReqQryInstrument

      ReqQryInstrumentCommissionRate

      ReqQryInstrumentMarginRate

      ReqQryInstrumentOrderCommRate

      ReqQryInvestor

      ReqQryInvestorPosition

      ReqQryInvestorPositionCombineDetail

      ReqQryInvestorPositionDetail

      ReqQryInvestorProductGroupMargin

      ReqQryInvestUnit

      ReqQryMMInstrumentCommissionRate

      ReqQryMMOptionInstrCommRate

      ReqQryNotice

      ReqQryOptionInstrCommRate

      ReqQryOptionInstrTradeCost

      ReqQryOptionSelfClose

      ReqQryOrder

      ReqQryParkedOrder

      ReqQryParkedOrderAction

      ReqQryProduct

      ReqQryProductExchRate

      ReqQryProductGroup

      ReqQryQuote

      ReqQrySecAgentACIDMap

      ReqQrySecAgentCheckMode

      ReqQrySecAgentTradeInfo

      ReqQrySecAgentTradingAccount

      ReqQrySettlementInfo

      ReqQrySettlementInfoConfirm

      ReqQryTrade

      ReqQryTradingAccount

      ReqQryTradingCode

      ReqQryTradingNotice

      ReqQryTransferBank

      ReqQryTransferSerial

      ReqQueryBankAccountMoneyByFuture

      ReqQueryCFMMCTradingAccountToken

      ReqQryMaxOrderVolume

      ReqQuoteAction

      ReqQuoteInsert

      ReqRemoveParkedOrder

      ReqRemoveParkedOrderAction

      ReqSettlementInfoConfirm

      ReqTradingAccountPasswordUpdate

      ReqUserAuthMethod

      ReqUserLogin

      ReqUserLoginWithCaptcha

      ReqUserLoginWithOTP

      ReqUserLoginWithText

      ReqUserLogout

      ReqUserPasswordUpdate

      SubmitUserSystemInfo

      SubscribePrivateTopic

      SubscribePublicTopic

      ReqQryClassifiedInstrument

      ReqQryCombPromotionParam

      ReqQryRiskSettleInvstPosition

      ReqQryRiskSettleProductStatus

  > 其他业务规则

    做市商询价和报价

    报单回调规则

    大商所组保

    报价回调规则

    协议方式接收二代组播行情

    fens连接说明

    各交易所行情区别

    合约状态变化说明

    报单流控、查询流控和会话数控制

    通讯模式

    TAS介绍

    条件单规则

2021/5/12 15:11:35


6.6.1P1_API接口说明

请参阅：

主页

阅读指引

文档版本与重要更新

6.6.1P1版本更新说明

6.5.1版本更新说明

6.5.1版本更新说明补充说明

>> 看穿式监管数据采集说明

>> 行情接口

>> 交易接口

>> 其他业务规则

回到顶部


主页

1.介绍

2.版本

3.接口文件列表

4.命名规则

5.官方网站

6.模拟账号

7.综合交易平台API技术服务群

8.更多

回到顶部

< 前页 回目录 后页 >

CTP-API接口说明

◇ 1.介绍

本接口说明旨在帮助开发者快速查阅综合交易平台API（CTP-API）的使用方法、参数说明及注意事项。文中汇集了CTP-API使用过程中常见的问题、重要参数说明及接口调用示例。

回到顶部

◇ 2.版本

本接口文档基于v6.6.1版本。具体更新内容请参照6.6.1P1版本更新说明。API使用监控中心分配给上期技术CTP系统的正式密钥进行编译，只能接入6.5.0版本及以上的front_se（看穿式监管交易前置）。

各终端需要通过期货公司评测后方能接入生产正式交易，评测时，需要使用集成了监控中心评测密钥的评测版API进行评测，在官网均有下载。

各版本接入规则如下（更详细的版本前后台说明请参考SFIT官网API下载页面描述）：

6.3.11API为非看穿式监管版本，只能连接普通front前置

看穿式监管各版本API由于集成了不同的监控中心密钥，所以：

6.3.16_T1以上的评测版API只能连接评测版front_se前置；

6.3.15以上的生产版API只能连接生产版front_se前置。

API、采集库和前置版本必须遵循以上接入规则，否则无法连接前置或无法解密采集数据！！

API数据采集相关说明参见看穿式监管数据采集说明

API编译时使用的字符集为GBK。

回到顶部

◇ 3.接口文件列表

文件名 | 详情
ThostFtdcTraderApi.h | 交易接口C++头文件包含交易相关的指令，如报单
ThostFtdcMdApi.h | 交易接口C++头文件包含获取行情相关的指令。
ThostFtdcUserApiStruct.h | 包含了所有用到的数据结构的头文件。
ThostFtdcUserApiDataType.h | 包含了所有用到的数据类型的头文件。
DataCollect.h | 穿透式监管采集模块头文件
thosttraderapi.dll | 交易部分的动态链接库和静态链接库。
thosttraderapi.lib
thostmduserapi.dll | 行情部分的动态链接库和静态链接库。
thostmduserapi.lib
WinDataCollect.dll | 穿透式监管采集模块的动态链接库和静态链接库
WinDataCollect.lib
error.dtd | 包含所有可能的错误信息。
error.xml

TradeApi使用对象为直连CTP的终端和连接CTP的中继平台

WinDataCollect采集库的使用对象对中继平台下的客户交易终端，他们只需调用采集库采集信息

回到顶部

◇ 4.命名规则

消息 | 格式 | 实例
请求 | Req------ | ReqUserLogin
响应 | OnRsp------ | OnRspUserLogin
查询 | ReqQry------ | ReqQryInstrument
查询请求的响应 | OnRspQry------ | OnRspQryInstrument
回报 | OnRtn------ | OnRtnOrder
错误回报 | OnErrRtn------ | OnErrRtnOrderInsert

回到顶部

◇ 5.官方网站

开发者可以通过上期技术官网http://www.sfit.com.cn/下载API接口及说明文档。

回到顶部

◇ 6.模拟账号

开发者可以向上期技术SIMNOW官网http://www.simnow.com.cn/申请账号并接入测试；也可以向期货公司申请仿真账号，并接入期货公司的仿真环境测试。

回到顶部

◇ 7.综合交易平台API技术服务群

QQ群：615403410 （需通过期货公司向上期技术提交入群申请）

回到顶部

◇ 8.更多

更多信息请关注上期技术官方微信公众号。如有意见或建议请联系CTP-API技术支持


阅读指引

■ 6.6.1P1_API接口说明

└◆ 阅读指引

在使用CTP的API前，请务必先了解看穿式监管数据采集说明，因为6月份就开始正式启用看穿式监管，届时只有满足监管要求的客户端才能登录CTP系统做交易。

详见：

看穿式监管数据采集说明

常见FAQ

通过上文我们应该了解了自己要开发的客户端属于哪种模式，并且已经按照该模式成功登录进CTP系统，下面我们就可以正式开始使用CTP的API接口提供的各种功能了。以下两个文档提供了详细代码示例和说明，能够帮助我们快速上手。

详见：

交易接口

行情接口

报单和报价涉及到诸多回调函数，如何理清这些回调函数的顺序关系通常是初学者最为困扰的事情。这里例举了一些常用的报单操作所对应的回调顺序，能够帮助我们极大的减轻测试工作。

详见：

报单回调顺序

报价回调规则

如果想要了解做市商相关功能，请参考：

做市商询价和报价

如果我们所在的期货公司提供了转发的上期所组播行情，通常这种行情的速度要比CTP普通行情要快，要想使用这种行情，我们可以参考二代行情接口说明。

详见：

二代行情接口

CTP的接口提供了很多丰富的功能，大部分的接口都是易于理解和使用的，但是仍然会有部分接口有其特殊的规则，例如手续费率查询接口并不能一次性返回所有合约的手续费率。如果想要准确正确地使用API，并将其投入到生产中，请务必了解以下这些特殊规则（本文档会持续更新补充）。

详见：

报单流控、查询流控和会话数控制

大商所组保

更多内容可以通过左侧菜单树的其他业务规则找到。


文档版本与重要更新

1.版本

2.更新历史

回到顶部

< 前页 回目录 后页 >

描述主要和重要更新内容。

◇ 1.版本

v2021.5.10

回到顶部

◇ 2.更新历史

  • 2021/5/10

    1. 更新6.6.1P1版本说明

    2. 修正ReqQryOptionInstrTradeCost接口InvestorID字段可作为过滤条件

    3. 修正ReqQryOptionInstrTradeCost接口InputPrice和UnderlyingPrice中文解释错误问题

    4. 修正流控说明页在途流控描述不准确问题，原在未收到响应前，不能发起下一笔查询请求 改为 在未收完所有的查询响应前，不能发起下一笔查询请求

  • 2021/3/1

    1. 行情CreateFtdcMdApi添加通过tcp、udp、组播模式连接mdfront的说明

  • 2021/1/25

    1. 新增页面6.5.1版本更新说明补充说明

    2. 对ReqQryClassifiedInstrument、ReqQryCombPromotionParam添加说明

  • 2021/1/6

    1. 修正6.5.1版本更新说明中运行环境说明，windows支持32位和64位。

  • 2020/12/24

    1. 添加brokerid在认证中是必填字段

    2. 6.5.1中ipv6说明RegisterFens->RegisterNmaeServer修订

    3. 主页添加线程数说明

  • 2020/12/10

    1. 调整Tas手续费和保证金说明

    2. 修改OnRtnBulletin说明属于公有流

    3. 修改OnRtnInstrumentStatus问答

    4. 调整ReqQryInstrument中FAQ说明

    5. 调整ReqQueryMaxOrderVolume名称为ReqQryMaxOrderVolume

    6. 增加OnFrontDisconnected说明

    7. “做市商询价和报价”页面对于是否会撤销前一次报价说明增加七期说明

    8. 大商所组保合约名称修改BUL->BLS BER->BES

    9. 主页增加字符集说明

    10. 增加Ref字段需要递增说明

    11. 对于银期转账中TradeCode说明修改。

    12. SubscribePublicTopic增加一种私有流方式

    13. “大商所组保”增加FAQ说明

  • 2020/11/6

    1. 增加各个接口对ipv6的说明

    2. 修订RegisterUserSystemInfo、SubmitUserSystemInfo接口字段说明

  • 2020/10/21

    1. 更新6.5.1apichm说明

    2. 新增6.5.1api版本说明

    3. 新增两个接口ReqQryClassifiedInstrument、ReqQryCombPromotionParam对应的回调OnRspQryClassifiedInstrument、OnRspQryCombPromotionParam

    4. ReqQueryMaxOrderVolume接口修改为ReqQryMaxOrderVolume，对应的回调OnRspQueryMaxOrderVolume修改为OnRspQryMaxOrderVolume

  • 2020/04/29

    1. 更新到6.3.19 api说明，更新对应新增字段。

    2. 新增tas介绍

    3. 新增fens介绍

    4. 更正代码示例错误，Release()前使用RegisterSpi(NULL)，这个代码是错误的，会导致api概率崩溃。

    5. 新增ReqUserLogout、ReqAuthenticate、增加流控参数部分说明、郑商所行情说明。

  • 2020/03/13

    1. 新增init/release线程安全说明

  • 2020/03/06

    1. 修正logout之后是否会触发重连机制

  • 2020/02/21

    1. 新添加通讯模式中基本接口所属的数据流

    2. 完善做市商接受询价的说明

    3. 修改对于撤单接口就上期所新增挂单激活操作在本系统是否支持说明

    4. 新增条件单说明

    5. 新增各个交易所盘中行情合约状态推送的具体状态

  • 2019/11/28

    1. 新增做市商询价和报价指令介绍

    2. 修正SubscribeForQuoteRsp中FAQ回答错误。普通投资者只能订阅上期所和中金所询价通知 改为 普通投资者能订阅四所的询价通知。

  • 2019/07/12

    1. 新增报单回调规则、报价回调规则

  • 2019/07/03

    1. 新增相关穿透式的一些问题回答

  • 2019/06/27

    1. 新增大商所组保业务说明

    2. 修正OnRspQryInvestorPosition和OnRspQryInvestorPositionDetail里缺失TimeFirstVolume和PositionCostOffset字段的问题

  • 2019/06/05

    1. 新增CTP流控说明

  • 2019/05/27

    1. 新增交易接口和行情接口代码示例说明。

    2. 新增阅读指引，方便用户快速上手chm文档。

  • 2019/04/29

    1. 新增看穿式监管数据采集的常见FAQ。

  • 2019/4/11

    1. 新增二代行情API接口说明，该API新增接口QryMulticastInstrument。

  • 2019/3/14

    1. 增加看穿式监管相关API接口的返回值。

    2. 主页新增版本兼容性说明，务必了解！

  • 2019/3/14

    1. 增加有关看穿式监管相关问题接单。


6.6.1P1版本更新说明

1. 兼容性

2. 运行环境

3. API变动

  3.1. 新增‘ClientLoginRemark’字段

  3.2. 支持中金所顶单功能

  3.3. 支持交易所结算风险隔离功能

  3.4. API与前置传输过程中的数据压缩

回到顶部

< 前页 回目录 后页 >

版本号：V6.6.1_P1_20210407_tradeapi

◇ 1. 兼容性

V6.3.X的API可以访问6.3.X~6.6.X及其以上的CTP后台系统，但无法支持大商所长合约期权组合，无法支持IPv6；

V6.5.X、V6.6.X的API只能访问6.5.X及其以上的CTP后台系统，支持大商所长合约期权组合，支持IPv6；

注意：6.6.1API引入的新函数只有在接入6.6.1及以上后台的时候才会有响应，接入6.5.0时无响应。

回到顶部

◇ 2. 运行环境

Linux操作系统版本为Redhat5.8及以上。

Windows为vista及以上的操作系统，支持32位和64位。

只支持vista及以上的操作系统是由于本次更新支持IPv6，涉及函数只能在vista及以上版本使用。

回到顶部

◇ 3. API变动

◇ 3.1. 新增‘ClientLoginRemark’字段

因原API接口中ReqUserLogin中的登录备注字段LoginRemark长度为36个字节，期货公司及终端厂商反馈该字段长度不够，故在RegisterUserSystemInfo和SubmitUserSystemInfo的‘CThostFtdcUserSystemInfoField’新增‘ClientLoginRemark’字段，解决原登录备注长度不足的问题。

如需使用本功能，CTP后台系统需要升级至V6.6.1及以上版本。

调用的接口如下：

///注册用户终端信息，用于中继服务器多连接模式
///需要在终端认证成功后，用户登录前调用该接口
virtual int RegisterUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;
///上报用户终端信息，用于中继服务器操作员登录模式
///操作员登录后，可以多次调用该接口上报客户信息
virtual int SubmitUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;

接口中新增字段如下：（在CThostFtdcUserSystemInfoField如下字段，支持中继客户填写登录备注（例如客户端的IP，MAC等信息），该字段长度为150字节）

///客户登录备注2
TThostFtdcClientLoginRemarkType ClientLoginRemark;

◇ 3.2. 支持中金所顶单功能

支持中金所顶单业务，支持中金所报价填写被顶单的单子OrderSysID，顶单即用一笔新报价，来更新相同合约的老报价，一次指令中包含撤销老报价和录入新报价两个操作，且会生成新的报价单编号。

如需使用本功能，CTP后台系统需要升级至V6.6.1及以上版本。

调用的接口如下：

///报价录入请求
virtual int ReqQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, int nRequestID) = 0;

接口中CThostFtdcInputQuoteField增加字段:

///被顶单编号
TThostFtdcOrderSysIDType    ReplaceSysID;

注：

1）ReplaceSysID为空：普通报价，即不顶单；

2）ReplaceSysID填"last"：对最近一笔报价顶单；

3）ReplaceSysID填指定报价编号：对指定报价编号顶单。

◇ 3.3. 支持交易所结算风险隔离功能

针对已完成风险计算但尚未完成正式结算的品种，支持查询该风险产品与风险持仓。

如需使用本功能，CTP后台系统需要升级至V6.6.0及以上版本。

新增接口如下：

///投资者风险结算持仓查询
virtual int ReqQryRiskSettleInvstPosition(CThostFtdcQryRiskSettleInvstPositionField *pQryRiskSettleInvstPosition, int nRequestID) = 0;
///风险结算产品查询
virtual int ReqQryRiskSettleProductStatus(CThostFtdcQryRiskSettleProductStatusField *pQryRiskSettleProductStatus, int nRequestID) = 0;
///投资者风险结算持仓查询响应
virtual void OnRspQryRiskSettleInvstPosition(CThostFtdcRiskSettleInvstPositionField *pRiskSettleInvstPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
///风险结算产品查询响应
virtual void OnRspQryRiskSettleProductStatus(CThostFtdcRiskSettleProductStatusField *pRiskSettleProductStatus, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

◇ 3.4. API与前置传输过程中的数据压缩

支持API与前置传输过程中的数据压缩，该变更对API使用者来说无影响。CTP后台系统在V6.6.1_P1版本支持。


6.5.1版本更新说明

1. 兼容性

2. 运行环境

3. API变动

  3.1. InstrumentID字段增长

  3.2. IPAddress字段增长

  3.3. 新增查询大商所组合优惠参数接口

  3.4. 新增组合枚举值

  3.5. 新增公有流可订阅和取消的功能

  3.6. 新增查询分类合约的接口

  3.7. 查询最大报单数量的接口名称修改

  3.8. 请求查询报价接口逻辑优化

4. 看穿式采集库说明

回到顶部

< 前页 回目录 后页 >

版本号：v6.5.1_20200908_tradeapi

◇ 1. 兼容性

V6.3.X的API可以访问6.3.X~6.5.X及其以上的CTP后台系统，但无法支持大商所长合约期权组合，无法支持IPv6；

V6.5.X的API只能访问6.5.X及其以上的CTP后台系统，支持大商所长合约期权组合，支持IPv6；

注意：6.5.1API引入的新函数只有在接入6.5.1及以上后台的时候才会有响应，接入6.5.0时无响应。

回到顶部

◇ 2. 运行环境

Linux操作系统版本为Redhat5.8及以上。

Windows为vista及以上的操作系统，支持32位和64位。

只支持vista及以上的操作系统是由于本次更新支持IPv6，涉及函数只能在vista及以上版本使用。

回到顶部

◇ 3. API变动

◇ 3.1. InstrumentID字段增长

为了支持大商所的超长组合合约，原先的合约字段30个字节已经不够长，所以需要对合约字段进行扩长。

新增合约代码类型为80字节。

///TFtdcInstrumentIDType是一个合约代码类型
/////////////////////////////////////////////////////////////////////////
typedef char TThostFtdcInstrumentIDType[81];

原来的合约代码类型改为TThostFtdcOldInstrumentIDType，并且原来的合约代码类型对应的字段改成保留字段且不用填写（填写系统会忽略）。

/////////////////////////////////////////////////////////////////////////
///TFtdcOldInstrumentIDType是一个合约代码类型
/////////////////////////////////////////////////////////////////////////
typedef char TThostFtdcOldInstrumentIDType[31];
TThostFtdcOldInstrumentIDType   reserve1；
TThostFtdcOldExchangeInstIDType reserve2;
TThostFtdcOldInstrumentIDType   reserve3；

◇ 3.2. IPAddress字段增长

为了支持以后IPv6的ip地址长度，对ip地址进行扩长，新增IP地址类型为32字节。

/////////////////////////////////////////////////////////////////////////
///TFtdcIPAddressType是一个IP地址类型
/////////////////////////////////////////////////////////////////////////
typedef char TThostFtdcIPAddressType[33];

原来的ip地址类型改为TThostFtdcOldIPAddressType，原来的ip地址类型对应的字段改成保留字段且不用填写（填写系统会忽略）。

/////////////////////////////////////////////////////////////////////////
///TFtdcOldIPAddressType是一个IP地址类型
/////////////////////////////////////////////////////////////////////////
typedef char TThostFtdcOldIPAddressType[16];
TThostFtdcOldIPAddressType  reserve2

凡是接口中涉及IPAdress要手动填写的（如ReqOrderInsert）按照如下规则：

strcpy(address, "127.0.0.1")
strcpy(address, "AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH")

ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，例如：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

RegisterFront和RegisterNameServer函数按照如下规则填写：

FrontAddress=tcp://172.24.121.51:35001
FrontAddress=tcp6://fe80::20f8:aa9b:7d59:887d:35001

◇ 3.3. 新增查询大商所组合优惠参数接口

大商所的期权对锁组合（OPL），买入期权垂直价差组合（BLS），卖出期权垂直价差组合（BES），日历价差组合（CAS）和买入期权期货组合（BFO）的保证金计算公式中需要乘以保证金优惠比例。

该比例参数由交易所给出，终端如果需要计算如上组合的保证金，可以通过本接口查询组合合约的组合优惠参数X值，由于优惠参数目前不区分投机套保，因此查询返回域投保标志CombHedgeFlag字段默认为投机类型。

保证金计算公式如下：

  • 期权对锁（OPL），保证金收取为X*卖期权保证金

  • 买入期权垂直价差组合（BLS），保证金收取为X*卖期权保证金

  • 卖出期权垂直价差组合（BES），保证金收取为min(执行价格之差*交易单位，空头期权保证金)

  • 日历价差组合（CAS），保证金收取为X*卖出期权保证金

  • 买入期权期货组合（BFO），保证金收取为X*期货保证金

新增查询大商所组合优惠参数接口如下，合约代码需要填组合合约代码：

///请求组合优惠比例
virtual int ReqQryCombPromotionParam(CThostFtdcQryCombPromotionParamField *pQryCombPromotionParam, int nRequestID);
///查询组合优惠比例
struct CThostFtdcQryCombPromotionParamField
{
     ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
     ///合约代码
    TThostFtdcInstrumentIDType InstrumentID;
};
///请求组合优惠比例响应
virtual void OnRspQryCombPromotionParam(CThostFtdcCombPromotionParamField *pCombPromotionParam, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
///组合优惠比例
struct CThostFtdcCombPromotionParamField
{
     ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
     ///合约代码
    TThostFtdcInstrumentIDType InstrumentID;
     ///投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
     ///期权组合保证金比例
    TThostFtdcDiscountRatioType Xparameter;
};

◇ 3.4. 新增组合枚举值

///TFtdcCombinationTypeType是一个组合类型类型
/////////////////////////////////////////////////////////////////////////
    ///期货组合
    #define THOST_FTDC_COMBT_Future '0'
    ///垂直价差BUL
    #define THOST_FTDC_COMBT_BUL '1'
    ///垂直价差BER
    #define THOST_FTDC_COMBT_BER '2'
    ///跨式组合
    #define THOST_FTDC_COMBT_STD '3'
    ///宽跨式组合
    #define THOST_FTDC_COMBT_STG '4'
    ///备兑组合
    #define THOST_FTDC_COMBT_PRT '5'
    ///时间价差组合
    #define THOST_FTDC_COMBT_CAS '6'
    ///期权对锁组合
    #define THOST_FTDC_COMBT_OPL '7'
    ///买备兑组合
    #define THOST_FTDC_COMBT_BFO '8'
    ///买入期权垂直价差组合
    #define THOST_FTDC_COMBT_BLS '9'
    ///卖出期权垂直价差组合
    #define THOST_FTDC_COMBT_BES 'a'

对大商所组合进行申请和拆分时，合约填写规则如下：

期权跨式组合合约申请和拆分（STD m1905-c-2700&m1905-p-2700）

期权宽跨式组合合约申请和拆分（STG m1905-p-2400&m1905-c-2700）

备兑组合合约申请和拆分（PRT m1905-c-2400&m1905）

期货跨期组合合约申请和拆分（SP a1903&a1905）

期货跨品种组合合约申请和拆分（SPC c1903&cs1909）

期货对锁组合合约申请和拆分（SP a1903& a1903）

期权对锁组合合约申请和拆分（OPL m1809-P-3150&m1809-P-3150）

期权买入垂直价差组合申请和拆分（BLS m1809-P-3150&m1809-P-3100）

期权卖出垂直价差组合申请和拆分（BES m1809-P-3350&m1809-P-3150）

期权日历价差组合申请和拆分（CAS m1807-P-3150&m1809-P-3150）

买入期权期货组合申请和拆分（BFO m1809-P-3150&m1809）

◇ 3.5. 新增公有流可订阅和取消的功能

增加取消订阅公共流的枚举THOST_TERT_NONE，不调用SubscribePublicTopic时默认从本交易日开始订阅，调用SubscribePublicTopic则以传参为准，同订阅私有流，在登录之前调用。

///订阅公共流。
virtual void SubscribePublicTopic(THOST_TE_RESUME_TYPE nResumeType) = 0;
///@param nResumeType 公共流重传方式
///        THOST_TERT_RESTART:从本交易日开始重传
///        THOST_TERT_RESUME:从上次收到的续传
///        THOST_TERT_QUICK:只传送登录后公共流的内容
///        THOST_TERT_NONE:取消订阅公共流
///@remark 该方法要在Init方法前调用。若不调用则不会收到公共流的数据。

◇ 3.6. 新增查询分类合约的接口

CTP合约信息可分为可交易合约和非交易合约，非交易合约数据量占比较大。

大商所只可申请组合的合约为非交易合约

新增查询分类合约接口可依据查询请求域交易类型TradingType字段查询指定合约信息。

///请求查询分类合约：
virtual int ReqQryClassifiedInstrument(CThostFtdcQryClassifiedInstrumentField *pQryClassifiedInstrument, int nRequestID) = 0;
///请求查询分类合约响应：
virtual void OnRspQryClassifiedInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
///查询分类合约
struct CThostFtdcQryClassifiedInstrumentField
{
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///产品代码
    TThostFtdcInstrumentIDType  ProductID;
    ///合约交易状态
    TThostFtdcTradingTypeType   TradingType;
    ///合约分类类型
    TThostFtdcClassTypeType ClassType;
};

其中合约类型TradingType的枚举值为：

///所有状态
#define TD_ALL '0'
///交易
#define TD_TRADE '1'
///非交易
#define TD_UNTRADE '2'

分类类型ClassType的枚举值为：

///所有合约
#define INS_ALL '0'
///期货、即期、期转现、Tas、金属指数合约
#define INS_FUTURE '1'
///期货期权、现货期权合约
#define INS_OPTION '2'
///组合合约
#define INS_COMB '3' //对应产品类型字段Productclass 为组合类型

◇ 3.7. 查询最大报单数量的接口名称修改

查询最大报单数量请求'的接口名字由'ReqQueryMaxOrderVolume'修改为'ReqQryMaxOrderVolume'，‘OnRspQueryMaxOrderVolume’修改为‘OnRspQryMaxOrderVolume’。

该名称修改不影响旧版本（V6.5.1以下版本）API使用，旧版本API接入6.5.1后台，仍可使用原有名称；CTPV6.5.1后台系统兼容线上旧版本API接入。

查询最大报单数量请求

virtual int ReqQueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField *pQueryMaxOrderVolume, int nRequestID) = 0;

修改为：

virtual int ReqQryMaxOrderVolume (CThostFtdcQryMaxOrderVolumeField *pQryMaxOrderVolume, int nRequestID) = 0;

查询最大报单数量响应

virtual void OnRspQueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField *pQueryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

修改为：

virtual void OnRspQryMaxOrderVolume(CThostFtdcQryMaxOrderVolumeField *pQryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

◇ 3.8. 请求查询报价接口逻辑优化

如果查询请求有指定QuoteSysID(填空则返回全部)，后台会根据QuoteSysID返回相应的报价信息，旧版本后台不支持根据QuoteSysID进行过滤返回。

///请求查询报价
virtual int ReqQryQuote(CThostFtdcQryQuoteField *pQryQuote, int nRequestID) = 0;

回到顶部

◇ 4. 看穿式采集库说明

本次更新没有变动采集库，采集库暂时只采集IPv4地址。


6.5.1版本更新说明补充说明

1. 兼容性

2.补充变更说明：（请各终端厂商根据自身情况进行开发）

回到顶部

< 前页 回目录 后页 >

版本号：v6.5.1_20200908_tradeapi

后台版本：V6.5.2_P3

◇ 1. 兼容性

V6.5.1API连接CTP后台需为V6.5.0及以上版本（如果用V6.5.1API接入V6.5.0后台，V6.5.1新加接口不支持使用，其他接口正常使用）；

CTPV6.5.1后台系统兼容线上旧版本API接入（V6.5.1以下版本）

回到顶部

◇ 2.补充变更说明：（请各终端厂商根据自身情况进行开发）

  • 1.当终端调用ReqQryInstrument接口查询合约时，返回的合约信息中不再包含大商所不可交易只能申请组合的合约信息，减少投资者客户端登录系统时查询合约的数据量。

  • 2.当终端调用ReqQryClassifiedInstrument接口查询合约时，为了减少查询合约的流量压力，针对大商所可申请组合的合约信息的返回进行变更如下：

1）大商所可申请组合的合约信息以产品级别返回，且终端在请求查询时必须填写，ExchangeID=‘DCE’（大商所），TradingType=‘2’（非交易），ClassType=‘3’（组合合约）才会返回大商所可申请组合的组合产品信息。

举例：例如STD m2103-C-2400&m2103-P-2400，STD m2103-C-2500&m2103-P-2500...此系列合约整合成一条组合产品 STD m_o&m_o 的记录返回。

2）当终端需要查询所有合约，请求时必须填写TradingType=‘0’（所有状态），ClassType=‘0’（所有合约），返回的合约信息中，大商所期货组合以合约级别返回（包括能下套利单的期货组合和只可申请组合的期货组合），不包括大商所可申请组合的期权组合。

  • 3.当终端调用ReqQryCombPromotionParam接口，InstrumentID需要填写组合合约产品级别代码，且返回信息中保证金优惠比例不再以合约级别返回，修改为以产品级别返回。

举例：当终端需要查询 BLS m2103-P-3150&m2103-P-3100 的保证金优惠比例，请求查询时InstrumentID需要填写BLS m_o&m_o。

当终端不指定入参查询（即入参为空），返回的保证金优惠比例均以产品级别返回。


看穿式监管数据采集说明

1.定义

2.说明

3.相关接口

4.示例代码

  4.1.直连终端的采集使用流程示例代码：

  4.2.多对多中继终端使用流程示例代码：

  4.3.一对多中继终端使用流程示例代码：

回到顶部

< 前页 回目录 后页 >

■ 6.6.1P1_API接口说明

└◆ 看穿式监管数据采集说明

◇ 1.定义

术语 | 术语说明
采集API链接库 | 负责采集终端信息的动态链接库(windows版的WinDataCollect.dll，linux版的LinuxDataCollect.so，安卓版的InfoCollection_single_release.aar)，只有连接中继服务器的终端需要调用，直连模式或中继服务器无需调用
直连类型终端 | 直接连接到CTP交易系统的客户交易终端
中继类型终端 | 先连接到中继服务器,中继服务器再调用TraderAPI连接到CTP交易系统的客户交易终端
多对多类型中继服务器 | 为每个客户终端，建立CTP API实例，每个用户独占一个交易API实例的中继服务器
一对多类型中继服务器 | 为多个客户终端，建立一个CTP API实例，使用操作员为多个客户进行交易的中继服务器
AppID | 每个期货终端软件需要向期货公司申请自己的AppID
RelayAppID | 中继服务器软件需要向期货公司申请自己的RelayAppID

AppID和RelayAppID必须符合监控中心的格式要求。见监控中心官网技术规范。

直连类型终端无需加载采集链接库，登录时会自动采集并上报终端信息。

中继类型服务器无需加载采集链接库，仅负责接收客户端的采集信息并上报CTP。

中继类型终端需要加载采集链接库，并将采集到的信息发送给中继服务器。

回到顶部

◇ 2.说明

期货公司确认终端软件集成了正确的数据采集模块后，为该AppID的终端软件分配授权码。终端软件需要保护好自己的AppID和授权码，防止被其他软件盗用。CTP对终端的认证流程如下：

  • 直连终端认证流程

对于直接连接期货公司交易柜台的终端，期货公司确认终端软件集成了正确的数据采集模块后。给该终端软件（根据AppID）分配一个授权码。这个授权码和AppID是绑定的，当终端试图登录期货公司交易软件的时候，交易后台会验证该终端是否持有合法的AppID和授权码。

  • 中继和中继下属终端的认证流程

对于使用中继服务器连接期货公司交易柜台的终端，期货公司确认终端软件集成了正确的数据采集模块和确认中继可以正常报送终端信息后。期货公司给该终端软件（根据AppID）分配一个授权码，给中继服务器（根据RelayAppID） 分配一个授权码。当终端登录中继服务器时，中继服务器负责验证终端的合法性；当中继服务器登录期货公司交易软件的时候，交易后台会验证该中继服务器是否持有合法的RelayAppID和授权码。

注:信息采集过程中，遇到某些信息没有采集到，无法判断是否正常。此时可以参考监控中心规范文档里的函数手工调用，判断是否是权限问题或者相应操作系统命令组件没有部署。如果正常情况下手工调用能采集到，而采集函数采集不到，请联系上期技术。

回到顶部

◇ 3.相关接口

///客户端认证请求
virtual int ReqAuthenticate(CThostFtdcReqAuthenticateField *pReqAuthenticateField, int nRequestID) = 0;
///客户端认证响应
virtual void OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
///上报用户终端信息，用于中继服务器操作员登录模式
///操作员登录后，可以多次调用该接口上报客户信息
virtual int SubmitUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;
///注册用户终端信息，用于中继服务器多连接模式
///需要在终端认证成功后，用户登录前调用该接口
virtual int RegisterUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;

注意，采集库不是线程安全的。多线程调用采集库时要加锁，如果是直连模式则要在登录函数上加锁。

回到顶部

◇ 4.示例代码

每个类型的终端调用流程不同，请注意区分！

◇ 4.1.直连终端的采集使用流程示例代码：

Step 1 在API连接后发起认证

void CUser::OnFrontConnected()
{
    cout << "OnFrontConnected." << endl;
    static const char *version = m_pUserApi->GetApiVersion();
    cout << "------当前版本号 ：" << version << " ------" << endl;
    ReqAuthenticate();
}
int CUser::ReqAuthenticate()
{
    CThostFtdcReqAuthenticateField field;
    memset(&field, 0, sizeof(field));
    strcpy(field.BrokerID, "8000");
    strcpy(field.UserID, "001888");
    strcpy(field.AppID, "XY_Q7_V1.0.0");
    strcpy(field.AuthCode, "5A5P4V7AZ5LCFEAK");
    return m_pUserApi->ReqAuthenticate(&field, 5);
}

Step 2 认证成功后发起登录

void CUser::OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
    printf("OnRspAuthenticate\n");
    if (pRspInfo != NULL && pRspInfo->ErrorID == 0)
    {
        printf("认证成功,ErrorID=0x%04x, ErrMsg=%s\n\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg);
        ReqUserLogin();
    }
    else
    cout << "认证失败，" << "ErrorID=" << pRspInfo->ErrorID << "  ,ErrMsg=" << pRspInfo->ErrorMsg << endl;
}
int CUser::ReqUserLogin()
{
    printf("====ReqUserLogin====,用户登录中...\n\n");
    CThostFtdcReqUserLoginField reqUserLogin;
    memset(&reqUserLogin, 0, sizeof(reqUserLogin));
    strcpy_s(reqUserLogin.BrokerID, "8000");
    strcpy(reqUserLogin.UserID, "001888");
    strcpy(reqUserLogin.Password, "1");
    strcpy(reqUserLogin.TradingDay, "20150715");
    return m_pUserApi->ReqUserLogin(&reqUserLogin, ++RequestID);
}

◇ 4.2.多对多中继终端使用流程示例代码：

Step 1 终端侧采集信息，向中继发起登录，并将终端信息发送给中继

char pSystemInfo[344];
int len;
CTP_GetSystemInfo(pSystemInfo, len);
cout << "CTP_GetSystemInfo once" << endl;

Step 2 中继收到终端的登录请求，新建一个API实例，并发起连接

void CUser::OnFrontConnected()
{
    cout << "OnFrontConnected." << endl;
    static const char *version = m_pUserApi->GetApiVersion();
    cout << "------当前版本号 ：" << version << " ------" << endl;
    ReqAuthenticate();
}

Step 3 中继连上前置后，发起认证请求

int CUser::ReqAuthenticate()
{
    CThostFtdcReqAuthenticateField field;
    memset(&field, 0, sizeof(field));
    strcpy(field.BrokerID, "8000");
    strcpy(field.UserID, "001888");
    strcpy(field.AppID, "XY_RELAY_V1.0.0");
    strcpy(field.AuthCode, "5A5P4V7AZ5LCFEAK");
    return m_pUserApi->ReqAuthenticate(&field, 5);
}

Step 4 中继认证成功后，注册终端的采集信息

void CUser::OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
    printf("OnRspAuthenticate\n");
    if (pRspInfo != NULL && pRspInfo->ErrorID == 0)
    {
        printf("认证成功,ErrorID=0x%04x, ErrMsg=%s\n\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg);
        RegSystemInfo();
        ReqUserLogin();
    }
    else
        cout << "认证失败，" << "ErrorID=" << pRspInfo->ErrorID << "  ,ErrMsg=" << pRspInfo->ErrorMsg << endl;
}
void CUser::RegSystemInfo()
{
    //char pSystemInfo[344];
    //int len;
    ////将前面从终端得到的信息赋值给下面结构体
    CThostFtdcUserSystemInfoField field;
    memset(&field, 0, sizeof(field));
    strcpy(field.BrokerID, "8000");
    strcpy(field.UserID, "001888");
    //strcpy(field.ClientSystemInfo, pSystemInfo); 不能用 因为不是字符串
    memcpy(field.ClientSystemInfo, pSystemInfo, len);
    field.ClientSystemInfoLen = len;
    strcpy(field.ClientPublicIP, "198.4.4.124");
    field.ClientIPPort = 65535;
    strcpy(field.ClientLoginTime, "11:28:28");
    strcpy(field.ClientAppID, "Q7");
    int ret = m_pUserApi->RegisterUserSystemInfo(&field);
    cout << "retd = " << ret << endl;
}

Step 5 中继注册好终端的信息后，发起登录

int CUser::ReqUserLogin()
{
    printf("====ReqUserLogin====,用户登录中...\n\n");
    CThostFtdcReqUserLoginField reqUserLogin;
    memset(&reqUserLogin, 0, sizeof(reqUserLogin));
    strcpy_s(reqUserLogin.BrokerID, "8000");
    strcpy(reqUserLogin.UserID, "001888");
    strcpy(reqUserLogin.Password, "1");
    strcpy(reqUserLogin.TradingDay, "20150715");
    return m_pUserApi->ReqUserLogin(&reqUserLogin, ++RequestID);
}

◇ 4.3.一对多中继终端使用流程示例代码：

Step 1 中继在启动后，在API连接后发起认证

void CUser::OnFrontConnected()
{
    cout << "OnFrontConnected." << endl;
    static const char *version = m_pUserApi->GetApiVersion();
    cout << "------当前版本号 ：" << version << " ------" << endl;
    ReqAuthenticate();
}
int CUser::ReqAuthenticate()
{
    CThostFtdcReqAuthenticateField field;
    memset(&field, 0, sizeof(field));
    strcpy(field.BrokerID, "8000");
    strcpy(field.UserID, "8000_admin");
    strcpy(field.AppID, " XY_RELAYB_V1.0.0");
    strcpy(field.AuthCode, "BLFLTYGD16FZZ91T");
    return m_pUserApi->ReqAuthenticate(&field, 5);
}

Step 2 中继认证成功后，使用操作员发起登录

void CUser::OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
    printf("OnRspAuthenticate\n");
    if (pRspInfo != NULL && pRspInfo->ErrorID == 0)
   {
        printf("认证成功,ErrorID=0x%04x, ErrMsg=%s\n\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg);
        ReqUserLogin();
    }
    else
        cout << "认证失败，" << "ErrorID=" << pRspInfo->ErrorID << "  ,ErrMsg=" << pRspInfo->ErrorMsg << endl;
}
int CUser::ReqUserLogin()
{
    printf("====ReqUserLogin====,用户登录中...\n\n");
    CThostFtdcReqUserLoginField reqUserLogin;
    memset(&reqUserLogin, 0, sizeof(reqUserLogin));
    strcpy_s(reqUserLogin.BrokerID, "8000");
    strcpy(reqUserLogin.UserID, "8000_admin");
    strcpy(reqUserLogin.Password, "1");
    strcpy(reqUserLogin.TradingDay, "");
    strcpy(reqUserLogin.ClientIPAddress, "1.1.1.1");
    reqUserLogin.ClientIPPort = 11;
    return m_pUserApi->ReqUserLogin(&reqUserLogin, ++RequestID);
}

Step 3 此时有终端登录中继，并将采集信息发送给中继

char pSystemInfo[344];
int len;
CTP_GetSystemInfo(pSystemInfo, len);
cout << "CTP_GetSystemInfo once" << endl;

Step 4 中继接收到采集信息后，发起终端信息的上报

void CUser::SubSystemInfo()
{
    //char pSystemInfo[344];
    //int len;
    ///CTP_GetSystemInfo(pSystemInfo, len);
    /////终端信息由终端发送到中继，并提交信息
    cout << "SubSystemInfo 1" << endl;
    CThostFtdcUserSystemInfoField field;
    memset(&field, 0, sizeof(field));
    strcpy(field.BrokerID, "8000");
    strcpy(field.UserID, "0018881");
    //strcpy(field.ClientSystemInfo, pSystemInfo); 不能用 因为不是字符串
    memcpy(field.ClientSystemInfo, pSystemInfo, len);
    field.ClientSystemInfoLen = len;
    strcpy(field.ClientPublicIP, "198.114.114.124");
    field.ClientIPPort = 65535;
    strcpy(field.ClientLoginTime, "11:28:28");
    strcpy(field.ClientAppID, "Q7");
    int retx = m_pUserApi->SubmitUserSystemInfo(&field);
    cout << "ret = " << retx << endl;
     //为另一个用户提交采集信息
    CThostFtdcUserSystemInfoField field1;
    memset(&field1, 0, sizeof(field1));
    strcpy(field1.BrokerID, "8000");
    strcpy(field1.UserID, "0018882");
    memcpy(field1.ClientSystemInfo, pSystemInfo, len);
    field1.ClientSystemInfoLen = len;
    strcpy(field1.ClientPublicIP, "198.4.4.120");
    field1.ClientIPPort = 65532;
    strcpy(field1.ClientLoginTime, "11:28:29");
    strcpy(field1.ClientAppID, "Q7");
    m_pUserApi->SubmitUserSystemInfo(&field1);
}

请参阅：

常见FAQ

CTP-GetSystemInfo


常见FAQ

看穿式监管API相关FAQ

  1. Q: 在看穿式监管上线之后，是不是必须把CSRC要求的信息发送给CTP才可以下单正常交易？

    A: 上线后，监管上要求自觉上报采集信息，但是你不上报，也是能登录并交易的，CTP这边不做强制限制，但是该行为不符合监管要求。

  2. Q: 目前测试终端采集，同一个UserID，在多个客户端登录，中继代理这边建立了多个实例，请问同一UserID允许建立多少个实例？目前超过4个就会报：用户在线会话超出上限。但是中继代理模式很有可能出现超过4个客户端同时登录的情况。

    A：这个是系统设置，跟看穿式监管无关，在柜台“用户最大会话数”中设置。

  3. Q：看穿式监管API断线重连是否需要重新发起认证和登录前的信息上报？

    A： 断线重连需要重新认证、信息上报、登录。

  4. Q：看穿式监管API登录请求接口中是否可以不再传IP、端口、登录备注等RegisterUserSystemInfo接口已经传过的入参数据？

    A:登录里的ip和mac无需填写，并且手填无效。

  5. Q：一个帐号在多个终端登录时，通过中继代理必须每个终端和CTP建立一个连接吗？

    A: 中继多对多模式下，要为每个客户端建立一个会话；一对多的模式，所有客户端共享一个操作员会话。

  6. Q: 测试发现终端信息为空的话，调用RegisterUserSystemInfo会返回-1，这种情况，CTP是收到了空的终端信息，还是根本就不会生成任何记录？

    A：收到了空的终端信息，监控中心不允许上报空信息。

  7. Q:柜台的认证码，除了可以根据终端产品配置，能不能根据资金账号配置?

    A:不能

  8. Q：请问如果期货公司已经升级到看穿式监管版本6.3.13T4，那么我们软件提供商只是需要改前置地址就可以正常使用登陆，下单等功能吗？（暂不考虑提供看穿式监管的相关信息要求）？

    A：使用新版本api需要接入到新的se前置，旧版本api的接入在老前置还存在的情况下无需调整。

  9. Q：测试看穿式监管的安卓版API，在获取硬件信息时较慢

    A：目前安卓版采集函数会首先进行实时定位，2秒后定位不到则使用上一次的位置信息。采集硬件信息的速度取决于安卓版本定位的速度。

  10. Q: 发现直连模式API demo中没有用CTP_GetSystemInfo(pSystemInfo, len)，是否意味着直连模式的话就不需要提交这个统计系统信息的？

    A：直连的模式tradeapi已经集成采集功能，在登录的时候自动调用。CTP_GetSystemInfo函数是给中继模式中的客户端使用的。

  11. Q: 调用中继代理看穿式监管接口RegisterUserSystemInfo时，一直提示“RegisterUserSystemInfo not permittedt”是什么原因啊？

    A: 如果提示operation not permitted，可能是AppID类型错误。例如，直连模式的AppID，却错误调用了SubmitUserSystemInfo。此错误不会通过特定接口返回，只在标准输出中提示，例如直接在屏幕上打印出来。

  12. Q：看穿式监管现在测试环境对应API库版本是6.3.13。后面升级到6.3.15版本的生产包，API库有变更吗，我们的对接程序需要改动嘛？

    A: pc版的替换dll就行，不需要重新编译；安卓版替换sdk，然后编译应用。

  13. Q: 调用CTP_GetSystemInfo函数获取到的终端加密信息出来都是乱码，用base64转码就是正常的字符串了，上传终端信息传的是base64转码后的字符串吗？

    A：不是，原始字符数组

  14. Q: 6.3.13_T4就是测试环境用的？6.3.15是生产使用的？这2个都是front_se，期货公司的柜台也必须要升级到对应的版本？

    A: 6.3.11API为非看穿式监管版本，只能连接普通前置；由于评测版本和生产版本使用的监控中心密钥不同，6.3.13评测版API只能连接评测版看穿式监管前置，6.3.15生产版API只能连接生产版看穿式监管前置。API、采集库和前置版本必须一一对应，否则无法连接前置或无法解密采集数据！！

  15. Q: 是否可以把测试环境的所有组成API，采集库，前置，都升级成6.3.15，通过测试后，再在生产做相同版本的升级？

    A: 6.3.15采集的信息经过生产密钥加密，只有监控中心能解密，期货公司没法拿来做评测。

  16. Q: 请问下看穿式监管信息采集评测工具（CDP网站上有），只能采集到当天第一次登录采集的信息吗？

    A: 不是，每次登录上报都会采集

  17. Q: 中继代理补充获取终端软件“异常标示”，“appid”等信息，都是由终端传到中继，而不是中继自行获取的吗？

    A：

    该问题要分开来看

    “异常标示”包含在终端采集信息里，由采集函数自动采集，非中继自行获取，中继只负责上报

    ClientPublicIP：用户终端IP，由中继采集和填写

    ClientLoginTime：用户登录中继时间，由中继采集和填写

    ClientAppid：用户终端的appid，由中继采集和填写

  18. Q：采集的大部分信息都在pSystemInfo这个字段里，该字符串需要加密，这里加密方式是用CTP给的还是自己系统做加密？

    A: 采集到的数据经过监控中心密钥加密+CTP防伪加密 ，给到ctp。ctp解开自己的防伪加密后给到监控中心（为监控中心密钥加密后的结果）

  19. Q: relayappID与直连的appID设置成一样的，这样可以分别获得2套encryption key吗？

    A: 不行的，两者名称要区分开

  20. Q: 新的柜台里面userproductinfo还有用吗？

    A: userproductinfo是连接非看穿式监管前置做认证用的，AppID是连接看穿式监管前置做认证用的。看穿式监管上线后，仍有部分期货公司需要根据这个字段进行其他统计用途，具体需要视具体期货公司而定

  21. Q: Linux 虚拟机 硬盘序列号、CPU序列号、BIOS序列号3项指标采集不到怎么处理 ？

    A: 信息采集过程中，遇到某些信息没采集到，但又不知道是否正常，这个时候可以参考监控中心规范文档里的函数手工调用，判断是否是权限问题或者相应操作系统命令组件没有部署。如果正常情况下手工调用能采集到，而采集函数采集不到，请联系上期技术。

  22. Q: 登陆时报“Decrypt handshake data failed”错误是什么原因？

    A：终端使用的api与前置版本不匹配导致，应核对版本。

  23. Q: 如果我们终端自行获取信息（privateIP，terminalType，MAC等），能否再调用.dll进行加密？

    A:不行，必须调用getsysteminfo来采集，不能自行采集

  24. Q: 流程是只有通过了测试环境的穿透式，才可以拿到生产的AuthCode？

    A: 必须通过评测

  25. Q: 未来是否可以将生产和测试的版本统一起来，还是会保持2个分支？

    A: 目前没有计划统一

  26. Q: 关于做市商测试上期所询价功能，目前有同时满足看穿式监管和询价字段的API吗？哪个版本的报盘可以满足做市商询价功能的测试？

    A: 目前API都支持上期所询价的改动，T6版本报盘已经支持该功能，报盘所在操作系统必须要6.6以上。

  27. Q: OnRspError报错“CTP:API Front shake hand err : version err”是什么意思

    A：6.3.20以上版本，对api版本错误报错有改动，原先报错Decrypt handshake data failed现在有核心通过OnRspError返回报错。


CTP-GetSystemInfo

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

获取AES加密和RSA加密的终端信息。该函数来自采集终端信息的动态链接库（安卓版的函数名和使用方法较windows和linux有所区别，请注意阅读API包相关说明文档）。

仅中继模式下的客户端需要调用此函数来采集信息。中继需要将客户端采集到的信息上报给CTP。

直连模式下，登录的时候自动采集并上报终端信息，所以无需调用。

采集库在win、linux、android上不是线程安全的，不要并发调用，ios是线程安全的

采集库暂时不采集IPv6地址

◇ 1.函数原型

int CTP_GetSystemInfo(char* pSystemInfo, int& nLen);

回到顶部

◇ 2.参数

pSystemInfo：空间需要调用者自己分配至少270个字节。

要注意这并不是一个字符串，而是数组，因为多次加密后可能断串，使用memcpy拷贝值而不是strcpy。

nLen：获取到的采集信息的长度。

回到顶部

◇ 3.返回

0 为正确，非0为错误。

回到顶部

◇ 4.调用示例

char pSystemInfo[344];
int len;
CTP_GetSystemInfo(pSystemInfo, len);

回到顶部

◇ 5.FAQ

终端采集到的信息，保存到数据库里后显示为乱码，怎么办？

可以使用BASE64转码成可见字符后再存储。

在windows下调用该函数后，控制台窗口打印出一些日志，提示找不到wmic之类的信息，这个有关系吗？

有关系，采集函数需要调用相关windows组件来采集设备信息，如果没有对应组件，则会采集不到相应信息，不符合监管要求。

在linux下调用该函数后，控制台窗口会输出一些报错日志，提示没有权限之类的错误，这个有关系吗？

有关系，采集函数需要调用linux命令来采集设备信息，如果没有对应权限，则会采集不到相应信息，不符合监管要求。


行情接口

1.说明

2.代码示例

  2.1.源代码

  2.2.代码说明

  2.2.1.继承 CThostFtdcMdSpi类

  2.2.2.初始化

  2.2.3.登录

  2.2.4.订阅行情

  2.2.5.程序运行流程

回到顶部

< 前页 回目录 后页 >

■ 6.6.1P1_API接口说明

└◆ 行情接口

◇ 1.说明

行情API提供了两个接口，分别为CThostFtdcMdApi和CThostFtdcMdSpi。这两个接口对FTD协议进行了封装，方便客户端应用程序的开发。客户端应用程序可以通过CThostFtdcMdApi发出操作请求，通过继承CThostFtdcMdSpi并重载回调函数来处理后台服务的响应。

特别注意：CTP系统在早盘系统启动时，会重演夜盘流水，此时有可能重复推送整个夜盘的行情。如果用户此时连入CTP就有可能收到这些重复行情，因此建议用户在处理行情时过滤掉重复行情，以免影响程序逻辑。

回到顶部

◇ 2.代码示例

◇ 2.1.源代码

下面通过一个简单的代码示例，带大家快速了解下行情API的使用方法。该示例演示了API的初始化、连接前置、登录行情系统和订阅行情的过程。

01. //以下是mduserhandle.h文件
02.
03. #include "ThostFtdcMdApi.h"
04.
05. #include <stdio.h>
06.
07. #include <Windows.h>
08.
09.
10.
11. class CMduserHandler : public CThostFtdcMdSpi
12.
13. {
14.
15. private:
16.
17.   CThostFtdcMdApi *m_mdApi;
18.
19.
20.
21. public:
22.
23.   void connect()
24.
25.   {
26.
27. //创建并初始化API
28.
29.       m_mdApi = CThostFtdcMdApi::CreateFtdcMdApi(".//flow_md/", true, true);
30.
31.       m_mdApi->RegisterSpi(this);
32.
33.       m_mdApi->RegisterFront("tcp://218.28.130.102:41413");
34.
35.       m_mdApi->Init();
36.
37.   }
38.
39.
40.
41. //登陆
42.
43.   void login()
44.
45.   {
46.
47.       CThostFtdcReqUserLoginField t = {0};
48.
49.       while (m_mdApi->ReqUserLogin(&t, 1)!=0) Sleep(1000);
50.
51.   }
52.
53.
54.
55. // 订阅行情
56.
57.   void subscribe()
58.
59.   {
60.
61.       char **ppInstrument=new char * [50];
62.
63.       ppInstrument[0] = "IF1809";
64.
65.       while (m_mdApi->SubscribeMarketData(ppInstrument, 1)!=0) Sleep(1000);
66.
67.   }
68.
69.
70.
71.   //接收行情
72.
73.   void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
74.
75.   {
76.
77.           printf("OnRtnDepthMarketData\n");
78.
79.   }
80.
81. };
82.
83.
84.
85. // 以下是main.cpp文件
86.
87. #include "mduserhandle.h"
88.
89. int main(int argc, char* argv[])
90.
91. {
92.
93.   CMduserHandler *mduser = new CMduserHandler;
94.
95.   mduser->connect();
96.
97.   mduser->login();
98.
99.   mduser->subscribe();
100.
101.  Sleep(INFINITE);
102.
103. }

◇ 2.2.代码说明

◇ 2.2.1.继承CThostFtdcMdSpi类

代码一开始通过#include "ThostFtdcMdApi.h"，将thostmduserapi.lib中声明的类和数据类型包括进来，该头文件中有两个重要的基类：CThostFtdcMdSpi和CThostFtdcMdApi。

CThostFtdcMdSpi类提供了行情相关的回调接口，用户需要继承该类并重载这些接口，以获取响应数据。

CThostFtdcMdApi类则是提供了行情相关的请求接口，例如订阅行情请求、订阅询价请求。

第11行我们声明了一个CMduserHandler类，该类正是继承了CThostFtdcMdSpi类，并且重载了OnRtnDepthMarketData等接口。通过这种方式，例如当我们API和前置建立连接成功时，便会触发OnFrontConnected；当我们发起订阅行情请求成功后，便会触发OnRspSubMarketData。通过这些回调返回的数据，我们可以得知订阅是否成功，之后交易系统会通过OnRtnDepthMarketData实时推送行情。

第17行，声明了一个CThostFtdcMdApi类型的变量m_mdApi，后续我们会实例化它，创建实例后便可以调用mdapi提供的登录，订阅行情等接口功能。

◇ 2.2.2.初始化

第23行到37行connect()函数里，实现了线程的初始化，步骤为：

Step 1 创建Api实例（CThostFtdcMdApi）并为其注册对应的回调接口类的实例（RegisterSpi）。

Step 2 注册名称服务器网络地址（RegisterNameServer）或注册前置机网络地址（RegisterFront）。

Step 3 初始化Api（Init），使API建立与前置的连接，连接成功后回调OnFrontConnected。

第29行创建了一个api实例，并将其赋值给m_mdApi，同时参数".//flow_md/"指明我们api流水文件存放的目录为flow目录，因此在运行程序前，我们需要手工创建好这个目录！

流水文件以.con文件类型方式存放流水序号和交易日信息，这些信息对api正常工作有重要意义，不可随意修改和删除！并且多个api实例不可共享一个流水文件，必须通过不同文件夹或者不同流水文件名区分开。虽然行情没有私有流，但是也建议遵循以上规则。

第31行将自己定义的继承了Spi类的CMduserHandler注册给CThostFtdcMdApi，这样API就能将收到的各种数据通过Spi类的接口回调给用户。

第33行注册了前置地址，如果有多个地址，可以多次调用RegisterFront函数传入不同的地址来实现。API会择优挑选一个地址进行连接。

第35行调用Init()函数开始正式初始化api，也就是说前面的工作只是准备工作，到了这里api才真正开始工作。此时api会向之前注册的地址发起与CTP前置的连接。

完成以上步骤后，客户端就已经和ctp的行情前置建立了连接，后续我们就可以调用各种API接口完成业务需求。

◇ 2.2.3.登录

第43到51行，前置连接成功后能够开始登陆交易系统了，先初始化登陆结构体，再赋值相应字段。对于行情的登录来说只需要调用登录接口即可，目前CTP暂时不对行情做密码校验。之后发送登陆（ReqUserLogin）指令。通过返回值可以判断是否发送成功，0表示成功，其他则表示失败，具体可以参考接口ReqUserLogin。发送不成功可以尝试等待一小会重发。

注意这里返回0不表示登录成功，而是仅仅表示api指令发出去了。该规则同样适用于其他请求接口，建议在实际应用中做好超时重发机制，以便在网络丢包的情况下能够及时重发指令。

◇ 2.2.4.订阅行情

第57到67行，调用订阅行情的接口，我们这里订阅了合约"IF1809"。若需要批量订阅多个合约，则需要循环把合约输入到ppInstrumentID中去，同时别忘了更改合约数量（第二个参数）。订阅发出后通过OnRspSubMarketData响应判断是否订阅成功。

第73到81行，订阅行情后，通过OnRtnDepthMarketData回调推送实时行情信息。可以在此时实现自身业务逻辑。

但是如果业务逻辑比较耗时，应该在另外一个线程处理，而不应该卡在此回调里，否则会导致后续的行情堵塞在API内部，严重情况下会导致断线。

◇ 2.2.5.程序运行流程

第89到103行，是我们的主函数，该函数是业务实现主体。首先初始化CMduserHandler类。调用connect函数开始连接ctp前置，然后依次执行登录和订阅行情操作。

请参阅：

>> CThostFtdcMdApi

>> CThostFtdcMdSpi


CThostFtdcMdApi

1.接口

2.示例代码

回到顶部

< 前页 回目录 后页 >

■ 6.6.1P1_API接口说明

└△ 行情接口

  └◆ CThostFtdcMdApi

CthostFtdcMdApi类提供了行情api的初始化、登录、订阅等功能。

◇ 1.接口

class MD_API_EXPORT CThostFtdcMdApi
{
public:
    ///创建MdApi
    ///@param pszFlowPath 存贮订阅信息文件的目录，默认为当前目录
    ///@return 创建出的UserApi
    ///modify for udp marketdata
    static CThostFtdcMdApi *CreateFtdcMdApi(const char *pszFlowPath = "", const bool bIsUsingUdp=false, const bool bIsMulticast=false);
    ///获取API的版本信息
    ///@retrun 获取到的版本号
    static const char *GetApiVersion();
    ///删除接口对象本身
    ///@remark 不再使用本接口对象时,调用该函数删除接口对象
    virtual void Release() = 0;
    ///初始化
    ///@remark 初始化运行环境,只有调用后,接口才开始工作
    virtual void Init() = 0;
    ///等待接口线程结束运行
    ///@return 线程退出代码
    virtual int Join() = 0;
    ///获取当前交易日
    ///@retrun 获取到的交易日
    ///@remark 只有登录成功后,才能得到正确的交易日
    virtual const char *GetTradingDay() = 0;
    ///注册前置机网络地址
    ///@param pszFrontAddress：前置机网络地址。
    ///@remark 网络地址的格式为：“protocol://ipaddress:port”，如：”tcp://127.0.0.1:17001”。
    ///@remark “tcp”代表传输协议，“127.0.0.1”代表服务器地址。”17001”代表服务器端口号。
    virtual void RegisterFront(char *pszFrontAddress) = 0;
    ///注册名字服务器网络地址
    ///@param pszNsAddress：名字服务器网络地址。
    ///@remark 网络地址的格式为：“protocol://ipaddress:port”，如：”tcp://127.0.0.1:12001”。
    ///@remark “tcp”代表传输协议，“127.0.0.1”代表服务器地址。”12001”代表服务器端口号。
    ///@remark RegisterNameServer优先于RegisterFront
    virtual void RegisterNameServer(char *pszNsAddress) = 0;
    ///注册名字服务器用户信息
    ///@param pFensUserInfo：用户信息。
    virtual void RegisterFensUserInfo(CThostFtdcFensUserInfoField * pFensUserInfo) = 0;
    ///注册回调接口
    ///@param pSpi 派生自回调接口类的实例
    virtual void RegisterSpi(CThostFtdcMdSpi *pSpi) = 0;
    ///订阅行情。
    ///@param ppInstrumentID 合约ID
    ///@param nCount 要订阅/退订行情的合约个数
    ///@remark
    virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount) = 0;
    ///退订行情。
    ///@param ppInstrumentID 合约ID
    ///@param nCount 要订阅/退订行情的合约个数
    ///@remark
    virtual int UnSubscribeMarketData(char *ppInstrumentID[], int nCount) = 0;
    ///订阅询价。
    ///@param ppInstrumentID 合约ID
    ///@param nCount 要订阅/退订行情的合约个数
    ///@remark
    virtual int SubscribeForQuoteRsp(char *ppInstrumentID[], int nCount) = 0;
    ///退订询价。
    ///@param ppInstrumentID 合约ID
    ///@param nCount 要订阅/退订行情的合约个数
    ///@remark
    virtual int UnSubscribeForQuoteRsp(char *ppInstrumentID[], int nCount) = 0;
    ///用户登录请求
    virtual int ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0;
    ///登出请求
    virtual int ReqUserLogout(CThostFtdcUserLogoutField *pUserLogout, int nRequestID) = 0;
    ///请求查询组播合约
    virtual int ReqQryMulticastInstrument(CThostFtdcQryMulticastInstrumentField *pQryMulticastInstrument, int nRequestID) = 0;
protected:
    ~CThostFtdcMdApi(){};
};

回到顶部

◇ 2.示例代码

class CMduserHandler : public CThostFtdcMdSpi
{
private:
    CThostFtdcMdApi *m_mdApi;
public:
    void connect()
    {
        //创建并初始化API，按照以下顺序
        m_mdApi = CThostFtdcMdApi::CreateFtdcMdApi("", true, true);
        m_mdApi->RegisterSpi(this);
        m_mdApi->RegisterFront("tcp://127.0.0.1:41413");
        m_mdApi->Init();
    }
}

请参阅：

CreateFtdcMdApi

GetApiVersion

GetTradingDay

Init

Join

RegisterFensUserInfo

RegisterFront

RegisterNameServer

RegisterSpi

Release

ReqQryMulticastInstrument

ReqUserLogin

ReqUserLogout

SubscribeForQuoteRsp

SubscribeMarketData

UnSubscribeForQuoteRsp

UnSubscribeMarketData


CreateFtdcMdApi

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

创建CThostFtdcMdApi实例。

◇ 1.函数原型

static CThostFtdcMdApi *CreateFtdcMdApi(const char *pszFlowPath = "", const bool bIsUsingUdp=false, const bool bIsMulticast=false);

回到顶部

◇ 2.参数

pszFlowPath：常量字符指针，用于指定一个文件目录来存贮交易托管系统发布消息的状态。默认值代表当前目录。

bIsUsingUdp：是否使用UDP行情

bIsMulticast：是否使用组播行情

组播行情只能在内网中使用，需要咨询所连接的系统是否支持组播行情。

各类型行情字段组合如下：

 | bIsUsingUdp | bIsMulticast
TCP行情前置 | false | false
UDP行情前置 | true | false
组播行情前置 | true | true

连接mdfront时，在ini中有ThostChannelModel、ThostUsingMulticast两项用于配置对客户端的连接模式，分三种情况：

 | ThostChannelModel | ThostUsingMulticast | 终端配置的模式
TCP模式 | tcp |  | TCP
UDP模式 | udp | no | TCP、UDP
组播模式 | udp | yes | 组播

回到顶部

◇ 3.返回

返回一个CThostFtdcMdApi实例。

回到顶部

◇ 4.调用示例

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
pUserMdApi->RegisterFront(“tcp://127.0.0.1:41205”);
pUserMdApi->Init();

回到顶部

◇ 5.FAQ

“RuntimeError:can not open CFlow file in line 279 of file ....\source\userapi\ThostFtdcUserApiImplBase.cpp”程序一运行就报这个错是为什么？

程序运行之前，flow目录必须提前创建好，否则会报错。


GetApiVersion

1.函数原型

2.返回

3.调用示例

4.FAQ

回到顶部

< 前页 回目录 后页 >

获取API的版本信息

◇ 1.函数原型

virtual const char * GetApiVersion () = 0;

回到顶部

◇ 2.返回

const char * 返回一个指向版本字符串的指针

回到顶部

◇ 3.调用示例

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
printf("版本号为:%s\n", pUserMdApi->GetApiVersion());
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
pUserMdApi->RegisterFront(“tcp://127.0.0.1:41205”);
pUserMdApi->Init();

回到顶部

◇ 4.FAQ

无


GetTradingDay

1.函数原型

2.返回

3.调用示例

4.FAQ

回到顶部

< 前页 回目录 后页 >

获得当前交易日。只有当登陆成功后才会取到正确的值。

◇ 1.函数原型

virtual const char *GetTradingDay() = 0;

回到顶部

◇ 2.返回

返回一个指向日期信息字符串的常量指针。

回到顶部

◇ 3.调用示例

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
pUserMdApi->RegisterFront(“tcp://127.0.0.1:41213”);
pUserMdApi->Init();
//登录成功后
printf("获取当前交易日期:%s\n", pUserMdApi->GetTradingDay());

回到顶部

◇ 4.FAQ

登录前为什么也可以获取到交易日？

登录前调用该函数会去上一次的API流水文件里去获取交易日。只有在登录后才能获取到正确的交易日。


Init

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

初始化运行环境,只有调用后,接口才开始发起前置的连接请求。

◇ 1.函数原型

virtual void Init() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
pUserMdApi->RegisterFront(“tcp://127.0.0.1:41205”);
pUserMdApi->Init();

回到顶部

◇ 5.FAQ

无


Join

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

客户端等待接口线程结束运行。当调用该函数时会阻塞当前线程，直到api线程退出。

◇ 1.函数原型

virtual int Join() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


RegisterFensUserInfo

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

注册名字服务器用户信息，调用RegisterNameServer前需要先使用RegisterFensUserInfo设置登录模式。

详见fens连接说明

◇ 1.函数原型

virtual void RegisterFensUserInfo(CThostFtdcFensUserInfoField * pFensUserInfo) = 0;

回到顶部

◇ 2.参数

pFensUserInfo：Fens用户信息

struct CThostFtdcFensUserInfoField
{
///经纪公司代码
TThostFtdcBrokerIDType BrokerID;
///用户代码
TThostFtdcUserIDType UserID;
///登录模式
TThostFtdcLoginModeType LoginMode;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
CThostFtdcFensUserInfoField pFensUserInfo = { 0 };
strcpy_s(pFensUserInfo.BrokerID, "9999");
strcpy_s(pFensUserInfo.UserID, "00001");
pFensUserInfo.LoginMode = THOST_FTDC_LM_Trade;
pUserMdApi->RegisterFensUserInfo(&pFensUserInfo);
pUserMdApi-> RegisterNameServer ("tcp://127.0.0.1:41213");
pUserMdApi->Init();

回到顶部

◇ 5.FAQ

无


RegisterFront

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

设置交易托管系统的网络通讯地址，交易托管系统拥有多个通信地址，用户可以注册一个或多个地址。如果注册多个地址则使用最先建立TCP连接的地址。

◇ 1.函数原型

virtual void RegisterFront(char *pszFrontAddress) = 0;

回到顶部

◇ 2.参数

pszFrontAddress：指向后台服务器地址的指针。

服务器地址的格式为：“protocol://ipaddress:port”如：”tcp://127.0.0.1:17001”。“tcp”代表传输协议，“127.0.0.1”代表服务器地址。”17001”代表行情端口号。

SSL前置格式：ssl://192.168.0.1:41205

TCP前置IPv4格式：tcp://192.168.0.1:41205

TCP前置IPv6格式：tcp6://fe80::20f8:aa9b:7d59:887d:35001

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
//此处注册多个前置
pUserMdApi->RegisterFront(“tcp://192.168.0.1:41213”);
pUserMdApi->RegisterFront(“tcp://192.168.0.2:41213”);
pUserMdApi->Init();

回到顶部

◇ 5.FAQ

如果我注册了多个前置，会选择一个最优的前置进行连接吗？

会以最先建立TCP连接的地址作为当前连接地址进行连接。


RegisterNameServer

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

设置名字服务器网络地址。RegisterNameServer优先于RegisterFront。

调用前需要先使用RegisterFensUserInfo设置登录模式。

如果CTP系统启用了fens前置，则可以使用该接口连接fens前置地址。

fens的好处是fens地址对应的后端地址是一个前置地址池，前置地址的增删改都对用户透明，用户不需要调整自己的接入地址。当API使用fens地址接入时，fens前置会返回一个地址池，随后API择优选择一个地址进行接入。

详见fens连接说明

◇ 1.函数原型

virtual void RegisterNameServer(char *pszNsAddress) = 0;

回到顶部

◇ 2.参数

pszNsAddress:指向后台服务器地址的指针。

服务器地址的格式为：“protocol://ipaddress:port”。如：“tcp://127.0.0.1:17001”。“tcp”代表传输协议，“127.0.0.1”代表服务器地址。“17001”代表服务器端口号。

SSL前置格式：ssl://192.168.0.1:41205

TCP前置IPv4格式：tcp://192.168.0.1:41205

TCP前置IPv6格式：tcp6://fe80::20f8:aa9b:7d59:887d:35001

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
CThostFtdcFensUserInfoField pFensUserInfo = { 0 };
strcpy_s(pFensUserInfo.BrokerID, g_chBrokerID);
strcpy_s(pFensUserInfo.UserID, g_chUserID);
pFensUserInfo.LoginMode = THOST_FTDC_LM_Trade;
pUserMdApi->RegisterFensUserInfo(&pFensUserInfo, nRequestID++);
pUserMdApi->RegisterNameServer (“tcp://127.0.0.1:41205”);
pUserMdApi->Init();

回到顶部

◇ 5.FAQ

无


RegisterSpi

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

注册一个派生自CThostFtdcMdSpi接口类的实例，该实例将完成事件处理。

◇ 1.函数原型

virtual void RegisterSpi(CThostFtdcMdSpi *pSpi) = 0;

回到顶部

◇ 2.参数

pSpi：实现了CThostFtdcMdSpi接口的实例指针。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


Release

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

不再使用本接口对象时,调用该函数删除接口对象

◇ 1.函数原型

virtual void Release() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


ReqQryMulticastInstrument

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询组播合约，对应响应OnRspQryMulticastInstrument

目前只有上期所、原油交易所有组播行情

上期所topicid：1001(一档行情)，1000(五档行情)

原油交易所topicid：5001(一档行情)，5000(五档行情)

注意：该函数只有连接支持交易所组播行情的mdfront才能获得完整功能，连接其他行情前置则不能使用该函数。

详细说明见二代行情接入

◇ 1.函数原型

virtual int ReqQryMulticastInstrument(CThostFtdcQryMulticastInstrumentField *pQryMulticastInstrument, int nRequestID) = 0;

回到顶部

◇ 2.参数

QryMulticastInstrument：请求查询组播合约

    struct CThostFtdcQryMulticastInstrumentField
    {
        ///主题号
        TThostFtdcInstallIDType TopicID;
        ///合约代码
        TThostFtdcInstrumentIDType  InstrumentID;
    };

TopicID：对应交易所组播行情主题号。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryMulticastInstrumentField a = { 0 };
a.TopicID = 1001;//对应上期所的组播行情topic
//a.TopicID = 5001;//对应原油交易所的组播行情topic
strcpy_s(g_chInstrumentID,"cu1906");
m_pUserMdApi->ReqQryMulticastInstrument(&a, 1);

回到顶部

◇ 5.FAQ

无


ReqUserLogin

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户登录请求，对应响应OnRspUserLogin。目前行情登陆不校验账号密码。

◇ 1.函数原型

virtual int ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqUserLoginField：用户登录请求

struct CThostFtdcReqUserLoginField
{
    ///交易日
    TThostFtdcDateType TradingDay;
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///密码
    TThostFtdcPasswordType Password;
    ///用户端产品信息
    TThostFtdcProductInfoType UserProductInfo;
    ///接口端产品信息
    TThostFtdcProductInfoType InterfaceProductInfo;
    ///协议信息
    TThostFtdcProtocolInfoType ProtocolInfo;
    ///Mac地址
    TThostFtdcMacAddressType MacAddress;
    ///动态密码
    TThostFtdcPasswordType OneTimePassword;
    ///终端IP地址
    TThostFtdcIPAddressType ClientIPAddress;
    ///登录备注
    TThostFtdcLoginRemarkType LoginRemark;
};

UserID：操作员代码，后续请求中的investorid需要属于该操作员的组织架构下。

UserProductInfo：客户端的产品信息，如软件开发商、版本号等，

CTP后台用户事件中的用户登录事件所显示的用户端产品信息取自ReqAuthentication接口里的UserProductInfo，而非ReqUserLogin里的。

LoginRemark：可以写登录备注，能够被交易系统的日志查询到。

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcReqUserLoginField reqUserLogin = {0};
m_pUserMdApi->ReqUserLogin(&reqUserLogin, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqUserLogout

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

登出请求，对应响应OnRspUserLogout。暂不支持。

◇ 1.函数原型

virtual int ReqUserLogout(CThostFtdcUserLogoutField *pUserLogout, int nRequestID) = 0;

回到顶部

◇ 2.参数

pUserLogout：用户登出请求

struct CThostFtdcUserLogoutField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
};

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcUserLogoutField a = { 0 };
m_pUserApi->ReqUserLogout(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


SubscribeForQuoteRsp

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

订阅询价，对应响应OnRspSubForQuoteRsp；订阅成功后推送OnRtnForQuoteRsp。

询价相关业务请参考：做市商询价和报价

◇ 1.函数原型

virtual int SubscribeForQuoteRsp(char *ppInstrumentID[], int nCount) = 0;

回到顶部

◇ 2.参数

ppInstrumentID：合约ID

nCount：要订阅/退订行情的合约个数

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

char **ppInstrumentID = new char*[50];
ppInstrumentID[0] = “sc1801”;
int result = m_pUserMdApi->SubscribeForQuoteRsp(ppInstrumentID, 1);

回到顶部

◇ 5.FAQ


SubscribeMarketData

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

订阅行情，对应响应OnRspSubMarketData；订阅成功后，通过OnRtnDepthMarketData推送行情信息。

订阅全市场合约需要把全市场合约代码都赋值给ppInstrumentID，填空不能订阅全市场合约。

◇ 1.函数原型

virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount) = 0;

回到顶部

◇ 2.参数

ppInstrumentID：合约数组

nCount：合约数组的数量

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

char **ppInstrumentID = new char*[50];
ppInstrumentID[0] = "T1712";
m_pUserMdApi->SubscribeMarketData(ppInstrumentID, 1);

回到顶部

◇ 5.FAQ

能否订阅重收全天的行情？

不行，只推送最新的行情。


UnSubscribeForQuoteRsp

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

退订询价，对应响应OnRspUnSubForQuoteRsp

◇ 1.函数原型

virtual int UnSubscribeForQuoteRsp(char *ppInstrumentID[], int nCount) = 0;

回到顶部

◇ 2.参数

ppInstrumentID：合约ID

nCount：要订阅/退订行情的合约个数

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

char **ppInstrumentID = new char*[50];
ppInstrumentID[0] = “sc1801”;
m_pUserMdApi->SubscribeForQuoteRsp(ppInstrumentID, 1);

回到顶部

◇ 5.FAQ

无


UnSubscribeMarketData

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

退订行情，对应响应OnRspUnSubMarketData。

◇ 1.函数原型

virtual int UnSubscribeMarketData(char *ppInstrumentID[], int nCount) = 0;

回到顶部

◇ 2.参数

ppInstrumentID：合约ID

nCount：要订阅/退订行情的合约个数

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

char **ppInstrumentID = new char*[50];
ppInstrumentID[0] = "T1712";
m_pUserMdApi->UnSubscribeMarketData(ppInstrumentID, 1);

回到顶部

◇ 5.FAQ

无


CThostFtdcMdSpi

1.接口

2.示例代码

回到顶部

< 前页 回目录 后页 >

■ 6.6.1P1_API接口说明

└△ 行情接口

  └◆ CThostFtdcMdSpi

CthostFtdcMdSpi类提供了行情相关的回调接口，用户需要继承该类并重载这些接口，以获取响应数据。

◇ 1.接口

class CThostFtdcMdSpi
{
public:
    ///当客户端与交易后台建立起通信连接时（还未登录前），该方法被调用。
    virtual void OnFrontConnected(){};
    ///当客户端与交易后台通信连接断开时，该方法被调用。当发生这个情况后，API会自动重新连接，客户端可不做处理。
    ///@param nReason 错误原因
    ///        0x1001 网络读失败
    ///        0x1002 网络写失败
    ///        0x2001 接收心跳超时
    ///        0x2002 发送心跳失败
    ///        0x2003 收到错误报文
    virtual void OnFrontDisconnected(int nReason){};
    ///心跳超时警告。当长时间未收到报文时，该方法被调用。
    ///@param nTimeLapse 距离上次接收报文的时间
    virtual void OnHeartBeatWarning(int nTimeLapse){};
    ///登录请求响应
    virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///登出请求响应
    virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询组播合约响应
    virtual void OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///错误应答
    virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///订阅行情应答
    virtual void OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///取消订阅行情应答
    virtual void OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///订阅询价应答
    virtual void OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///取消订阅询价应答
    virtual void OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///深度行情通知
    virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData) {};
    ///询价通知
    virtual void OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp) {};
};

回到顶部

◇ 2.示例代码

// CMduserHandler继承CThostFtdcMdSpi
class CMduserHandler : public CThostFtdcMdSpi
{
public:
      //重载，接收行情
       void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
       {
                     printf("OnRtnDepthMarketData\n");
       }
}

请参阅：

OnFrontConnected

OnFrontDisconnected

OnHeartBeatWarning

OnRspError

OnRspQryMulticastInstrument

OnRspSubForQuoteRsp

OnRspSubMarketData

OnRspUnSubForQuoteRsp

OnRspUnSubMarketData

OnRspUserLogin

OnRspUserLogout

OnRtnDepthMarketData

OnRtnForQuoteRsp


OnFrontConnected

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

当客户端与交易托管系统建立起通信连接时（还未登录前），该方法被调用。本方法在完成初始化后调用，可以在其中完成用户登录任务。

◇ 1.函数原型

virtual void OnFrontConnected(){};

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnFrontDisconnected

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

当客户端与交易托管系统通信连接断开时，该方法被调用。当发生这个情况后，API会自动重新连接，客户端可不做处理。自动重连地址，可能是原来注册的地址，也可能是系统支持的其它可用的通信地址，它由程序自动选择。

注:重连之后需要重新认证、登录

◇ 1.函数原型

virtual void OnFrontDisconnected(int nReason){};

回到顶部

◇ 2.参数

nReason：连接断开原因，为10进制值，因此需要转成16进制后再参照下列代码：

0x1001 网络读失败

0x1002 网络写失败

0x2001 接收心跳超时

0x2002 发送心跳失败

0x2003 收到错误报文

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

API每次断线都会自动重连，可以设置为不重连或者指定重连时间间隔吗？

断线重连时间不可自定义，并且也无法通过参数设置来主动取消断线重连机制。


OnHeartBeatWarning

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

心跳超时警告。当长时间未收到报文时，该方法被调用。目前该方法暂不启用。

◇ 1.函数原型

virtual void OnHeartBeatWarning(int nTimeLapse){};

回到顶部

◇ 2.参数

nTimeLapse：距离上次接收报文的时间

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspError

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

针对用户请求的出错通知。

◇ 1.函数原型

virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryMulticastInstrument

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询组播合约响应

◇ 1.函数原型

virtual void OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

MulticastInstrument：组播合约信息

    struct CThostFtdcMulticastInstrumentField
    {
        ///主题号
        TThostFtdcInstallIDType TopicID;
        ///合约代码
        TThostFtdcInstrumentIDType  InstrumentID;
        ///合约编号
        TThostFtdcInstallIDType InstrumentNo;
        ///基准价
        TThostFtdcPriceType CodePrice;
        ///合约数量乘数
        TThostFtdcVolumeMultipleType    VolumeMultiple;
        ///最小变动价位
        TThostFtdcPriceType PriceTick;
    };

pRspInfo：错误响应

    struct CThostFtdcRspInfoField
    {
        ///错误代码
        TThostFtdcErrorIDType ErrorID;
        ///错误信息
        TThostFtdcErrorMsgType ErrorMsg;
    };

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspSubForQuoteRsp

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

订阅询价应答，当调用SubscribeForQuoteRsp后，通过此接口返回。

◇ 1.函数原型

virtual void OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSpecificInstrument：指定的合约

struct CThostFtdcSpecificInstrumentField
{
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspSubMarketData

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

订阅行情应答，调用SubscribeMarketData后，通过此接口返回。

◇ 1.函数原型

virtual void OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSpecificInstrument：指定的合约

struct CThostFtdcSpecificInstrumentField
{
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUnSubForQuoteRsp

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

取消订阅询价应答，当UnSubscribeForQuoteRsp后，调用此接口。

◇ 1.函数原型

virtual void OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSpecificInstrument：指定的合约

struct CThostFtdcSpecificInstrumentField
{
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUnSubMarketData

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

取消订阅行情应答，当UnSubscribeMarketData后，调用此接口。

◇ 1.函数原型

virtual void OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSpecificInstrument：指定的合约

struct CThostFtdcSpecificInstrumentField
{
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUserLogin

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

登录请求响应，当ReqUserLogin后，该方法被调用。

◇ 1.函数原型

virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspUserLogin：用户登录应答

struct CThostFtdcRspUserLoginField
{
    ///交易日
    TThostFtdcDateType TradingDay;
    ///登录成功时间
    TThostFtdcTimeType LoginTime;
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///交易系统名称
    TThostFtdcSystemNameType SystemName;
    ///前置编号
    TThostFtdcFrontIDType FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///最大报单引用
    TThostFtdcOrderRefType MaxOrderRef;
    ///上期所时间
    TThostFtdcTimeType SHFETime;
    ///大商所时间
    TThostFtdcTimeType DCETime;
    ///郑商所时间
    TThostFtdcTimeType CZCETime;
    ///中金所时间
    TThostFtdcTimeType FFEXTime;
    ///能源中心时间
    TThostFtdcTimeType INETime;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUserLogout

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

登出请求响应，当ReqUserLogout后，该方法被调用。

◇ 1.函数原型

virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pUserLogout：用户登出请求

struct CThostFtdcUserLogoutField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnDepthMarketData

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

深度行情通知，当SubscribeMarketData订阅行情后，行情通知由此推送。

◇ 1.函数原型

virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData) {};

回到顶部

◇ 2.参数

pDepthMarketData：深度行情

struct CThostFtdcDepthMarketDataField
{
    ///交易日
    TThostFtdcDateType   TradingDay;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///最新价
    TThostFtdcPriceType  LastPrice;
    ///上次结算价
    TThostFtdcPriceType  PreSettlementPrice;
    ///昨收盘
    TThostFtdcPriceType  PreClosePrice;
    ///昨持仓量
    TThostFtdcLargeVolumeType   PreOpenInterest;
    ///今开盘
    TThostFtdcPriceType  OpenPrice;
    ///最高价
    TThostFtdcPriceType  HighestPrice;
    ///最低价
    TThostFtdcPriceType  LowestPrice;
    ///数量
    TThostFtdcVolumeType Volume;
    ///成交金额
    TThostFtdcMoneyType  Turnover;
    ///持仓量
    TThostFtdcLargeVolumeType   OpenInterest;
    ///今收盘
    TThostFtdcPriceType  ClosePrice;
    ///本次结算价
    TThostFtdcPriceType  SettlementPrice;
    ///涨停板价
    TThostFtdcPriceType  UpperLimitPrice;
    ///跌停板价
    TThostFtdcPriceType  LowerLimitPrice;
    ///昨虚实度
    TThostFtdcRatioType  PreDelta;
    ///今虚实度
    TThostFtdcRatioType  CurrDelta;
    ///最后修改时间
    TThostFtdcTimeType   UpdateTime;
    ///最后修改毫秒
    TThostFtdcMillisecType   UpdateMillisec;
    ///申买价一
    TThostFtdcPriceType  BidPrice1;
    ///申买量一
    TThostFtdcVolumeType BidVolume1;
    ///申卖价一
    TThostFtdcPriceType  AskPrice1;
    ///申卖量一
    TThostFtdcVolumeType AskVolume1;
    ///申买价二
    TThostFtdcPriceType  BidPrice2;
    ///申买量二
    TThostFtdcVolumeType BidVolume2;
    ///申卖价二
    TThostFtdcPriceType  AskPrice2;
    ///申卖量二
    TThostFtdcVolumeType AskVolume2;
    ///申买价三
    TThostFtdcPriceType  BidPrice3;
    ///申买量三
    TThostFtdcVolumeType BidVolume3;
    ///申卖价三
    TThostFtdcPriceType  AskPrice3;
    ///申卖量三
    TThostFtdcVolumeType AskVolume3;
    ///申买价四
    TThostFtdcPriceType  BidPrice4;
    ///申买量四
    TThostFtdcVolumeType BidVolume4;
    ///申卖价四
    TThostFtdcPriceType  AskPrice4;
    ///申卖量四
    TThostFtdcVolumeType AskVolume4;
    ///申买价五
    TThostFtdcPriceType  BidPrice5;
    ///申买量五
    TThostFtdcVolumeType BidVolume5;
    ///申卖价五
    TThostFtdcPriceType  AskPrice5;
    ///申卖量五
    TThostFtdcVolumeType AskVolume5;
    ///当日均价
    TThostFtdcPriceType  AveragePrice;
    ///业务日期
    TThostFtdcDateType   ActionDay;
    ///上带价
    TThostFtdcPriceType BandingUpperPrice;
    ///下带价
    TThostFtdcPriceType BandingLowerPrice;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

行情中有些字段出现极大值，为什么？

行情通知中，例如结算价、收盘价、买卖价出现double极大值，则表示该字段没有值。例如涨停板的时候，因为没有卖价，会给出一个double极大值，同时卖量为0。

郑商所的结算价在盘中也会送出，但数值在盘中不会变化，这和盘后推送的结算价怎么区分？

郑商所夜盘收盘后会推送结算价，这也就是早上行情中有可能会收到结算价的原因，盘中行情中推送的结算价数值不会发生变化。无夜盘的合约，盘中不会收到结算价。白盘收盘后郑商所也会推送所有合约最新的结算价，CTP对交易所推送的结算价不做处理，直接转发。

郑商所的UDP行情里，Tradingday和AveragePrice字段都是空的，但是TCP行情里有，这是为什么？

UDP行情不推送AveragePrice字段；TCP行情里的Tradingday和AveragePrice是CTP给的。

行情中哪些字段是CTP自己计算发出的？

郑商所的套利合约的涨跌停板价由CTP计算，交易所不发

成交总额郑商所不推送由CTP计算，另外cffex,dce,shfe,ine这几家的成交均价不推送，由ctp计算。

发现连上前置后，为什么收到的行情涨跌停价是0？

连上的如果是mdfront的话可能mdfront是级联的，也就是说上一级还是mdfront这两个mdfront如果版本不对，也同样会导致这个问题

订阅后大商所组合合约行情不跳动，其他交易终端（闪电王、快期等）的组合合约都有行情且在跳跃，为什么？

大商所只会推送单腿合约的行情，组合合约的行情需要下端自行计算。其他终端则是实时计算两条腿的价差，故行情看上去一直跳跃。


OnRtnForQuoteRsp

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

询价通知，使用SubscribeForQuoteRsp订阅该询价通知。私有流回报。

◇ 1.函数原型

virtual void OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp) {};

回到顶部

◇ 2.参数

pForQuoteRsp：发给做市商的询价请求

struct CThostFtdcForQuoteRspField
{
    ///交易日
    TThostFtdcDateType TradingDay;
    ///合约代码
    TThostFtdcInstrumentIDType InstrumentID;
    ///询价编号
    TThostFtdcOrderSysIDType ForQuoteSysID;
    ///询价时间
    TThostFtdcTimeType ForQuoteTime;
    ///业务日期
    TThostFtdcDateType ActionDay;
    ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
};

ForQuoteSysID：交易所给的一个询价编号，以此定位一笔询价。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


交易接口

1.说明

2.代码示例

  2.1.源代码

  2.2.代码说明

  2.2.1.继承 CThostFtdcTraderSpi类

  2.2.2.初始化

  2.2.3.显示api版本号

  2.2.4.释放api线程

  2.2.5.登录

  2.2.6.结算单确认

  2.2.7.报单

  2.2.8.查询合约

  2.2.9.错误应答

  2.2.10.程序运行流程

回到顶部

< 前页 回目录 后页 >

■ 6.6.1P1_API接口说明

└◆ 交易接口

◇ 1.说明

交易员API提供了两个接口，分别为CThostFtdcTraderApi和CThostFtdcTraderSpi。这两个接口对FTD协议进行了封装，方便客户端应用程序的开发。客户端应用程序可以通过CThostFtdcTraderApi发出操作请求，通过继承CThostFtdcTraderSpi并重载回调函数来处理后台服务的响应。

交易员客户端应用程序至少由两个线程组成，一个是应用程序主线程，一个是交易员API工作线程。应用程序与交易系统的通讯是由 API工作线程驱动的。CThostFtdcTraderApi提供的接口是线程安全的，可以有多个应用程序线程同时发出请求。CThostFtdcTraderSpi提供的接口回调是由API工作线程驱动，通过实现SPI中的接口方法，可以从交易托管系统收取所需数据。

如果重载的某个回调函数阻塞，则等于阻塞了API工作线程，API与交易系统的通讯会停止。因此，在 CThostFtdcTraderSpi 派生类的回调函数中，通常应迅速返回，可以利用将数据放入缓冲区或通过Windows的消息机制来实现。

交易员 API 在运行过程中，会将一些数据写入本地文件中。调用CreateFtdcTraderApi函数，可以传递一个参数，指明存贮本地文件的路径。该路径必须在运行前已创建好。本地文件的扩展名都是”.con”。

注意以下事项：

init和release不是线程安全的，多线程使用需要加锁

在CThostFtdcTraderSpi 派生类的回调函数中应及时返回，不要阻塞。

API请求的输入参数不能为 NULL。

API请求的返回参数，0表示正确，其他表示错误，详细错误编码请查error.xml。

API一个进程中linux最多开180-200左右的连接数，windows最多开400左右连接数，想建立更多连接请多开进程。

CTP系统支持的通讯模式有三种：对话通讯模式，私有通讯模式，广播通讯模式。详细说明见[通讯模式]

回到顶部

◇ 2.代码示例

下面通过一个简单的代码示例，带大家快速了解下交易API的使用方法。该示例演示了API的初始化、订阅私有流、连接前置、登录交易系统、报单和查询等过程。

◇ 2.1.源代码

01.     //以下是tradehandler.h文件
02.
03.     #include "ThostFtdcTraderApi.h"
04.
05.     #include "traderApi.h"
06.
07.     #include <string.h>
08.
09.     #include <stdio.h>
10.
11.     #include <Windows.h>
12.
13.
14.
15.     class CTraderHandler : public CThostFtdcTraderSpi
16.
17.     {
18.
19.     private:
20.
21.       CThostFtdcTraderApi *m_ptraderapi;
22.
23.
24.
25.     public:
26.
27.       void connect()
28.
29.       {
30.
31.           //创建API实例
32.
33.           m_ptraderapi = CThostFtdcTraderApi::CreateFtdcTraderApi(".//flow/"); //必须提前创建好flow目录，流文件*.con就会在该文件夹下面创建，如果想要区别不同session创建的流水文件名称可见如下示例“.//flow/a_”
34.
35.           m_ptraderapi->RegisterSpi(this);
36.
37.           m_ptraderapi->SubscribePublicTopic(THOST_TERT_QUICK);
38.
39.           m_ptraderapi->SubscribePrivateTopic(THOST_TERT_QUICK); //设置私有流订阅模式
40.
41.           m_ptraderapi->RegisterFront("tcp://127.0.0.1:41205");
42.
43.           m_ptraderapi->Init();
44.
45.           //输出API版本信息
46.
47.           printf("%s\n", m_ptraderapi->GetApiVersion());
48.
49.       }
50.
51.
52.
53.       //释放
54.
55.       void release()
56.
57.       {
58.
59.           m_ptraderapi->Release();
60.
61.       }
62.
63.
64.
65.       //登陆
66.
67.       void login()
68.
69.       {
70.
71.           CThostFtdcReqUserLoginField t = {0};
72.
73.           strcpy_s(t.BrokerID, "1701");
74.
75.           strcpy_s(t.UserID, "1701_admin");
76.
77.           strcpy_s(t.Password, "1701_admin");
78.
79.           while (m_ptraderapi->ReqUserLogin(&t, 1)!=0)   Sleep(1000);
80.
81.       }
82.
83.
84.
85.       //结算单确认
86.
87.       void settlementinfoConfirm()
88.
89.       {
90.
91.           CThostFtdcSettlementInfoConfirmField t = {0};
92.
93.           strcpy_s(t.BrokerID, "1701");
94.
95.           strcpy_s(t.InvestorID, "00001");
96.
97.           while (m_ptraderapi->ReqSettlementInfoConfirm(&t, 2)!=0)  Sleep(1000);
98.
99.       }
100.
101.
102.
103.          //报单
104.
105.          void orderinsert()
106.
107.          {
108.
109.              CThostFtdcInputOrderField t = { 0 };
110.
111.              strcpy_s(t.BrokerID, "9999");
112.
113.              strcpy_s(t.InvestorID, "00001");
114.
115.              strcpy_s(t.UserID, "00001");
116.
117.              t.Direction = THOST_FTDC_D_Buy;
118.
119.              t.CombOffsetFlag[0] = THOST_FTDC_OF_Open;
120.
121.              t.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;
122.
123.              t.ContingentCondition = THOST_FTDC_CC_Immediately;
124.
125.              strcpy_s(t.InstrumentID, "sc1807");
126.
127.              t.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;
128.
129.              t.LimitPrice = 490;
130.
131.              t.OrderPriceType = THOST_FTDC_OPT_LimitPrice;
132.
133.              t.VolumeCondition = THOST_FTDC_VC_AV;
134.
135.              t.TimeCondition = THOST_FTDC_TC_GFD;
136.
137.              t.VolumeTotalOriginal = 1;
138.
139.              strcpy_s(t.OrderRef, "0000001");
140.
141.              strcpy_s(t.ExchangeID, "INE");
142.
143.              while (m_ptraderapi->ReqOrderInsert(&t, 3) != 0) Sleep(1000);
144.
145.          }
146.
147.          //查询合约
148.
149.          void qryInstrument()
150.
151.          {
152.
153.              CThostFtdcQryInstrumentField t = { 0 };
154.
155.              strcpy_s(t.ExchangeID, "SHFE");
156.
157.              strcpy_s(t.InstrumentID, "zn1803");
158.
159.              while (m_ptraderapi->ReqQryInstrument(&t, 4) != 0) Sleep(1000);
160.
161.          }
162.
163.
164.
165.        //前置连接响应
166.
167.          void OnFrontConnected()
168.
169.          {
170.
171.              printf("OnFrontConnected\n");
172.
173.          }
174.
175.
176.
177.          //登陆请求响应
178.
179.          void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
180.
181.          {
182.
183.              printf("OnRspUserLogin\n");
184.
185.          }
186.
187.
188.
189.          //结算单确认响应
190.
191.          void OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
192.
193.          {
194.
195.              printf("OnRspSettlementInfoConfirm\n");
196.
197.          }
198.
199.
200.
201.          //查询合约响应
202.
203.          void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
204.
205.          {
206.
207.              printf("OnRspQryInstrument\n");
208.
209.          }
210.
211.
212.          //报单通知
213.
214.          void OnRtnOrder(CThostFtdcOrderField *pOrder)
215.
216.          {
217.
218.              printf("OnRtnOrder\n");
219.
220.          }
221.
222.
223.
224.          //成交通知
225.
226.          void OnRtnTrade(CThostFtdcTradeField *pTrade)
227.
228.          {
229.
230.              printf("OnRtnTrade\n");
231.
232.          }
233.
234.
235.
236.          //报单录入请求响应
237.
238.          void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
239.
240.          {
241.
242.              printf("OnRspOrderInsert\n");
243.
244.          }
245.
246.
247.
248.          //错误应答
249.
250.          void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
251.
252.          {
253.
254.              printf("OnRspError\n");
255.
256.          }
257.
258.        };
259.
260.        //以下是main.cpp文件
261.
262.        #include "tradehandler.h"
263.
264.        int main(int argc, char *argv[])
265.
266.        {
267.
268.          CTraderHandler *trader = new CTraderHandler();
269.
270.          trader->connect();
271.
272.          Sleep(2000);
273.
274.          trader->login();
275.
276.          Sleep(2000);
277.
278.          trader->settlementinfoConfirm();
279.
280.          Sleep(2000);
281.
282.          trader->qryInstrument();
283.
284.          Sleep(2000);
285.
286.          trader->orderinsert();
287.
288.          Sleep(INFINITE);
289.
290.          trader->release();
291.
292.          return 1;
293.
294.        }

◇ 2.2.代码说明

◇ 2.2.1.继承CThostFtdcTraderSpi类

代码一开始通过#include "ThostFtdcTraderApi.h"，将thosttraderapi.lib中声明的类和数据类型包括进来，该头文件中有两个重要的基类：CThostFtdcTraderSpi和CThostFtdcTraderApi。

CThostFtdcTraderSpi类提供了交易相关的回调接口，用户需要继承该类并重载这些接口，以获取响应数据。

CThostFtdcTraderApi类则是提供了交易相关功能的请求接口，例如查询请求、报单请求、报价请求等。

第15行我们声明了一个CTraderHandler类，该类正是继承了CThostFtdcTraderSpi类，并且重载了OnFrontConnected、OnRspUserLogin、OnRspError、OnRspOrderInsert等接口。通过这种方式，例如当我们API和前置建立连接时，便会触发OnFrontConnected；当我们发起登录请求后，便会触发OnRspUserLogin。通过这些回调返回的数据，我们可以得知当前业务处理的结果或者获取我们想要的业务数据，进一步实现自己的业务逻辑。

第21行，声明了一个CThostFtdcTraderApi类型的变量m_ptraderapi，后续我们会实例化它，以便我们使用tradeapi提供的登录、报单和查询等功能。

◇ 2.2.2.初始化

第27行到43行connect()函数里，实现了线程的初始化，步骤为：

Step 1 创建Api实例（CreateFtdcTraderApi）并为其注册对应的回调接口类的实例（RegisterSpi）。

Step 2 订阅私有流（SubscribePrivateTopic）。

Step 3 订阅公有流（SubscribePublicTopic）。

Step 4 注册名称服务器网络地址（RegisterNameServer）或注册前置机网络地址（RegisterFront）。

Step 5 初始化Api（Init），使API建立与前置的连接，连接成功后回调OnFrontConnected。

第33行创建了一个api实例，并将其赋值给m_ptraderapi，同时参数".//flow/"指明我们api流水文件存放的目录为flow目录，因此在运行程序前，我们需要手工创建好这个目录！

流水文件以.con文件类型方式存放流水序号和交易日信息，这些信息对api正常工作有重要意义，不可随意修改和删除！并且多个api实例不可共享一个流水文件，必须通过不同文件夹或者不同流水文件名区分开。

第35行将自己定义的继承了Spi类的CTraderHandler注册给CThostFtdcTraderApi，这样API就能将收到的各种数据通过Spi类的接口回调给用户。

第37行使用QUICK模式订阅了私有流。订阅私有流的方式有很多种，可以参见SubscribePrivateTopic的接口说明。

第41行注册了前置地址，如果有多个地址，可以多次调用RegisterFront函数传入不同的地址来实现。

第43行调用Init()函数开始正式初始化api，也就是说前面的工作只是准备工作，到了这里api才真正开始工作。此时api会按照之前设置的私有流订阅方式和注册的地址发起与CTP前置的连接。

init和release不是线程安全的，多线程使用需要加锁。

完成以上步骤后，客户端就已经和ctp的交易前置建立了连接。

第167行到173行，如果成功建立连接，OnFrontConnected就会被调用。后续我们就可以调用各种API接口完成业务需求。

◇ 2.2.3.显示api版本号

第47行，打印当前api的版本号。

◇ 2.2.4.释放api线程

第55行到61行，释放了api线程，释放后api资源会被回收，并且与前置断开连接。

◇ 2.2.5.登录

第67到81行，前置连接成功后能够开始登陆交易系统了，先初始化登陆结构体，再赋值相应字段。brokerid、userid、password都是必要字段。之后发送登陆（ReqUserLogin）指令。通过返回值可以判断是否发送成功，0表示成功，其他则表示失败，具体可以参考接口ReqUserLogin。发送不成功可以尝试等待一小会重发。

注意这里返回0不表示登录成功，而是仅仅表示api指令发出去了。该规则同样适用于其他请求接口，建议在实际应用中做好超时重发机制，以便在网络丢包的情况下能够及时重发指令。

在响应里，FrontID和SessionID是非常重要的两个ID，他标识了本次登录的当天唯一编号。对于api用户来说，如果同一用户有多个同时在线的会话，鉴于api的私有流机制，他们彼此间可以互收私有流（例如0001投资者，session1报单，session2也能收到回报），此时就可以用这组ID来过滤非本会话的私有流数据，因为对于不同的会话，这组ID是不同的；而对于交易系统来说，则可以用来定位客户的各种交易行为。

第179到185行，为请求登录后的响应。

◇ 2.2.6.结算单确认

第87到99行，每一个交易日第一次登陆都需要先确认结算，不然只能做查询，不能执行报单等交易请求。

第191到197行，为请求确认结算单后的响应。

◇ 2.2.7.报单

第105到143行，报入一笔限价立即单，报单属性为，多头，开仓，投机，立即单，合约为sc1807，非强平单，限价单价格为490，任意数量，当天有效，手数为1，报单引用OrderRef为"0000001",交易所为原油交易所。

注意，报单引用（OrderRef）是同一个sessionid下必须唯一且递增的一个值，不要求连续递增，但是必须要递增。而且，必须是数字，不能有英文字母！

第238到244行，如果报单填错了字段，或者客户资金不足，则报单指令发出后会被CTP拒绝，触发OnRspOrderInsert回调，返回"CTP：..."这类的报错。

第214到220行，报单请求通过交易核心的合法性验证后，通过OnRtnOrder返回。一开始会返回未知单，之后会实时推送更新的报单状态。

第226到232行，报单成交后响应，通过OnRtnTrade返回。

◇ 2.2.8.查询合约

第149到161行，请求查询合约信息。对于大部分查询接口，如果请求信息填空，则会返回所有的记录；但是也有例外，比如保证金率和手续费率，C必须指定合约，可以参考对应的接口说明。

第203到209行，请求查询合约后的响应。

◇ 2.2.9.错误应答

第250到256，错误应答返回。一些特殊的报错会通过该接口返回，例如错将行情端口当成交易端口，则会报无此功能，或者为没有权限的投资者报单会报无此权限，等等。

◇ 2.2.10.程序运行流程

第264到292行，首先初始化CTraderHandler类。调用connect函数开始连接ctp前置，依次执行登录，结算单确认，查询合约，报单操作。

请参阅：

>> CThostFtdcTraderSpi

>> CThostFtdcTraderApi


CThostFtdcTraderSpi

1.接口

2.代码示例

3.FAQ

回到顶部

< 前页 回目录 后页 >

■ 6.6.1P1_API接口说明

└△ 交易接口

  └◆ CThostFtdcTraderSpi

CThostFtdcTraderSpi类提供了交易相关的回调接口，用户需要继承该类并重载这些接口，以获取响应数据。

◇ 1.接口

class CThostFtdcTraderSpi
{
public:
    ///当客户端与交易后台建立起通信连接时（还未登录前），该方法被调用。
    virtual void OnFrontConnected(){};
    ///当客户端与交易后台通信连接断开时，该方法被调用。当发生这个情况后，API会自动重新连接，客户端可不做处理。
    ///@param nReason 错误原因
    ///        0x1001 网络读失败
    ///        0x1002 网络写失败
    ///        0x2001 接收心跳超时
    ///        0x2002 发送心跳失败
    ///        0x2003 收到错误报文
    virtual void OnFrontDisconnected(int nReason){};
    ///心跳超时警告。当长时间未收到报文时，该方法被调用。
    ///@param nTimeLapse 距离上次接收报文的时间
    virtual void OnHeartBeatWarning(int nTimeLapse){};
    ///客户端认证响应
    virtual void OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///登录请求响应
    virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///登出请求响应
    virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///用户口令更新请求响应
    virtual void OnRspUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///资金账户口令更新请求响应
    virtual void OnRspTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///查询用户当前支持的认证模式的回复
    virtual void OnRspUserAuthMethod(CThostFtdcRspUserAuthMethodField *pRspUserAuthMethod, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///获取图形验证码请求的回复
    virtual void OnRspGenUserCaptcha(CThostFtdcRspGenUserCaptchaField *pRspGenUserCaptcha, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///获取短信验证码请求的回复
    virtual void OnRspGenUserText(CThostFtdcRspGenUserTextField *pRspGenUserText, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///报单录入请求响应
    virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///预埋单录入请求响应
    virtual void OnRspParkedOrderInsert(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///预埋撤单录入请求响应
    virtual void OnRspParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///报单操作请求响应
    virtual void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///查询最大报单数量响应
    virtual void OnRspQryMaxOrderVolume(CThostFtdcQryMaxOrderVolumeField *pQryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///投资者结算结果确认响应
    virtual void OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///删除预埋单响应
    virtual void OnRspRemoveParkedOrder(CThostFtdcRemoveParkedOrderField *pRemoveParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///删除预埋撤单响应
    virtual void OnRspRemoveParkedOrderAction(CThostFtdcRemoveParkedOrderActionField *pRemoveParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///执行宣告录入请求响应
    virtual void OnRspExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///执行宣告操作请求响应
    virtual void OnRspExecOrderAction(CThostFtdcInputExecOrderActionField *pInputExecOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///询价录入请求响应
    virtual void OnRspForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///报价录入请求响应
    virtual void OnRspQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///报价操作请求响应
    virtual void OnRspQuoteAction(CThostFtdcInputQuoteActionField *pInputQuoteAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///批量报单操作请求响应
    virtual void OnRspBatchOrderAction(CThostFtdcInputBatchOrderActionField *pInputBatchOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///期权自对冲录入请求响应
    virtual void OnRspOptionSelfCloseInsert(CThostFtdcInputOptionSelfCloseField *pInputOptionSelfClose, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///期权自对冲操作请求响应
    virtual void OnRspOptionSelfCloseAction(CThostFtdcInputOptionSelfCloseActionField *pInputOptionSelfCloseAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///申请组合录入请求响应
    virtual void OnRspCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询报单响应
    virtual void OnRspQryOrder(CThostFtdcOrderField *pOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询成交响应
    virtual void OnRspQryTrade(CThostFtdcTradeField *pTrade, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询投资者持仓响应
    virtual void OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询资金账户响应
    virtual void OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询投资者响应
    virtual void OnRspQryInvestor(CThostFtdcInvestorField *pInvestor, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询交易编码响应
    virtual void OnRspQryTradingCode(CThostFtdcTradingCodeField *pTradingCode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询合约保证金率响应
    virtual void OnRspQryInstrumentMarginRate(CThostFtdcInstrumentMarginRateField *pInstrumentMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询合约手续费率响应
    virtual void OnRspQryInstrumentCommissionRate(CThostFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询交易所响应
    virtual void OnRspQryExchange(CThostFtdcExchangeField *pExchange, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询产品响应
    virtual void OnRspQryProduct(CThostFtdcProductField *pProduct, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询合约响应
    virtual void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询行情响应
    virtual void OnRspQryDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询投资者结算结果响应
    virtual void OnRspQrySettlementInfo(CThostFtdcSettlementInfoField *pSettlementInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询转帐银行响应
    virtual void OnRspQryTransferBank(CThostFtdcTransferBankField *pTransferBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询投资者持仓明细响应
    virtual void OnRspQryInvestorPositionDetail(CThostFtdcInvestorPositionDetailField *pInvestorPositionDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询客户通知响应
    virtual void OnRspQryNotice(CThostFtdcNoticeField *pNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询结算信息确认响应
    virtual void OnRspQrySettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询投资者持仓明细响应
    virtual void OnRspQryInvestorPositionCombineDetail(CThostFtdcInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///查询保证金监管系统经纪公司资金账户密钥响应
    virtual void OnRspQryCFMMCTradingAccountKey(CThostFtdcCFMMCTradingAccountKeyField *pCFMMCTradingAccountKey, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询仓单折抵信息响应
    virtual void OnRspQryEWarrantOffset(CThostFtdcEWarrantOffsetField *pEWarrantOffset, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询投资者品种/跨品种保证金响应
    virtual void OnRspQryInvestorProductGroupMargin(CThostFtdcInvestorProductGroupMarginField *pInvestorProductGroupMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询交易所保证金率响应
    virtual void OnRspQryExchangeMarginRate(CThostFtdcExchangeMarginRateField *pExchangeMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询交易所调整保证金率响应
    virtual void OnRspQryExchangeMarginRateAdjust(CThostFtdcExchangeMarginRateAdjustField *pExchangeMarginRateAdjust, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询汇率响应
    virtual void OnRspQryExchangeRate(CThostFtdcExchangeRateField *pExchangeRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询二级代理操作员银期权限响应
    virtual void OnRspQrySecAgentACIDMap(CThostFtdcSecAgentACIDMapField *pSecAgentACIDMap, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询产品报价汇率
    virtual void OnRspQryProductExchRate(CThostFtdcProductExchRateField *pProductExchRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询产品组
    virtual void OnRspQryProductGroup(CThostFtdcProductGroupField *pProductGroup, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询做市商合约手续费率响应
    virtual void OnRspQryMMInstrumentCommissionRate(CThostFtdcMMInstrumentCommissionRateField *pMMInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询做市商期权合约手续费响应
    virtual void OnRspQryMMOptionInstrCommRate(CThostFtdcMMOptionInstrCommRateField *pMMOptionInstrCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询报单手续费响应
    virtual void OnRspQryInstrumentOrderCommRate(CThostFtdcInstrumentOrderCommRateField *pInstrumentOrderCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询资金账户响应
    virtual void OnRspQrySecAgentTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询二级代理商资金校验模式响应
    virtual void OnRspQrySecAgentCheckMode(CThostFtdcSecAgentCheckModeField *pSecAgentCheckMode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询二级代理商信息响应
    virtual void OnRspQrySecAgentTradeInfo(CThostFtdcSecAgentTradeInfoField *pSecAgentTradeInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询期权交易成本响应
    virtual void OnRspQryOptionInstrTradeCost(CThostFtdcOptionInstrTradeCostField *pOptionInstrTradeCost, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询期权合约手续费响应
    virtual void OnRspQryOptionInstrCommRate(CThostFtdcOptionInstrCommRateField *pOptionInstrCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询执行宣告响应
    virtual void OnRspQryExecOrder(CThostFtdcExecOrderField *pExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询询价响应
    virtual void OnRspQryForQuote(CThostFtdcForQuoteField *pForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询报价响应
    virtual void OnRspQryQuote(CThostFtdcQuoteField *pQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询期权自对冲响应
    virtual void OnRspQryOptionSelfClose(CThostFtdcOptionSelfCloseField *pOptionSelfClose, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询投资单元响应
    virtual void OnRspQryInvestUnit(CThostFtdcInvestUnitField *pInvestUnit, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询组合合约安全系数响应
    virtual void OnRspQryCombInstrumentGuard(CThostFtdcCombInstrumentGuardField *pCombInstrumentGuard, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询申请组合响应
    virtual void OnRspQryCombAction(CThostFtdcCombActionField *pCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询转帐流水响应
    virtual void OnRspQryTransferSerial(CThostFtdcTransferSerialField *pTransferSerial, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询银期签约关系响应
    virtual void OnRspQryAccountregister(CThostFtdcAccountregisterField *pAccountregister, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///错误应答
    virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///报单通知
    virtual void OnRtnOrder(CThostFtdcOrderField *pOrder) {};
    ///成交通知
    virtual void OnRtnTrade(CThostFtdcTradeField *pTrade) {};
    ///报单录入错误回报
    virtual void OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo) {};
    ///报单操作错误回报
    virtual void OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo) {};
    ///合约交易状态通知
    virtual void OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField *pInstrumentStatus) {};
    ///交易所公告通知
    virtual void OnRtnBulletin(CThostFtdcBulletinField *pBulletin) {};
    ///交易通知
    virtual void OnRtnTradingNotice(CThostFtdcTradingNoticeInfoField *pTradingNoticeInfo) {};
    ///提示条件单校验错误
    virtual void OnRtnErrorConditionalOrder(CThostFtdcErrorConditionalOrderField *pErrorConditionalOrder) {};
    ///执行宣告通知
    virtual void OnRtnExecOrder(CThostFtdcExecOrderField *pExecOrder) {};
    ///执行宣告录入错误回报
    virtual void OnErrRtnExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo) {};
    ///执行宣告操作错误回报
    virtual void OnErrRtnExecOrderAction(CThostFtdcExecOrderActionField *pExecOrderAction, CThostFtdcRspInfoField *pRspInfo) {};
    ///询价录入错误回报
    virtual void OnErrRtnForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo) {};
    ///报价通知
    virtual void OnRtnQuote(CThostFtdcQuoteField *pQuote) {};
    ///报价录入错误回报
    virtual void OnErrRtnQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo) {};
    ///报价操作错误回报
    virtual void OnErrRtnQuoteAction(CThostFtdcQuoteActionField *pQuoteAction, CThostFtdcRspInfoField *pRspInfo) {};
    ///询价通知
    virtual void OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp) {};
    ///保证金监控中心用户令牌
    virtual void OnRtnCFMMCTradingAccountToken(CThostFtdcCFMMCTradingAccountTokenField *pCFMMCTradingAccountToken) {};
    ///批量报单操作错误回报
    virtual void OnErrRtnBatchOrderAction(CThostFtdcBatchOrderActionField *pBatchOrderAction, CThostFtdcRspInfoField *pRspInfo) {};
    ///期权自对冲通知
    virtual void OnRtnOptionSelfClose(CThostFtdcOptionSelfCloseField *pOptionSelfClose) {};
    ///期权自对冲录入错误回报
    virtual void OnErrRtnOptionSelfCloseInsert(CThostFtdcInputOptionSelfCloseField *pInputOptionSelfClose, CThostFtdcRspInfoField *pRspInfo) {};
    ///期权自对冲操作错误回报
    virtual void OnErrRtnOptionSelfCloseAction(CThostFtdcOptionSelfCloseActionField *pOptionSelfCloseAction, CThostFtdcRspInfoField *pRspInfo) {};
    ///申请组合通知
    virtual void OnRtnCombAction(CThostFtdcCombActionField *pCombAction) {};
    ///申请组合录入错误回报
    virtual void OnErrRtnCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo) {};
    ///请求查询签约银行响应
    virtual void OnRspQryContractBank(CThostFtdcContractBankField *pContractBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询预埋单响应
    virtual void OnRspQryParkedOrder(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询预埋撤单响应
    virtual void OnRspQryParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询交易通知响应
    virtual void OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询经纪公司交易参数响应
    virtual void OnRspQryBrokerTradingParams(CThostFtdcBrokerTradingParamsField *pBrokerTradingParams, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询经纪公司交易算法响应
    virtual void OnRspQryBrokerTradingAlgos(CThostFtdcBrokerTradingAlgosField *pBrokerTradingAlgos, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求查询监控中心用户令牌
    virtual void OnRspQueryCFMMCTradingAccountToken(CThostFtdcQueryCFMMCTradingAccountTokenField *pQueryCFMMCTradingAccountToken, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///银行发起银行资金转期货通知
    virtual void OnRtnFromBankToFutureByBank(CThostFtdcRspTransferField *pRspTransfer) {};
    ///银行发起期货资金转银行通知
    virtual void OnRtnFromFutureToBankByBank(CThostFtdcRspTransferField *pRspTransfer) {};
    ///银行发起冲正银行转期货通知
    virtual void OnRtnRepealFromBankToFutureByBank(CThostFtdcRspRepealField *pRspRepeal) {};
    ///银行发起冲正期货转银行通知
    virtual void OnRtnRepealFromFutureToBankByBank(CThostFtdcRspRepealField *pRspRepeal) {};
    ///期货发起银行资金转期货通知
    virtual void OnRtnFromBankToFutureByFuture(CThostFtdcRspTransferField *pRspTransfer) {};
    ///期货发起期货资金转银行通知
    virtual void OnRtnFromFutureToBankByFuture(CThostFtdcRspTransferField *pRspTransfer) {};
    ///系统运行时期货端手工发起冲正银行转期货请求，银行处理完毕后报盘发回的通知
    virtual void OnRtnRepealFromBankToFutureByFutureManual(CThostFtdcRspRepealField *pRspRepeal) {};
    ///系统运行时期货端手工发起冲正期货转银行请求，银行处理完毕后报盘发回的通知
    virtual void OnRtnRepealFromFutureToBankByFutureManual(CThostFtdcRspRepealField *pRspRepeal) {};
    ///期货发起查询银行余额通知
    virtual void OnRtnQueryBankBalanceByFuture(CThostFtdcNotifyQueryAccountField *pNotifyQueryAccount) {};
    ///期货发起银行资金转期货错误回报
    virtual void OnErrRtnBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo) {};
    ///期货发起期货资金转银行错误回报
    virtual void OnErrRtnFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo) {};
    ///系统运行时期货端手工发起冲正银行转期货错误回报
    virtual void OnErrRtnRepealBankToFutureByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo) {};
    ///系统运行时期货端手工发起冲正期货转银行错误回报
    virtual void OnErrRtnRepealFutureToBankByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo) {};
    ///期货发起查询银行余额错误回报
    virtual void OnErrRtnQueryBankBalanceByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo) {};
    ///期货发起冲正银行转期货请求，银行处理完毕后报盘发回的通知
    virtual void OnRtnRepealFromBankToFutureByFuture(CThostFtdcRspRepealField *pRspRepeal) {};
    ///期货发起冲正期货转银行请求，银行处理完毕后报盘发回的通知
    virtual void OnRtnRepealFromFutureToBankByFuture(CThostFtdcRspRepealField *pRspRepeal) {};
    ///期货发起银行资金转期货应答
    virtual void OnRspFromBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///期货发起期货资金转银行应答
    virtual void OnRspFromFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///期货发起查询银行余额应答
    virtual void OnRspQueryBankAccountMoneyByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///银行发起银期开户通知
    virtual void OnRtnOpenAccountByBank(CThostFtdcOpenAccountField *pOpenAccount) {};
    ///银行发起银期销户通知
    virtual void OnRtnCancelAccountByBank(CThostFtdcCancelAccountField *pCancelAccount) {};
    ///银行发起变更银行账号通知
    virtual void OnRtnChangeAccountByBank(CThostFtdcChangeAccountField *pChangeAccount) {};
    ///请求查询分类合约响应
    virtual void OnRspQryClassifiedInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
    ///请求组合优惠比例响应
    virtual void OnRspQryCombPromotionParam(CThostFtdcCombPromotionParamField *pCombPromotionParam, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
};

回到顶部

◇ 2.代码示例

// CTraderHandler继承CThostFtdcTraderSpi
class CTraderHandler : public CThostFtdcTraderSpi
{
  //重载，报单通知
  void OnRtnOrder(CThostFtdcOrderField *pOrder)
  {
      printf("OnRtnOrder\n");
  }
  //重载，成交通知
  void OnRtnTrade(CThostFtdcTradeField *pTrade)
  {
      printf("OnRtnTrade\n");
  }
  //重载，报单录入请求响应
  void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
  {
      printf("OnRspOrderInsert\n");
  }
  //重载，错误应答
  void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
  {
      printf("OnRspError\n");
  }
}

回到顶部

◇ 3.FAQ

无

请参阅：

OnErrRtnBankToFutureByFuture

OnErrRtnBatchOrderAction

OnErrRtnCombActionInsert

OnErrRtnExecOrderAction

OnErrRtnExecOrderInsert

OnErrRtnForQuoteInsert

OnErrRtnFutureToBankByFuture

OnErrRtnOptionSelfCloseAction

OnErrRtnOptionSelfCloseInsert

OnErrRtnOrderAction

OnErrRtnOrderInsert

OnErrRtnQueryBankBalanceByFuture

OnErrRtnQuoteAction

OnErrRtnQuoteInsert

OnErrRtnRepealBankToFutureByFutureManual

OnErrRtnRepealFutureToBankByFutureManual

OnFrontConnected

OnFrontDisconnected

OnHeartBeatWarning

OnRspAuthenticate

OnRspBatchOrderAction

OnRspCombActionInsert

OnRspError

OnRspExecOrderAction

OnRspExecOrderInsert

OnRspForQuoteInsert

OnRspFromBankToFutureByFuture

OnRspFromFutureToBankByFuture

OnRspGenUserCaptcha

OnRspGenUserText

OnRspOptionSelfCloseAction

OnRspOptionSelfCloseInsert

OnRspOrderAction

OnRspOrderInsert

OnRspParkedOrderAction

OnRspParkedOrderInsert

OnRspQryAccountregister

OnRspQryBrokerTradingAlgos

OnRspQryBrokerTradingParams

OnRspQryCFMMCTradingAccountKey

OnRspQryCombAction

OnRspQryCombInstrumentGuard

OnRspQryContractBank

OnRspQryDepthMarketData

OnRspQryEWarrantOffset

OnRspQryExchange

OnRspQryExchangeMarginRate

OnRspQryExchangeMarginRateAdjust

OnRspQryExchangeRate

OnRspQryExecOrder

OnRspQryForQuote

OnRspQryInstrument

OnRspQryInstrumentCommissionRate

OnRspQryInstrumentMarginRate

OnRspQryInstrumentOrderCommRate

OnRspQryInvestor

OnRspQryInvestorPosition

OnRspQryInvestorPositionCombineDetail

OnRspQryInvestorPositionDetail

OnRspQryInvestorProductGroupMargin

OnRspQryInvestUnit

OnRspQryMMInstrumentCommissionRate

OnRspQryMMOptionInstrCommRate

OnRspQryNotice

OnRspQryOptionInstrCommRate

OnRspQryOptionInstrTradeCost

OnRspQryOptionSelfClose

OnRspQryOrder

OnRspQryParkedOrder

OnRspQryParkedOrderAction

OnRspQryProduct

OnRspQryProductExchRate

OnRspQryProductGroup

OnRspQryQuote

OnRspQrySecAgentACIDMap

OnRspQrySecAgentCheckMode

OnRspQrySecAgentTradeInfo

OnRspQrySecAgentTradingAccount

OnRspQrySettlementInfo

OnRspQrySettlementInfoConfirm

OnRspQryTrade

OnRspQryTradingAccount

OnRspQryTradingCode

OnRspQryTradingNotice

OnRspQryTransferBank

OnRspQryTransferSerial

OnRspQueryBankAccountMoneyByFuture

OnRspQueryCFMMCTradingAccountToken

OnRspQuoteAction

OnRspQuoteInsert

OnRspRemoveParkedOrder

OnRspRemoveParkedOrderAction

OnRspSettlementInfoConfirm

OnRspTradingAccountPasswordUpdate

OnRspUserAuthMethod

OnRspUserLogin

OnRspUserLogout

OnRspUserPasswordUpdate

OnRtnBulletin

OnRtnCancelAccountByBank

OnRtnCFMMCTradingAccountToken

OnRtnChangeAccountByBank

OnRtnCombAction

OnRtnErrorConditionalOrder

OnRtnExecOrder

OnRtnForQuoteRsp

OnRtnFromBankToFutureByBank

OnRtnFromBankToFutureByFuture

OnRtnFromFutureToBankByBank

OnRtnFromFutureToBankByFuture

OnRtnInstrumentStatus

OnRtnOpenAccountByBank

OnRtnOptionSelfClose

OnRtnOrder

OnRtnQueryBankBalanceByFuture

OnRtnQuote

OnRtnRepealFromBankToFutureByBank

OnRtnRepealFromBankToFutureByFuture

OnRtnRepealFromBankToFutureByFutureManual

OnRtnRepealFromFutureToBankByBank

OnRtnRepealFromFutureToBankByFuture

OnRtnRepealFromFutureToBankByFutureManual

OnRtnTrade

OnRtnTradingNotice

OnRspQryMaxOrderVolume

OnRspQryClassifiedInstrument

OnRspQryCombPromotionParam

OnRspQryRiskSettleInvstPosition

OnRspQryRiskSettleProductStatus


OnErrRtnBankToFutureByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起银行资金转期货错误回报，当执行ReqFromBankToFutureByFuture后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pReqTransfer：转账请求

struct CThostFtdcReqTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode: 202001期货发起银行资金转期货

BankID：返回银行在期货公司的代码

BankBranchID：填0000

BrokerBranchID：一般为空

CustomerName：客户姓名

BankPassWord：返回银行的密码，都是“*”密码不显示

Password：返回期货账户的密码，都是“*”密码不显示

TransferStatus：转账交易的最后状态

TradeAmount：转账金额

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnBatchOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

批量报单操作错误回报

◇ 1.函数原型

virtual void OnErrRtnBatchOrderAction(CThostFtdcBatchOrderActionField *pBatchOrderAction, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pBatchOrderAction：批量报单操作

struct CThostFtdcBatchOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///报单操作引用
    TThostFtdcOrderActionRefType    OrderActionRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///操作日期
    TThostFtdcDateType  ActionDate;
    ///操作时间
    TThostFtdcTimeType  ActionTime;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///操作本地编号
    TThostFtdcOrderLocalIDType  ActionLocalID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///报单操作状态
    TThostFtdcOrderActionStatusType OrderActionStatus;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve1;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

OrderActionStatus：撤单后报单的状态

StatusMsg：撤单错误的状态信息，如果没有错误的则返回0

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnCombActionInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

申请组合录入错误回报

◇ 1.函数原型

virtual void OnErrRtnCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pInputCombAction：输入的申请组合

struct CThostFtdcInputCombActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///组合引用
    TThostFtdcOrderRefType  CombActionRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///组合指令方向
    TThostFtdcCombDirectionType CombDirection;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnExecOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

执行宣告操作错误回报，当执行ReqExecOrderAction后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnExecOrderAction(CThostFtdcExecOrderActionField *pExecOrderAction, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pExecOrderAction：执行宣告操作

struct CThostFtdcExecOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///执行宣告操作引用
    TThostFtdcOrderActionRefType    ExecOrderActionRef;
    ///执行宣告引用
    TThostFtdcOrderRefType  ExecOrderRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///执行宣告操作编号
    TThostFtdcExecOrderSysIDType    ExecOrderSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///操作日期
    TThostFtdcDateType  ActionDate;
    ///操作时间
    TThostFtdcTimeType  ActionTime;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///本地执行宣告编号
    TThostFtdcOrderLocalIDType  ExecOrderLocalID;
    ///操作本地编号
    TThostFtdcOrderLocalIDType  ActionLocalID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///报单操作状态
    TThostFtdcOrderActionStatusType OrderActionStatus;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///执行类型
    TThostFtdcActionTypeType    ActionType;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

ActionFlag：支持删除操作，不支持修改

InstallID：CTP内部使用

OrderActionStatus：报单的状态

StatusMsg：错误的信息

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnExecOrderInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

执行宣告录入错误回报，当执行ReqExecOrderInsert后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pInputExecOrder：输入的执行宣告

struct CThostFtdcInputExecOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///执行宣告引用
    TThostFtdcOrderRefType  ExecOrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///开平标志
    TThostFtdcOffsetFlagType    OffsetFlag;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///执行类型
    TThostFtdcActionTypeType    ActionType;
    ///保留头寸申请的持仓方向
    TThostFtdcPosiDirectionType PosiDirection;
    ///期权行权后是否保留期货头寸的标记,该字段已废弃
    TThostFtdcExecOrderPositionFlagType ReservePositionFlag;
    ///期权行权后生成的头寸是否自动平仓
    TThostFtdcExecOrderCloseFlagType    CloseFlag;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnForQuoteInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

询价录入错误回报，当执行ReqForQuoteInsert后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pInputForQuote：输入的询价

struct CThostFtdcInputForQuoteField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///询价引用
    TThostFtdcOrderRefType  ForQuoteRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnFutureToBankByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起期货资金转银行错误回报，当执行ReqFromFutureToBankByFuture后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pReqTransfer：转账请求

struct CThostFtdcReqTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode: 202002期货发起期货资金转银行

BankID：返回银行在期货公司的代码

BankBranchID：填0000

BrokerBranchID：一般为空

CustomerName：客户姓名

BankPassWord：返回银行的密码，都是“*”密码不显示，

Password：返回期货账户的密码，都是“*”密码不显示

ErrorMsg：返回转账成功与否的状态

TradeAmount：转账金额

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnOptionSelfCloseAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期权自对冲操作错误回报，当执行ReqOptionSelfCloseAction后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnOptionSelfCloseAction(CThostFtdcOptionSelfCloseActionField *pOptionSelfCloseAction, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pOptionSelfCloseAction：期权自对冲操作

struct CThostFtdcOptionSelfCloseActionField
{
///经纪公司代码
TThostFtdcBrokerIDType  BrokerID;
///投资者代码
TThostFtdcInvestorIDType    InvestorID;
///期权自对冲操作引用
TThostFtdcOrderActionRefType    OptionSelfCloseActionRef;
///期权自对冲引用
TThostFtdcOrderRefType  OptionSelfCloseRef;
///请求编号
TThostFtdcRequestIDType RequestID;
///前置编号
TThostFtdcFrontIDType   FrontID;
///会话编号
TThostFtdcSessionIDType SessionID;
///交易所代码
TThostFtdcExchangeIDType    ExchangeID;
///期权自对冲操作编号
TThostFtdcOrderSysIDType    OptionSelfCloseSysID;
///操作标志
TThostFtdcActionFlagType    ActionFlag;
///操作日期
TThostFtdcDateType  ActionDate;
///操作时间
TThostFtdcTimeType  ActionTime;
///交易所交易员代码
TThostFtdcTraderIDType  TraderID;
///安装编号
TThostFtdcInstallIDType InstallID;
///本地期权自对冲编号
TThostFtdcOrderLocalIDType  OptionSelfCloseLocalID;
///操作本地编号
TThostFtdcOrderLocalIDType  ActionLocalID;
///会员代码
TThostFtdcParticipantIDType ParticipantID;
///客户代码
TThostFtdcClientIDType  ClientID;
///业务单元
TThostFtdcBusinessUnitType  BusinessUnit;
///报单操作状态
TThostFtdcOrderActionStatusType OrderActionStatus;
///用户代码
TThostFtdcUserIDType    UserID;
///状态信息
TThostFtdcErrorMsgType  StatusMsg;
///保留的无效字段
TThostFtdcOldInstrumentIDType   reserve1;
///营业部编号
TThostFtdcBranchIDType  BranchID;
///投资单元代码
TThostFtdcInvestUnitIDType  InvestUnitID;
///保留的无效字段
TThostFtdcOldIPAddressType  reserve2;
///Mac地址
TThostFtdcMacAddressType    MacAddress;
///合约代码
TThostFtdcInstrumentIDType  InstrumentID;
///IP地址
TThostFtdcIPAddressType IPAddress;
};

ActionFlag：只有删除标志，修改标志位不支持

InstallID：CTP内部使用

StatusMsg：报错信息

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnOptionSelfCloseInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期权自对冲录入错误回报，当执行ReqOptionSelfCloseInsert后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnOptionSelfCloseInsert(CThostFtdcInputOptionSelfCloseField *pInputOptionSelfClose, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pInputOptionSelfClose：输入的期权自对冲

struct CThostFtdcInputOptionSelfCloseField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///期权自对冲引用
    TThostFtdcOrderRefType  OptionSelfCloseRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///期权行权的头寸是否自对冲
    TThostFtdcOptSelfCloseFlagType  OptSelfCloseFlag;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报单操作错误回报，当执行ReqOrderAction后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pOrderAction：报单操作

struct CThostFtdcOrderActionField
{
///经纪公司代码
TThostFtdcBrokerIDType  BrokerID;
///投资者代码
TThostFtdcInvestorIDType    InvestorID;
///报单操作引用
TThostFtdcOrderActionRefType    OrderActionRef;
///报单引用
TThostFtdcOrderRefType  OrderRef;
///请求编号
TThostFtdcRequestIDType RequestID;
///前置编号
TThostFtdcFrontIDType   FrontID;
///会话编号
TThostFtdcSessionIDType SessionID;
///交易所代码
TThostFtdcExchangeIDType    ExchangeID;
///报单编号
TThostFtdcOrderSysIDType    OrderSysID;
///操作标志
TThostFtdcActionFlagType    ActionFlag;
///价格
TThostFtdcPriceType LimitPrice;
///数量变化
TThostFtdcVolumeType    VolumeChange;
///操作日期
TThostFtdcDateType  ActionDate;
///操作时间
TThostFtdcTimeType  ActionTime;
///交易所交易员代码
TThostFtdcTraderIDType  TraderID;
///安装编号
TThostFtdcInstallIDType InstallID;
///本地报单编号
TThostFtdcOrderLocalIDType  OrderLocalID;
///操作本地编号
TThostFtdcOrderLocalIDType  ActionLocalID;
///会员代码
TThostFtdcParticipantIDType ParticipantID;
///客户代码
TThostFtdcClientIDType  ClientID;
///业务单元
TThostFtdcBusinessUnitType  BusinessUnit;
///报单操作状态
TThostFtdcOrderActionStatusType OrderActionStatus;
///用户代码
TThostFtdcUserIDType    UserID;
///状态信息
TThostFtdcErrorMsgType  StatusMsg;
///保留的无效字段
TThostFtdcOldInstrumentIDType   reserve1;
///营业部编号
TThostFtdcBranchIDType  BranchID;
///投资单元代码
TThostFtdcInvestUnitIDType  InvestUnitID;
///保留的无效字段
TThostFtdcOldIPAddressType  reserve2;
///Mac地址
TThostFtdcMacAddressType    MacAddress;
///合约代码
TThostFtdcInstrumentIDType  InstrumentID;
///IP地址
TThostFtdcIPAddressType IPAddress;
};

OrderSysID：交易所返回的报单编号

ActionFlag：撤单标志，现在只支持删除，不支持修改

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnOrderInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报单录入错误回报，当执行ReqOrderInsert后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pInputOrder：输入报单

struct CThostFtdcInputOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///报单价格条件
    TThostFtdcOrderPriceTypeType    OrderPriceType;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///组合开平标志
    TThostFtdcCombOffsetFlagType    CombOffsetFlag;
    ///组合投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量
    TThostFtdcVolumeType    VolumeTotalOriginal;
    ///有效期类型
    TThostFtdcTimeConditionType TimeCondition;
    ///GTD日期
    TThostFtdcDateType  GTDDate;
    ///成交量类型
    TThostFtdcVolumeConditionType   VolumeCondition;
    ///最小成交量
    TThostFtdcVolumeType    MinVolume;
    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;
    ///强平原因
    TThostFtdcForceCloseReasonType  ForceCloseReason;
    ///自动挂起标志
    TThostFtdcBoolType  IsAutoSuspend;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///用户强评标志
    TThostFtdcBoolType  UserForceClose;
    ///互换单标志
    TThostFtdcBoolType  IsSwapOrder;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnQueryBankBalanceByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起查询银行余额错误回报，当执行ReqQueryBankAccountMoneyByFuture后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnQueryBankBalanceByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pReqQueryAccount：查询账户信息请求

struct CThostFtdcReqQueryAccountField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode: 204002期货发起查询银行余额

BankID：返回银行在期货公司的代码

BankBranchID：填0000

BrokerBranchID：一般为空

CustomerName：客户姓名

BankPassWord：返回银行的密码，都是“*”密码不显示，

Password：返回期货账户的密码，都是“*”密码不显示

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnQuoteAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报价操作错误回报, 当执行ReqQuoteAction后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnQuoteAction(CThostFtdcQuoteActionField *pQuoteAction, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pQuoteAction：报价操作

struct CThostFtdcQuoteActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///报价操作引用
    TThostFtdcOrderActionRefType    QuoteActionRef;
    ///报价引用
    TThostFtdcOrderRefType  QuoteRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///报价操作编号
    TThostFtdcOrderSysIDType    QuoteSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///操作日期
    TThostFtdcDateType  ActionDate;
    ///操作时间
    TThostFtdcTimeType  ActionTime;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///本地报价编号
    TThostFtdcOrderLocalIDType  QuoteLocalID;
    ///操作本地编号
    TThostFtdcOrderLocalIDType  ActionLocalID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///报单操作状态
    TThostFtdcOrderActionStatusType OrderActionStatus;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

OrderActionStatus：报价撤销的状态信息，此处返回的是错误信息

StatusMsg：报价单最后的状态

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnQuoteInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报价录入错误回报，当执行ReqQuoteInsert后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnErrRtnQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pInputQuote：输入的报价

struct CThostFtdcInputQuoteField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报价引用
    TThostFtdcOrderRefType  QuoteRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///卖价格
    TThostFtdcPriceType AskPrice;
    ///买价格
    TThostFtdcPriceType BidPrice;
    ///卖数量
    TThostFtdcVolumeType    AskVolume;
    ///买数量
    TThostFtdcVolumeType    BidVolume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///卖开平标志
    TThostFtdcOffsetFlagType    AskOffsetFlag;
    ///买开平标志
    TThostFtdcOffsetFlagType    BidOffsetFlag;
    ///卖投机套保标志
    TThostFtdcHedgeFlagType AskHedgeFlag;
    ///买投机套保标志
    TThostFtdcHedgeFlagType BidHedgeFlag;
    ///衍生卖报单引用
    TThostFtdcOrderRefType  AskOrderRef;
    ///衍生买报单引用
    TThostFtdcOrderRefType  BidOrderRef;
    ///应价编号
    TThostFtdcOrderSysIDType    ForQuoteSysID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
        ///被顶单编号
    TThostFtdcOrderSysIDType    ReplaceSysID;
};

ForQuoteSysID：应价编号对应市场上询价的编号

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnRepealBankToFutureByFutureManual

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

系统运行时期货端手工发起冲正银行转期货错误回报。发起冲正后系统的报错回报，由于发起冲正属于ctp内部操作，没有req接口

◇ 1.函数原型

virtual void OnErrRtnRepealBankToFutureByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pReqRepeal：冲正请求

struct CThostFtdcReqRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：203001 期货发起冲正银行转期货

BankID：银行在ctp对应的代码

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：返回银行的密码，都是“*”密码不显示

Password：返回期货账户的密码，都是“*”密码不显示

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnErrRtnRepealFutureToBankByFutureManual

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

系统运行时期货端手工发起冲正期货转银行错误回报, 发起冲正后系统的报错回报，由于发起冲正属于ctp内部操作，没有req接口

◇ 1.函数原型

virtual void OnErrRtnRepealFutureToBankByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo) {};

回到顶部

◇ 2.参数

pReqRepeal：冲正请求

struct CThostFtdcReqRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：203002 期货发起冲正期货转银行

BankID：银行在ctp对应的代码

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：返回银行的密码，都是“*”密码不显示

Password：返回期货账户的密码，都是“*”密码不显示

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnFrontConnected

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

当客户端与交易托管系统建立起通信连接时（还未登录前），该方法被调用。

本方法在完成初始化后调用，可以在其中完成用户登录任务。

◇ 1.函数原型

virtual void OnFrontConnected(){};

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnFrontDisconnected

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

当客户端与交易托管系统通信连接断开时，该方法被调用。当发生这个情况后，API会自动重新连接，客户端可不做处理。自动重连地址，可能是原来注册的地址，也可能是系统支持的其它可用的通信地址，它由程序自动选择。

注:重连之后需要重新认证、登录

◇ 1.函数原型

virtual void OnFrontDisconnected(int nReason){};

回到顶部

◇ 2.参数

nReason：连接断开原因，注意该返回值为10进制数，所以要转换成16进制再对照下列错误号。

0x1001 网络读失败

0x1002 网络写失败

0x2001 接收心跳超时

0x2002 发送心跳失败

0x2003 收到错误报文

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

为何有的时候密码错误或者终端认证失败会触发OnFrontDisconnected？

可能是因为CTP交易前置设置了ConnectFrq（每秒连接数）参数。设置该参数后，每秒连接数超过阈值就会拒绝API的连接，触发断线。


OnHeartBeatWarning

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

心跳超时警告。当长时间未收到报文时，该方法被调用。

◇ 1.函数原型

virtual void OnHeartBeatWarning(int nTimeLapse){};

回到顶部

◇ 2.参数

nTimeLapse：距离上次接收报文的时间

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspAuthenticate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

客户端认证响应,当执行ReqAuthenticate后，该方法被调用

◇ 1.函数原型

virtual void OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspAuthenticateField：客户端认证响应

struct CThostFtdcRspAuthenticateField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///用户端产品信息
    TThostFtdcProductInfoType UserProductInfo;
    ///App代码
    TThostFtdcAppIDType AppID;
    ///App类型
    TThostFtdcAppTypeType AppType;
};

UserProductInfo：客户端的产品信息，如软件开发商、版本号等。

例如：SFITTraderV100。

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspBatchOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

批量报单操作请求响应，当执行ReqBatchOrderAction后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnRspBatchOrderAction(CThostFtdcInputBatchOrderActionField *pInputBatchOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputBatchOrderAction：输入批量报单操作

struct CThostFtdcInputBatchOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///报单操作引用
    TThostFtdcOrderActionRefType    OrderActionRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve1;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspCombActionInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

申请组合录入请求响应，当执行ReqCombActionInsert后，该方法被调用

◇ 1.函数原型

virtual void OnRspCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputCombAction：输入的申请组合

struct CThostFtdcInputCombActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///组合引用
    TThostFtdcOrderRefType  CombActionRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///组合指令方向
    TThostFtdcCombDirectionType CombDirection;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspError

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

针对用户请求的出错通知。

◇ 1.函数原型

virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

查询时遇到报“OnRspError[90]: CTP：查询未就绪，请稍后重试”

可能此时查询核心还没有就绪，建议稍后再做一次查询操作。此类情况一般发生在用户登录后立即发起查询，建议登录后隔一秒再查询。

还有一种情况就是遇到前置流控了，报单流控、查询流控和会话数控制。


OnRspExecOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

执行宣告操作请求响应，当执行ReqExecOrderAction后，该方法被调用

◇ 1.函数原型

virtual void OnRspExecOrderAction(CThostFtdcInputExecOrderActionField *pInputExecOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputExecOrderAction：输入执行宣告操作

struct CThostFtdcInputExecOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///执行宣告操作引用
    TThostFtdcOrderActionRefType    ExecOrderActionRef;
    ///执行宣告引用
    TThostFtdcOrderRefType  ExecOrderRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///执行宣告操作编号
    TThostFtdcExecOrderSysIDType    ExecOrderSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

ActionFlag：撤单标志，目前只有删除（撤单功能），没有修改（改单功能）。

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspExecOrderInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

执行宣告录入请求响应，当执行ReqExecOrderInsert后，该方法被调用

◇ 1.函数原型

virtual void OnRspExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputExecOrder：输入的执行宣告

struct CThostFtdcInputExecOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///执行宣告引用
    TThostFtdcOrderRefType  ExecOrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///开平标志
    TThostFtdcOffsetFlagType    OffsetFlag;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///执行类型
    TThostFtdcActionTypeType    ActionType;
    ///保留头寸申请的持仓方向
    TThostFtdcPosiDirectionType PosiDirection;
    ///期权行权后是否保留期货头寸的标记,该字段已废弃
    TThostFtdcExecOrderPositionFlagType ReservePositionFlag;
    ///期权行权后生成的头寸是否自动平仓
    TThostFtdcExecOrderCloseFlagType    CloseFlag;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspForQuoteInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

询价录入请求响应，当执行ReqForQuoteInsert后有字段填写不对之类的CTP报错则通过此接口返回。

◇ 1.函数原型

virtual void OnRspForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputForQuote：输入的询价

struct CThostFtdcInputForQuoteField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///询价引用
    TThostFtdcOrderRefType  ForQuoteRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspFromBankToFutureByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起银行资金转期货应答，当执行ReqFromBankToFutureByFuture后有字段填写不对之类的CTP报错则通过此接口返回。

◇ 1.函数原型

virtual void OnRspFromBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pReqTransfer：转账请求

struct CThostFtdcReqTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：202001 期货发起银行资金转期货

BankID：返回银行在期货公司的代码

BankBranchID：填0000

BrokerBranchID：一般为空

CustomerName：客户姓名

BankPassWord：返回银行的密码，都是“*”密码不显示

Password：返回期货账户的密码，都是“*”密码不显示

TransferStatus: 转账交易的最后状态

TradeAmount：转账金额

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspFromFutureToBankByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起期货资金转银行应答，当执行ReqFromFutureToBankByFuture后有字段填写不对之类的CTP报错则通过此接口返回。

◇ 1.函数原型

virtual void OnRspFromFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pReqTransfer：转账请求

struct CThostFtdcReqTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：202002 期货发起期货资金转银行

BankID：返回银行在期货公司的代码

BankBranchID：填0000

BrokerBranchID：一般为空

CustomerName：客户姓名

BankPassWord：返回银行的密码，都是“*”密码不显示

Password：返回期货账户的密码，都是“*”密码不显示

TransferStatus：转账交易的最后状态

TradeAmount：转账金额

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspGenUserCaptcha

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

获取图形验证码请求的回复

◇ 1.函数原型

virtual void OnRspGenUserCaptcha(CThostFtdcRspGenUserCaptchaField *pRspGenUserCaptcha, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspGenUserCaptcha：生成的图片验证码信息

struct CThostFtdcRspGenUserCaptchaField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///图片信息长度
    TThostFtdcCaptchaInfoLenType CaptchaInfoLen;
    ///图片信息
    TThostFtdcCaptchaInfoType CaptchaInfo;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspGenUserText

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

获取短信验证码请求的回复

◇ 1.函数原型

virtual void OnRspGenUserText(CThostFtdcRspGenUserTextField *pRspGenUserText, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspGenUserText：短信验证码生成的回复息

struct CThostFtdcRspGenUserTextField
{
    ///短信验证码序号
    TThostFtdcUserTextSeqType UserTextSeq;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspOptionSelfCloseAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期权自对冲操作请求响应，当执行ReqOptionSelfCloseAction后，该方法被调用。

◇ 1.函数原型

virtual void OnRspOptionSelfCloseAction(CThostFtdcInputOptionSelfCloseActionField *pInputOptionSelfCloseAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputOptionSelfCloseAction：输入期权自对冲操作

struct CThostFtdcInputOptionSelfCloseActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///期权自对冲操作引用
    TThostFtdcOrderActionRefType    OptionSelfCloseActionRef;
    ///期权自对冲引用
    TThostFtdcOrderRefType  OptionSelfCloseRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///期权自对冲操作编号
    TThostFtdcOrderSysIDType    OptionSelfCloseSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

ActionFlag：只有删除标志，修改标志位不支持

InstallID：CTP内部使用

StatusMsg：报错信息

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspOptionSelfCloseInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期权自对冲录入请求响应，当执行ReqOptionSelfCloseInsert后，该方法被调用

◇ 1.函数原型

virtual void OnRspOptionSelfCloseInsert(CThostFtdcInputOptionSelfCloseField *pInputOptionSelfClose, CThostFtdcRspInfoField *pRspInfo, , bool bIsLast) {};

回到顶部

◇ 2.参数

pInputOptionSelfClose：输入的期权自对冲

struct CThostFtdcInputOptionSelfCloseField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///期权自对冲引用
    TThostFtdcOrderRefType  OptionSelfCloseRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///期权行权的头寸是否自对冲
    TThostFtdcOptSelfCloseFlagType  OptSelfCloseFlag;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报单操作请求响应，当执行ReqOrderAction后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputOrderAction：输入报单操作

struct CThostFtdcInputOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///报单操作引用
    TThostFtdcOrderActionRefType    OrderActionRef;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量变化
    TThostFtdcVolumeType    VolumeChange;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

ActionFlag：目前只有删除（撤单）的操作，修改（改单）的操作还没有，可以通过撤单之后重新报单实现。

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspOrderInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报单录入请求响应，当执行ReqOrderInsert后有字段填写不对之类的CTP报错则通过此接口返回

◇ 1.函数原型

virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputOrder：输入报单

struct CThostFtdcInputOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///报单价格条件
    TThostFtdcOrderPriceTypeType    OrderPriceType;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///组合开平标志
    TThostFtdcCombOffsetFlagType    CombOffsetFlag;
    ///组合投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量
    TThostFtdcVolumeType    VolumeTotalOriginal;
    ///有效期类型
    TThostFtdcTimeConditionType TimeCondition;
    ///GTD日期
    TThostFtdcDateType  GTDDate;
    ///成交量类型
    TThostFtdcVolumeConditionType   VolumeCondition;
    ///最小成交量
    TThostFtdcVolumeType    MinVolume;
    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;
    ///强平原因
    TThostFtdcForceCloseReasonType  ForceCloseReason;
    ///自动挂起标志
    TThostFtdcBoolType  IsAutoSuspend;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///用户强评标志
    TThostFtdcBoolType  UserForceClose;
    ///互换单标志
    TThostFtdcBoolType  IsSwapOrder;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspParkedOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

预埋撤单录入请求响应，当执行ReqParkedOrderAction后，该方法被调用

◇ 1.函数原型

virtual void OnRspParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pParkedOrderAction：输入预埋单操作

struct CThostFtdcParkedOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///报单操作引用
    TThostFtdcOrderActionRefType    OrderActionRef;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量变化
    TThostFtdcVolumeType    VolumeChange;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///预埋撤单单编号
    TThostFtdcParkedOrderActionIDType   ParkedOrderActionID;
    ///用户类型
    TThostFtdcUserTypeType  UserType;
    ///预埋撤单状态
    TThostFtdcParkedOrderStatusType Status;
    ///错误代码
    TThostFtdcErrorIDType   ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType  ErrorMsg;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

Status：预埋单的最后情况

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspParkedOrderInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

预埋单录入请求响应，当执行ReqParkedOrderInsert后，该方法被调用

◇ 1.函数原型

virtual void OnRspParkedOrderInsert(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pParkedOrder：预埋单

struct CThostFtdcParkedOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///报单价格条件
    TThostFtdcOrderPriceTypeType    OrderPriceType;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///组合开平标志
    TThostFtdcCombOffsetFlagType    CombOffsetFlag;
    ///组合投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量
    TThostFtdcVolumeType    VolumeTotalOriginal;
    ///有效期类型
    TThostFtdcTimeConditionType TimeCondition;
    ///GTD日期
    TThostFtdcDateType  GTDDate;
    ///成交量类型
    TThostFtdcVolumeConditionType   VolumeCondition;
    ///最小成交量
    TThostFtdcVolumeType    MinVolume;
    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;
    ///强平原因
    TThostFtdcForceCloseReasonType  ForceCloseReason;
    ///自动挂起标志
    TThostFtdcBoolType  IsAutoSuspend;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///用户强评标志
    TThostFtdcBoolType  UserForceClose;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///预埋报单编号
    TThostFtdcParkedOrderIDType ParkedOrderID;
    ///用户类型
    TThostFtdcUserTypeType  UserType;
    ///预埋单状态
    TThostFtdcParkedOrderStatusType Status;
    ///错误代码
    TThostFtdcErrorIDType   ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType  ErrorMsg;
    ///互换单标志
    TThostFtdcBoolType  IsSwapOrder;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

Status: 状态信息。

目前只返回status=1（已提交）的响应，当状态变为2的时候不会主动推送，而是要通过查询才能得知。

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryAccountregister

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询银期签约关系响应，当执行ReqQryAccountregister后，该方法被调用

◇ 1.函数原型

virtual void OnRspQryAccountregister(CThostFtdcAccountregisterField *pAccountregister, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pAccountregister：客户开销户信息表

struct CThostFtdcAccountregisterField
{
    ///交易日期
    TThostFtdcTradeDateType TradeDay;
    ///银行编码
    TThostFtdcBankIDType BankID;
    ///银行分支机构编码
    TThostFtdcBankBrchIDType BankBranchID;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///期货公司编码
    TThostFtdcBrokerIDType BrokerID;
    ///期货公司分支机构编码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///开销户类别
    TThostFtdcOpenOrDestroyType OpenOrDestroy;
    ///签约日期
    TThostFtdcTradeDateType RegDate;
    ///解约日期
    TThostFtdcTradeDateType OutDate;
    ///交易ID
    TThostFtdcTIDType TID;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

BankID：银行编码

BankBranchID：值为0000

BrokerBranchID：值为0000

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryBrokerTradingAlgos

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询经纪公司交易算法响应，当执行ReqQryBrokerTradingAlgos后，该方法被调用

◇ 1.函数原型

virtual void OnRspQryBrokerTradingAlgos(CThostFtdcBrokerTradingAlgosField *pBrokerTradingAlgos, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pBrokerTradingAlgos：经纪公司交易算法

struct CThostFtdcBrokerTradingAlgosField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///持仓处理算法编号
    TThostFtdcHandlePositionAlgoIDType  HandlePositionAlgoID;
    ///寻找保证金率算法编号
    TThostFtdcFindMarginRateAlgoIDType  FindMarginRateAlgoID;
    ///资金处理算法编号
    TThostFtdcHandleTradingAccountAlgoIDType    HandleTradingAccountAlgoID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

HandlePositionAlgoID：CTP内部使用

FindMarginRateAlgoID：CTP内部使用

HandleTradingAccountAlgoID：CTP内部使用

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryBrokerTradingParams

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询经纪公司交易参数响应，当执行ReqQryBrokerTradingParams后，该方法被调用

◇ 1.函数原型

virtual void OnRspQryBrokerTradingParams(CThostFtdcBrokerTradingParamsField *pBrokerTradingParams, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pBrokerTradingParams：经纪公司交易参数

struct CThostFtdcBrokerTradingParamsField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///保证金价格类型
    TThostFtdcMarginPriceTypeType MarginPriceType;
    ///盈亏算法
    TThostFtdcAlgorithmType Algorithm;
    ///可用是否包含平仓盈利
    TThostFtdcIncludeCloseProfitType AvailIncludeCloseProfit;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///期权权利金价格类型
    TThostFtdcOptionRoyaltyPriceTypeType OptionRoyaltyPriceType;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
};

Algorithm：根随期货公司柜台的设置。

OptionRoyaltyPriceType：该算法针对期权保证金算法，而非权利金算法；只限今开仓。

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryCFMMCTradingAccountKey

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

查询保证金监管系统经纪公司资金账户密钥响应，此接口已弃用。

◇ 1.函数原型

virtual void OnRspQryCFMMCTradingAccountKey(CThostFtdcCFMMCTradingAccountKeyField *pCFMMCTradingAccountKey, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pCFMMCTradingAccountKey：保证金监管系统经纪公司资金账户密钥

struct CThostFtdcCFMMCTradingAccountKeyField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///经纪公司统一编码
    TThostFtdcParticipantIDType ParticipantID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///密钥编号
    TThostFtdcSequenceNoType KeyID;
    ///动态密钥
    TThostFtdcCFMMCKeyType CurrentKey;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryCombAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询申请组合响应，当执行ReqQryCombAction后，该方法被调用

◇ 1.函数原型

virtual void OnRspQryCombAction(CThostFtdcCombActionField *pCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pCombAction：申请组合

struct CThostFtdcCombActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///组合引用
    TThostFtdcOrderRefType  CombActionRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///组合指令方向
    TThostFtdcCombDirectionType CombDirection;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///本地申请组合编号
    TThostFtdcOrderLocalIDType  ActionLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///组合状态
    TThostFtdcOrderActionStatusType ActionStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///组合编号
    TThostFtdcTradeIDType   ComTradeID;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

CombDirection：确定是组合还是拆分命令

ActionStatus：组合单最后的报单结果

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryCombInstrumentGuard

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询组合合约安全系数响应，当执行ReqQryCombInstrumentGuard后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryCombInstrumentGuard(CThostFtdcCombInstrumentGuardField *pCombInstrumentGuard, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pCombInstrumentGuard：组合合约安全系数

struct CThostFtdcCombInstrumentGuardField
{
///经纪公司代码
TThostFtdcBrokerIDType  BrokerID;
///保留的无效字段
TThostFtdcOldInstrumentIDType   reserve1;
///比率类型
TThostFtdcRatioType GuarantRatio;
///交易所代码
TThostFtdcExchangeIDType    ExchangeID;
///合约代码
TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryContractBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询签约银行响应，当执行ReqQryContractBank后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryContractBank(CThostFtdcContractBankField *pContractBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pContractBank：查询签约银行响应

struct CThostFtdcContractBankField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分中心代码
    TThostFtdcBankBrchIDType BankBrchID;
    ///银行名称
    TThostFtdcBankNameType BankName;
};

BankID：对应期货公司内部设置的银行编码

BankName：对应期货公司内部设置的银行名称

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryDepthMarketData

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询行情响应，当执行ReqQryDepthMarketData后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pDepthMarketData：深度行情

struct CThostFtdcDepthMarketDataField
{
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///最新价
    TThostFtdcPriceType LastPrice;
    ///上次结算价
    TThostFtdcPriceType PreSettlementPrice;
    ///昨收盘
    TThostFtdcPriceType PreClosePrice;
    ///昨持仓量
    TThostFtdcLargeVolumeType   PreOpenInterest;
    ///今开盘
    TThostFtdcPriceType OpenPrice;
    ///最高价
    TThostFtdcPriceType HighestPrice;
    ///最低价
    TThostFtdcPriceType LowestPrice;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///成交金额
    TThostFtdcMoneyType Turnover;
    ///持仓量
    TThostFtdcLargeVolumeType   OpenInterest;
    ///今收盘
    TThostFtdcPriceType ClosePrice;
    ///本次结算价
    TThostFtdcPriceType SettlementPrice;
    ///涨停板价
    TThostFtdcPriceType UpperLimitPrice;
    ///跌停板价
    TThostFtdcPriceType LowerLimitPrice;
    ///昨虚实度
    TThostFtdcRatioType PreDelta;
    ///今虚实度
    TThostFtdcRatioType CurrDelta;
    ///最后修改时间
    TThostFtdcTimeType  UpdateTime;
    ///最后修改毫秒
    TThostFtdcMillisecType  UpdateMillisec;
    ///申买价一
    TThostFtdcPriceType BidPrice1;
    ///申买量一
    TThostFtdcVolumeType    BidVolume1;
    ///申卖价一
    TThostFtdcPriceType AskPrice1;
    ///申卖量一
    TThostFtdcVolumeType    AskVolume1;
    ///申买价二
    TThostFtdcPriceType BidPrice2;
    ///申买量二
    TThostFtdcVolumeType    BidVolume2;
    ///申卖价二
    TThostFtdcPriceType AskPrice2;
    ///申卖量二
    TThostFtdcVolumeType    AskVolume2;
    ///申买价三
    TThostFtdcPriceType BidPrice3;
    ///申买量三
    TThostFtdcVolumeType    BidVolume3;
    ///申卖价三
    TThostFtdcPriceType AskPrice3;
    ///申卖量三
    TThostFtdcVolumeType    AskVolume3;
    ///申买价四
    TThostFtdcPriceType BidPrice4;
    ///申买量四
    TThostFtdcVolumeType    BidVolume4;
    ///申卖价四
    TThostFtdcPriceType AskPrice4;
    ///申卖量四
    TThostFtdcVolumeType    AskVolume4;
    ///申买价五
    TThostFtdcPriceType BidPrice5;
    ///申买量五
    TThostFtdcVolumeType    BidVolume5;
    ///申卖价五
    TThostFtdcPriceType AskPrice5;
    ///申卖量五
    TThostFtdcVolumeType    AskVolume5;
    ///当日均价
    TThostFtdcPriceType AveragePrice;
    ///业务日期
    TThostFtdcDateType  ActionDay;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryEWarrantOffset

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询仓单折抵信息响应，当执行ReqQryEWarrantOffset后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryEWarrantOffset(CThostFtdcEWarrantOffsetField *pEWarrantOffset, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pEWarrantOffset：仓单折抵信息

struct CThostFtdcEWarrantOffsetField
{
    ///交易日期
    TThostFtdcTradeDateType TradingDay;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryExchange

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易所响应，当执行ReqQryExchange后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryExchange(CThostFtdcExchangeField *pExchange, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pExchange：交易所

struct CThostFtdcExchangeField
{
    ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
    ///交易所名称
    TThostFtdcExchangeNameType ExchangeName;
    ///交易所属性
    TThostFtdcExchangePropertyType ExchangeProperty;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryExchangeMarginRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易所保证金率响应，当执行ReqQryExchangeMarginRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryExchangeMarginRate(CThostFtdcExchangeMarginRateField *pExchangeMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pExchangeMarginRate：交易所保证金率

struct CThostFtdcExchangeMarginRateField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///多头保证金率
    TThostFtdcRatioType LongMarginRatioByMoney;
    ///多头保证金费
    TThostFtdcMoneyType LongMarginRatioByVolume;
    ///空头保证金率
    TThostFtdcRatioType ShortMarginRatioByMoney;
    ///空头保证金费
    TThostFtdcMoneyType ShortMarginRatioByVolume;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryExchangeMarginRateAdjust

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易所调整保证金率响应，当执行ReqQryExchangeMarginRateAdjust后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryExchangeMarginRateAdjust(CThostFtdcExchangeMarginRateAdjustField *pExchangeMarginRateAdjust, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pExchangeMarginRateAdjust：交易所保证金率调整

struct CThostFtdcExchangeMarginRateAdjustField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///跟随交易所投资者多头保证金率
    TThostFtdcRatioType LongMarginRatioByMoney;
    ///跟随交易所投资者多头保证金费
    TThostFtdcMoneyType LongMarginRatioByVolume;
    ///跟随交易所投资者空头保证金率
    TThostFtdcRatioType ShortMarginRatioByMoney;
    ///跟随交易所投资者空头保证金费
    TThostFtdcMoneyType ShortMarginRatioByVolume;
    ///交易所多头保证金率
    TThostFtdcRatioType ExchLongMarginRatioByMoney;
    ///交易所多头保证金费
    TThostFtdcMoneyType ExchLongMarginRatioByVolume;
    ///交易所空头保证金率
    TThostFtdcRatioType ExchShortMarginRatioByMoney;
    ///交易所空头保证金费
    TThostFtdcMoneyType ExchShortMarginRatioByVolume;
    ///不跟随交易所投资者多头保证金率
    TThostFtdcRatioType NoLongMarginRatioByMoney;
    ///不跟随交易所投资者多头保证金费
    TThostFtdcMoneyType NoLongMarginRatioByVolume;
    ///不跟随交易所投资者空头保证金率
    TThostFtdcRatioType NoShortMarginRatioByMoney;
    ///不跟随交易所投资者空头保证金费
    TThostFtdcMoneyType NoShortMarginRatioByVolume;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryExchangeRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询汇率响应，当执行ReqQryExchangeRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryExchangeRate(CThostFtdcExchangeRateField *pExchangeRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pExchangeRate：汇率

struct CThostFtdcExchangeRateField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///源币种
    TThostFtdcCurrencyIDType FromCurrencyID;
    ///源币种单位数量
    TThostFtdcCurrencyUnitType FromCurrencyUnit;
    ///目标币种
    TThostFtdcCurrencyIDType ToCurrencyID;
    ///汇率
    TThostFtdcExchangeRateType ExchangeRate;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryExecOrder

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询执行宣告响应，当执行ReqQryExecOrder后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryExecOrder(CThostFtdcExecOrderField *pExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pExecOrder：执行宣告

struct CThostFtdcExecOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///执行宣告引用
    TThostFtdcOrderRefType  ExecOrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///开平标志
    TThostFtdcOffsetFlagType    OffsetFlag;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///执行类型
    TThostFtdcActionTypeType    ActionType;
    ///保留头寸申请的持仓方向
    TThostFtdcPosiDirectionType PosiDirection;
    ///期权行权后是否保留期货头寸的标记,该字段已废弃
    TThostFtdcExecOrderPositionFlagType ReservePositionFlag;
    ///期权行权后生成的头寸是否自动平仓
    TThostFtdcExecOrderCloseFlagType    CloseFlag;
    ///本地执行宣告编号
    TThostFtdcOrderLocalIDType  ExecOrderLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///执行宣告提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///执行宣告编号
    TThostFtdcExecOrderSysIDType    ExecOrderSysID;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///插入时间
    TThostFtdcTimeType  InsertTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///执行结果
    TThostFtdcExecResultType    ExecResult;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerExecOrderSeq;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

InstallID：CTP内部使用

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryForQuote

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询询价响应，当执行ReqQryForQuote后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryForQuote(CThostFtdcForQuoteField *pForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pForQuote：询价

struct CThostFtdcForQuoteField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///询价引用
    TThostFtdcOrderRefType  ForQuoteRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///本地询价编号
    TThostFtdcOrderLocalIDType  ForQuoteLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///插入时间
    TThostFtdcTimeType  InsertTime;
    ///询价状态
    TThostFtdcForQuoteStatusType    ForQuoteStatus;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司询价编号
    TThostFtdcSequenceNoType    BrokerForQutoSeq;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInstrument

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询合约响应，当执行ReqQryInstrument后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInstrument：合约

struct CThostFtdcInstrumentField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///合约名称
    TThostFtdcInstrumentNameType    InstrumentName;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve3;
    ///产品类型
    TThostFtdcProductClassType  ProductClass;
    ///交割年份
    TThostFtdcYearType  DeliveryYear;
    ///交割月
    TThostFtdcMonthType DeliveryMonth;
    ///市价单最大下单量
    TThostFtdcVolumeType    MaxMarketOrderVolume;
    ///市价单最小下单量
    TThostFtdcVolumeType    MinMarketOrderVolume;
    ///限价单最大下单量
    TThostFtdcVolumeType    MaxLimitOrderVolume;
    ///限价单最小下单量
    TThostFtdcVolumeType    MinLimitOrderVolume;
    ///合约数量乘数
    TThostFtdcVolumeMultipleType    VolumeMultiple;
    ///最小变动价位
    TThostFtdcPriceType PriceTick;
    ///创建日
    TThostFtdcDateType  CreateDate;
    ///上市日
    TThostFtdcDateType  OpenDate;
    ///到期日
    TThostFtdcDateType  ExpireDate;
    ///开始交割日
    TThostFtdcDateType  StartDelivDate;
    ///结束交割日
    TThostFtdcDateType  EndDelivDate;
    ///合约生命周期状态
    TThostFtdcInstLifePhaseType InstLifePhase;
    ///当前是否交易
    TThostFtdcBoolType  IsTrading;
    ///持仓类型
    TThostFtdcPositionTypeType  PositionType;
    ///持仓日期类型
    TThostFtdcPositionDateTypeType  PositionDateType;
    ///多头保证金率
    TThostFtdcRatioType LongMarginRatio;
    ///空头保证金率
    TThostFtdcRatioType ShortMarginRatio;
    ///是否使用大额单边保证金算法
    TThostFtdcMaxMarginSideAlgorithmType    MaxMarginSideAlgorithm;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve4;
    ///执行价
    TThostFtdcPriceType StrikePrice;
    ///期权类型
    TThostFtdcOptionsTypeType   OptionsType;
    ///合约基础商品乘数
    TThostFtdcUnderlyingMultipleType    UnderlyingMultiple;
    ///组合类型
    TThostFtdcCombinationTypeType   CombinationType;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///产品代码
    TThostFtdcInstrumentIDType  ProductID;
    ///基础商品代码
    TThostFtdcInstrumentIDType  UnderlyingInstrID;
};

VolumeMultiple：合约乘数（同交易所）

PriceTick：最小变动价位（同交易所）

IsTrading：是否活跃（同交易所）

DeliveryYear：交割年份（同交易所）

DeliveryMonth：交割月（同交易所）

OpenDate：上市日（同交易所）

CreateDate：创建日（同交易所）

ExpireDate：到期日（同交易所）

StartDeliveDate：开始交割日（同交易所）

EndDelivDate：结束交割日（同交易所）

同交易所表示这些字段每天更新自交易所，其余字段为柜台设置值。如果发现有些字段值有误，则以此来判断是交易所问题还是CTP柜台设置问题。

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInstrumentCommissionRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询合约手续费率响应，当执行ReqQryInstrumentCommissionRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInstrumentCommissionRate(CThostFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInstrumentCommissionRate：合约手续费率

struct CThostFtdcInstrumentCommissionRateField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资者范围
    TThostFtdcInvestorRangeType InvestorRange;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///开仓手续费率
    TThostFtdcRatioType OpenRatioByMoney;
    ///开仓手续费
    TThostFtdcRatioType OpenRatioByVolume;
    ///平仓手续费率
    TThostFtdcRatioType CloseRatioByMoney;
    ///平仓手续费
    TThostFtdcRatioType CloseRatioByVolume;
    ///平今手续费率
    TThostFtdcRatioType CloseTodayRatioByMoney;
    ///平今手续费
    TThostFtdcRatioType CloseTodayRatioByVolume;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///业务类型
    TThostFtdcBizTypeType   BizType;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInstrumentMarginRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询合约保证金率响应，当执行ReqQryInstrumentMarginRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInstrumentMarginRate(CThostFtdcInstrumentMarginRateField *pInstrumentMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

///pInstrumentMarginRate：合约保证金率

struct CThostFtdcInstrumentMarginRateField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资者范围
    TThostFtdcInvestorRangeType InvestorRange;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///多头保证金率
    TThostFtdcRatioType LongMarginRatioByMoney;
    ///多头保证金费
    TThostFtdcMoneyType LongMarginRatioByVolume;
    ///空头保证金率
    TThostFtdcRatioType ShortMarginRatioByMoney;
    ///空头保证金费
    TThostFtdcMoneyType ShortMarginRatioByVolume;
    ///是否相对交易所收取
    TThostFtdcBoolType  IsRelative;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInstrumentOrderCommRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询报单手续费响应，当执行ReqQryInstrumentOrderCommRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInstrumentOrderCommRate(CThostFtdcInstrumentOrderCommRateField *pInstrumentOrderCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInstrumentOrderCommRate：当前报单手续费的详细内容

struct CThostFtdcInstrumentOrderCommRateField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资者范围
    TThostFtdcInvestorRangeType InvestorRange;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///报单手续费
    TThostFtdcRatioType OrderCommByVolume;
    ///撤单手续费
    TThostFtdcRatioType OrderActionCommByVolume;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///报单手续费
    TThostFtdcRatioType OrderCommByTrade;
    ///撤单手续费
    TThostFtdcRatioType OrderActionCommByTrade;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInvestor

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者响应，当执行ReqQryInvestor后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInvestor(CThostFtdcInvestorField *pInvestor, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInvestor：投资者

struct CThostFtdcInvestorField
{
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者分组代码
    TThostFtdcInvestorIDType InvestorGroupID;
    ///投资者名称
    TThostFtdcPartyNameType InvestorName;
    ///证件类型
    TThostFtdcIdCardTypeType IdentifiedCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///是否活跃
    TThostFtdcBoolType IsActive;
    ///联系电话
    TThostFtdcTelephoneType Telephone;
    ///通讯地址
    TThostFtdcAddressType Address;
    ///开户日期
    TThostFtdcDateType OpenDate;
    ///手机
    TThostFtdcMobileType Mobile;
    ///手续费率模板代码
    TThostFtdcInvestorIDType CommModelID;
    ///保证金率模板代码
    TThostFtdcInvestorIDType MarginModelID;
};

CommModelID：CTP内部使用

MarginModelID：CTP内部使用

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInvestorPosition

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者持仓响应，当执行ReqQryInvestorPosition后，该方法被调用。

CTP 系统将持仓明细记录按合约，持仓方向，开仓日期（仅针对上期所，区分昨仓、今仓）进行汇总。

卖可平数量=多头仓-shortfrozen

买可平数量=空头仓-longfrozen

◇ 1.函数原型

virtual void OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInvestorPosition：投资者持仓

struct CThostFtdcInvestorPositionField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///持仓多空方向
    TThostFtdcPosiDirectionType PosiDirection;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///持仓日期
    TThostFtdcPositionDateType  PositionDate;
    ///上日持仓
    TThostFtdcVolumeType    YdPosition;
    ///今日持仓
    TThostFtdcVolumeType    Position;
    ///多头冻结
    TThostFtdcVolumeType    LongFrozen;
    ///空头冻结
    TThostFtdcVolumeType    ShortFrozen;
    ///开仓冻结金额
    TThostFtdcMoneyType LongFrozenAmount;
    ///开仓冻结金额
    TThostFtdcMoneyType ShortFrozenAmount;
    ///开仓量
    TThostFtdcVolumeType    OpenVolume;
    ///平仓量
    TThostFtdcVolumeType    CloseVolume;
    ///开仓金额
    TThostFtdcMoneyType OpenAmount;
    ///平仓金额
    TThostFtdcMoneyType CloseAmount;
    ///持仓成本
    TThostFtdcMoneyType PositionCost;
    ///上次占用的保证金
    TThostFtdcMoneyType PreMargin;
    ///占用的保证金
    TThostFtdcMoneyType UseMargin;
    ///冻结的保证金
    TThostFtdcMoneyType FrozenMargin;
    ///冻结的资金
    TThostFtdcMoneyType FrozenCash;
    ///冻结的手续费
    TThostFtdcMoneyType FrozenCommission;
    ///资金差额
    TThostFtdcMoneyType CashIn;
    ///手续费
    TThostFtdcMoneyType Commission;
    ///平仓盈亏
    TThostFtdcMoneyType CloseProfit;
    ///持仓盈亏
    TThostFtdcMoneyType PositionProfit;
    ///上次结算价
    TThostFtdcPriceType PreSettlementPrice;
    ///本次结算价
    TThostFtdcPriceType SettlementPrice;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///开仓成本
    TThostFtdcMoneyType OpenCost;
    ///交易所保证金
    TThostFtdcMoneyType ExchangeMargin;
    ///组合成交形成的持仓
    TThostFtdcVolumeType    CombPosition;
    ///组合多头冻结
    TThostFtdcVolumeType    CombLongFrozen;
    ///组合空头冻结
    TThostFtdcVolumeType    CombShortFrozen;
    ///逐日盯市平仓盈亏
    TThostFtdcMoneyType CloseProfitByDate;
    ///逐笔对冲平仓盈亏
    TThostFtdcMoneyType CloseProfitByTrade;
    ///今日持仓
    TThostFtdcVolumeType    TodayPosition;
    ///保证金率
    TThostFtdcRatioType MarginRateByMoney;
    ///保证金率(按手数)
    TThostFtdcRatioType MarginRateByVolume;
    ///执行冻结
    TThostFtdcVolumeType    StrikeFrozen;
    ///执行冻结金额
    TThostFtdcMoneyType StrikeFrozenAmount;
    ///放弃执行冻结
    TThostFtdcVolumeType    AbandonFrozen;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///执行冻结的昨仓
    TThostFtdcVolumeType    YdStrikeFrozen;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///大商所持仓成本差值，只有大商所使用
    TThostFtdcMoneyType PositionCostOffset;
    ///tas持仓手数
    TThostFtdcVolumeType    TasPosition;
    ///tas持仓成本
    TThostFtdcMoneyType TasPositionCost;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

PositionProfit：期权没有持仓盈亏，为0

Position：表示当前持仓数量

TodayPosition：表示今新开仓

YdPosition：表示昨日收盘时持仓数量（≠ 当前的昨仓数量，静态，日间不随着开平仓而变化）

当前的昨仓数量 = ∑Position -∑TodayPosition

YdStrikeFrozen：该字段是给个股期权用的，期货期权里一直保持为0

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

投资者发现自己账号里面莫名其妙多了一条“PRT SR711&SR711C6000"的持仓，是什么原因？

这个合约是郑商所跨式，宽跨式期权组合合约。此合约不需要投资者使用特别的指令构建，只要客户持有可以构成备兑期权组合的持仓。在每日结算的时候，郑商所会将符合条件的期权和期货持仓自动确认为备兑期权套利持仓，包括备兑看涨期权套利和备兑看跌期权套利，并给予保证金优惠。

对于此期权合约，投资者需要分腿平仓，不需要管这个是否为备兑组合。


OnRspQryInvestorPositionCombineDetail

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者持仓明细响应，当执行ReqQryInvestorPositionCombineDetail后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInvestorPositionCombineDetail(CThostFtdcInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInvestorPositionCombineDetail：投资者组合持仓明细

struct CThostFtdcInvestorPositionCombineDetailField
{
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///开仓日期
    TThostFtdcDateType  OpenDate;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///组合编号
    TThostFtdcTradeIDType   ComTradeID;
    ///撮合编号
    TThostFtdcTradeIDType   TradeID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///买卖
    TThostFtdcDirectionType Direction;
    ///持仓量
    TThostFtdcVolumeType    TotalAmt;
    ///投资者保证金
    TThostFtdcMoneyType Margin;
    ///交易所保证金
    TThostFtdcMoneyType ExchMargin;
    ///保证金率
    TThostFtdcRatioType MarginRateByMoney;
    ///保证金率(按手数)
    TThostFtdcRatioType MarginRateByVolume;
    ///单腿编号
    TThostFtdcLegIDType LegID;
    ///单腿乘数
    TThostFtdcLegMultipleType   LegMultiple;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve2;
    ///成交组号
    TThostFtdcTradeGroupIDType  TradeGroupID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///组合持仓合约编码
    TThostFtdcInstrumentIDType  CombInstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

组合持仓明细应该如何去判断谁和谁是一对？

用CombTradeID判断。注意以下几点：

1) CombTradeID是CTP定义的。盘中新开仓的时候CombTradeID比如是115，在盘后结算完成后为了防止重复会重新打上编号，编号里带上交易日，如20170720000003；

2) CombTradeID并不一定是成对出现。比如下单五手组合合约：左腿全部成交，右腿是分笔成交的1，1，3的方式成交的。所以总的收到的成交回报就会有4条。这四条的combtradeid，在盘中是一致的。


OnRspQryInvestorPositionDetail

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者持仓明细响应，当执行ReqQryInvestorPositionDetail后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInvestorPositionDetail(CThostFtdcInvestorPositionDetailField *pInvestorPositionDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInvestorPositionDetail：投资者持仓明细

struct CThostFtdcInvestorPositionDetailField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///买卖
    TThostFtdcDirectionType Direction;
    ///开仓日期
    TThostFtdcDateType  OpenDate;
    ///成交编号
    TThostFtdcTradeIDType   TradeID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///开仓价
    TThostFtdcPriceType OpenPrice;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///成交类型
    TThostFtdcTradeTypeType TradeType;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve2;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///逐日盯市平仓盈亏
    TThostFtdcMoneyType CloseProfitByDate;
    ///逐笔对冲平仓盈亏
    TThostFtdcMoneyType CloseProfitByTrade;
    ///逐日盯市持仓盈亏
    TThostFtdcMoneyType PositionProfitByDate;
    ///逐笔对冲持仓盈亏
    TThostFtdcMoneyType PositionProfitByTrade;
    ///投资者保证金
    TThostFtdcMoneyType Margin;
    ///交易所保证金
    TThostFtdcMoneyType ExchMargin;
    ///保证金率
    TThostFtdcRatioType MarginRateByMoney;
    ///保证金率(按手数)
    TThostFtdcRatioType MarginRateByVolume;
    ///昨结算价
    TThostFtdcPriceType LastSettlementPrice;
    ///结算价
    TThostFtdcPriceType SettlementPrice;
    ///平仓量
    TThostFtdcVolumeType    CloseVolume;
    ///平仓金额
    TThostFtdcMoneyType CloseAmount;
    ///先开先平剩余数量（DCE）
    TThostFtdcVolumeType    TimeFirstVolume;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///特殊持仓标志
    TThostFtdcSpecPosiTypeType  SpecPosiType;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///组合合约代码
    TThostFtdcInstrumentIDType  CombInstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInvestorProductGroupMargin

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者品种/跨品种保证金响应，当执行ReqQryInvestorProductGroupMargin后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInvestorProductGroupMargin(CThostFtdcInvestorProductGroupMarginField *pInvestorProductGroupMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInvestorProductGroupMargin：投资者品种/跨品种保证金

struct CThostFtdcInvestorProductGroupMarginField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///冻结的保证金
    TThostFtdcMoneyType FrozenMargin;
    ///多头冻结的保证金
    TThostFtdcMoneyType LongFrozenMargin;
    ///空头冻结的保证金
    TThostFtdcMoneyType ShortFrozenMargin;
    ///占用的保证金
    TThostFtdcMoneyType UseMargin;
    ///多头保证金
    TThostFtdcMoneyType LongUseMargin;
    ///空头保证金
    TThostFtdcMoneyType ShortUseMargin;
    ///交易所保证金
    TThostFtdcMoneyType ExchMargin;
    ///交易所多头保证金
    TThostFtdcMoneyType LongExchMargin;
    ///交易所空头保证金
    TThostFtdcMoneyType ShortExchMargin;
    ///平仓盈亏
    TThostFtdcMoneyType CloseProfit;
    ///冻结的手续费
    TThostFtdcMoneyType FrozenCommission;
    ///手续费
    TThostFtdcMoneyType Commission;
    ///冻结的资金
    TThostFtdcMoneyType FrozenCash;
    ///资金差额
    TThostFtdcMoneyType CashIn;
    ///持仓盈亏
    TThostFtdcMoneyType PositionProfit;
    ///折抵总金额
    TThostFtdcMoneyType OffsetAmount;
    ///多头折抵总金额
    TThostFtdcMoneyType LongOffsetAmount;
    ///空头折抵总金额
    TThostFtdcMoneyType ShortOffsetAmount;
    ///交易所折抵总金额
    TThostFtdcMoneyType ExchOffsetAmount;
    ///交易所多头折抵总金额
    TThostFtdcMoneyType LongExchOffsetAmount;
    ///交易所空头折抵总金额
    TThostFtdcMoneyType ShortExchOffsetAmount;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///品种/跨品种标示
    TThostFtdcInstrumentIDType  ProductGroupID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryInvestUnit

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资单元响应，当执行ReqQryInvestUnit后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryInvestUnit(CThostFtdcInvestUnitField *pInvestUnit, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInvestUnit：投资单元

struct CThostFtdcInvestUnitField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
    ///投资者单元名称
    TThostFtdcPartyNameType InvestorUnitName;
    ///投资者分组代码
    TThostFtdcInvestorIDType InvestorGroupID;
    ///手续费率模板代码
    TThostFtdcInvestorIDType CommModelID;
    ///保证金率模板代码
    TThostFtdcInvestorIDType MarginModelID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryMMInstrumentCommissionRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询做市商合约手续费率响应，当执行ReqQryMMInstrumentCommissionRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryMMInstrumentCommissionRate(CThostFtdcMMInstrumentCommissionRateField *pMMInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pMMInstrumentCommissionRate：做市商合约手续费率

struct CThostFtdcMMInstrumentCommissionRateField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资者范围
    TThostFtdcInvestorRangeType InvestorRange;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///开仓手续费率
    TThostFtdcRatioType OpenRatioByMoney;
    ///开仓手续费
    TThostFtdcRatioType OpenRatioByVolume;
    ///平仓手续费率
    TThostFtdcRatioType CloseRatioByMoney;
    ///平仓手续费
    TThostFtdcRatioType CloseRatioByVolume;
    ///平今手续费率
    TThostFtdcRatioType CloseTodayRatioByMoney;
    ///平今手续费
    TThostFtdcRatioType CloseTodayRatioByVolume;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryMMOptionInstrCommRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询做市商期权合约手续费响应，当执行ReqQryMMOptionInstrCommRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryMMOptionInstrCommRate(CThostFtdcMMOptionInstrCommRateField *pMMOptionInstrCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pMMOptionInstrCommRate：当前做市商期权合约手续费的详细内容

struct CThostFtdcMMOptionInstrCommRateField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资者范围
    TThostFtdcInvestorRangeType InvestorRange;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///开仓手续费率
    TThostFtdcRatioType OpenRatioByMoney;
    ///开仓手续费
    TThostFtdcRatioType OpenRatioByVolume;
    ///平仓手续费率
    TThostFtdcRatioType CloseRatioByMoney;
    ///平仓手续费
    TThostFtdcRatioType CloseRatioByVolume;
    ///平今手续费率
    TThostFtdcRatioType CloseTodayRatioByMoney;
    ///平今手续费
    TThostFtdcRatioType CloseTodayRatioByVolume;
    ///执行手续费率
    TThostFtdcRatioType StrikeRatioByMoney;
    ///执行手续费
    TThostFtdcRatioType StrikeRatioByVolume;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryNotice

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询客户通知响应，当执行ReqQryNotice后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryNotice(CThostFtdcNoticeField *pNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pNotice：客户通知

struct CThostFtdcNoticeField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///消息正文
    TThostFtdcContentType Content;
    ///经纪公司通知内容序列号
    TThostFtdcSequenceLabelType SequenceLabel;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryOptionInstrCommRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询期权合约手续费响应，当执行ReqQryOptionInstrCommRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryOptionInstrCommRate(CThostFtdcOptionInstrCommRateField *pOptionInstrCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pOptionInstrCommRate：当前期权合约手续费的详细内容

struct CThostFtdcOptionInstrCommRateField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资者范围
    TThostFtdcInvestorRangeType InvestorRange;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///开仓手续费率
    TThostFtdcRatioType OpenRatioByMoney;
    ///开仓手续费
    TThostFtdcRatioType OpenRatioByVolume;
    ///平仓手续费率
    TThostFtdcRatioType CloseRatioByMoney;
    ///平仓手续费
    TThostFtdcRatioType CloseRatioByVolume;
    ///平今手续费率
    TThostFtdcRatioType CloseTodayRatioByMoney;
    ///平今手续费
    TThostFtdcRatioType CloseTodayRatioByVolume;
    ///执行手续费率
    TThostFtdcRatioType StrikeRatioByMoney;
    ///执行手续费
    TThostFtdcRatioType StrikeRatioByVolume;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryOptionInstrTradeCost

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询期权交易成本响应，当执行ReqQryOptionInstrTradeCost后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryOptionInstrTradeCost(CThostFtdcOptionInstrTradeCostField *pOptionInstrTradeCost, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pOptionInstrTradeCost：期权交易成本

struct CThostFtdcOptionInstrTradeCostField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///期权合约保证金不变部分
    TThostFtdcMoneyType FixedMargin;
    ///期权合约最小保证金
    TThostFtdcMoneyType MiniMargin;
    ///期权合约权利金
    TThostFtdcMoneyType Royalty;
    ///交易所期权合约保证金不变部分
    TThostFtdcMoneyType ExchFixedMargin;
    ///交易所期权合约最小保证金
    TThostFtdcMoneyType ExchMiniMargin;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryOptionSelfClose

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询期权自对冲响应，当执行ReqQryOptionSelfClose后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryOptionSelfClose(CThostFtdcOptionSelfCloseField *pOptionSelfClose, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pOptionSelfClose：期权自对冲

struct CThostFtdcOptionSelfCloseField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///期权自对冲引用
    TThostFtdcOrderRefType  OptionSelfCloseRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///期权行权的头寸是否自对冲
    TThostFtdcOptSelfCloseFlagType  OptSelfCloseFlag;
    ///本地期权自对冲编号
    TThostFtdcOrderLocalIDType  OptionSelfCloseLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期权自对冲提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///期权自对冲编号
    TThostFtdcOrderSysIDType    OptionSelfCloseSysID;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///插入时间
    TThostFtdcTimeType  InsertTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///自对冲结果
    TThostFtdcExecResultType    ExecResult;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerOptionSelfCloseSeq;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

InstallID：CTP内部使用

OrderSubmitStatus：报单的状态

ExecResult：自对冲最后的结果

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryOrder

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询报单响应，当执行ReqQryOrder后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryOrder(CThostFtdcOrderField *pOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pOrder：报单

struct CThostFtdcOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///报单价格条件
    TThostFtdcOrderPriceTypeType    OrderPriceType;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///组合开平标志
    TThostFtdcCombOffsetFlagType    CombOffsetFlag;
    ///组合投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量
    TThostFtdcVolumeType    VolumeTotalOriginal;
    ///有效期类型
    TThostFtdcTimeConditionType TimeCondition;
    ///GTD日期
    TThostFtdcDateType  GTDDate;
    ///成交量类型
    TThostFtdcVolumeConditionType   VolumeCondition;
    ///最小成交量
    TThostFtdcVolumeType    MinVolume;
    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;
    ///强平原因
    TThostFtdcForceCloseReasonType  ForceCloseReason;
    ///自动挂起标志
    TThostFtdcBoolType  IsAutoSuspend;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///本地报单编号
    TThostFtdcOrderLocalIDType  OrderLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///报单提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///报单来源
    TThostFtdcOrderSourceType   OrderSource;
    ///报单状态
    TThostFtdcOrderStatusType   OrderStatus;
    ///报单类型
    TThostFtdcOrderTypeType OrderType;
    ///今成交数量
    TThostFtdcVolumeType    VolumeTraded;
    ///剩余数量
    TThostFtdcVolumeType    VolumeTotal;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///委托时间
    TThostFtdcTimeType  InsertTime;
    ///激活时间
    TThostFtdcTimeType  ActiveTime;
    ///挂起时间
    TThostFtdcTimeType  SuspendTime;
    ///最后修改时间
    TThostFtdcTimeType  UpdateTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///最后修改交易所交易员代码
    TThostFtdcTraderIDType  ActiveTraderID;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///用户强评标志
    TThostFtdcBoolType  UserForceClose;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerOrderSeq;
    ///相关报单
    TThostFtdcOrderSysIDType    RelativeOrderSysID;
    ///郑商所成交数量
    TThostFtdcVolumeType    ZCETotalTradedVolume;
    ///互换单标志
    TThostFtdcBoolType  IsSwapOrder;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

ActiveTraderID：是从交易所收回来，原值填写，CTP核心不处理该字段。在撤单回报中，由报单席位号修改为撤单席位号，以方便操作员在撤单回报中看出撤单是从哪个席位发起的

BusinessUnit：是ctp内部使用字段，建议投资者不要使用

TraderID：是席位号

ActiveUserID：是ctp内部使用字段，建议投资者不要使用

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryParkedOrder

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询预埋单响应，当执行ReqQryParkedOrder后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryParkedOrder(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pParkedOrder：预埋单

struct CThostFtdcParkedOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///报单价格条件
    TThostFtdcOrderPriceTypeType    OrderPriceType;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///组合开平标志
    TThostFtdcCombOffsetFlagType    CombOffsetFlag;
    ///组合投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量
    TThostFtdcVolumeType    VolumeTotalOriginal;
    ///有效期类型
    TThostFtdcTimeConditionType TimeCondition;
    ///GTD日期
    TThostFtdcDateType  GTDDate;
    ///成交量类型
    TThostFtdcVolumeConditionType   VolumeCondition;
    ///最小成交量
    TThostFtdcVolumeType    MinVolume;
    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;
    ///强平原因
    TThostFtdcForceCloseReasonType  ForceCloseReason;
    ///自动挂起标志
    TThostFtdcBoolType  IsAutoSuspend;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///用户强评标志
    TThostFtdcBoolType  UserForceClose;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///预埋报单编号
    TThostFtdcParkedOrderIDType ParkedOrderID;
    ///用户类型
    TThostFtdcUserTypeType  UserType;
    ///预埋单状态
    TThostFtdcParkedOrderStatusType Status;
    ///错误代码
    TThostFtdcErrorIDType   ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType  ErrorMsg;
    ///互换单标志
    TThostFtdcBoolType  IsSwapOrder;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

Status：预埋单的报单状态

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryParkedOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询预埋撤单响应，当执行ReqQryParkedOrderAction后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pParkedOrderAction：输入预埋单操作

struct CThostFtdcParkedOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///报单操作引用
    TThostFtdcOrderActionRefType    OrderActionRef;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量变化
    TThostFtdcVolumeType    VolumeChange;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///预埋撤单单编号
    TThostFtdcParkedOrderActionIDType   ParkedOrderActionID;
    ///用户类型
    TThostFtdcUserTypeType  UserType;
    ///预埋撤单状态
    TThostFtdcParkedOrderStatusType Status;
    ///错误代码
    TThostFtdcErrorIDType   ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType  ErrorMsg;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

Status：报入预埋撤单的报单状态

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryProduct

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询产品响应，当执行ReqQryProduct后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryProduct(CThostFtdcProductField *pProduct, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pProduct：产品

struct CThostFtdcProductField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///产品名称
    TThostFtdcProductNameType   ProductName;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///产品类型
    TThostFtdcProductClassType  ProductClass;
    ///合约数量乘数
    TThostFtdcVolumeMultipleType    VolumeMultiple;
    ///最小变动价位
    TThostFtdcPriceType PriceTick;
    ///市价单最大下单量
    TThostFtdcVolumeType    MaxMarketOrderVolume;
    ///市价单最小下单量
    TThostFtdcVolumeType    MinMarketOrderVolume;
    ///限价单最大下单量
    TThostFtdcVolumeType    MaxLimitOrderVolume;
    ///限价单最小下单量
    TThostFtdcVolumeType    MinLimitOrderVolume;
    ///持仓类型
    TThostFtdcPositionTypeType  PositionType;
    ///持仓日期类型
    TThostFtdcPositionDateTypeType  PositionDateType;
    ///平仓处理类型
    TThostFtdcCloseDealTypeType CloseDealType;
    ///交易币种类型
    TThostFtdcCurrencyIDType    TradeCurrencyID;
    ///质押资金可用范围
    TThostFtdcMortgageFundUseRangeType  MortgageFundUseRange;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve2;
    ///合约基础商品乘数
    TThostFtdcUnderlyingMultipleType    UnderlyingMultiple;
    ///产品代码
    TThostFtdcInstrumentIDType  ProductID;
    ///交易所产品代码
    TThostFtdcInstrumentIDType  ExchangeProductID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryProductExchRate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询产品报价汇率，当执行ReqQryProductExchRate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryProductExchRate(CThostFtdcProductExchRateField *pProductExchRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pProductExchRate：产品报价汇率

struct CThostFtdcProductExchRateField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报价币种类型
    TThostFtdcCurrencyIDType    QuoteCurrencyID;
    ///汇率
    TThostFtdcExchangeRateType  ExchangeRate;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///产品代码
    TThostFtdcInstrumentIDType  ProductID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryProductGroup

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询产品组，当执行ReqQryProductGroup后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryProductGroup(CThostFtdcProductGroupField *pProductGroup, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pProductGroup：投资者品种/跨品种保证金产品组

struct CThostFtdcProductGroupField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve2;
    ///产品代码
    TThostFtdcInstrumentIDType  ProductID;
    ///产品组代码
    TThostFtdcInstrumentIDType  ProductGroupID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryQuote

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询报价响应，当执行ReqQryQuote后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryQuote(CThostFtdcQuoteField *pQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pQuote：报价

struct CThostFtdcQuoteField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报价引用
    TThostFtdcOrderRefType  QuoteRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///卖价格
    TThostFtdcPriceType AskPrice;
    ///买价格
    TThostFtdcPriceType BidPrice;
    ///卖数量
    TThostFtdcVolumeType    AskVolume;
    ///买数量
    TThostFtdcVolumeType    BidVolume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///卖开平标志
    TThostFtdcOffsetFlagType    AskOffsetFlag;
    ///买开平标志
    TThostFtdcOffsetFlagType    BidOffsetFlag;
    ///卖投机套保标志
    TThostFtdcHedgeFlagType AskHedgeFlag;
    ///买投机套保标志
    TThostFtdcHedgeFlagType BidHedgeFlag;
    ///本地报价编号
    TThostFtdcOrderLocalIDType  QuoteLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///报价提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///报价提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///报价编号
    TThostFtdcOrderSysIDType    QuoteSysID;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///插入时间
    TThostFtdcTimeType  InsertTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///报价状态
    TThostFtdcOrderStatusType   QuoteStatus;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///卖方报单编号
    TThostFtdcOrderSysIDType    AskOrderSysID;
    ///买方报单编号
    TThostFtdcOrderSysIDType    BidOrderSysID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报价编号
    TThostFtdcSequenceNoType    BrokerQuoteSeq;
    ///衍生卖报单引用
    TThostFtdcOrderRefType  AskOrderRef;
    ///衍生买报单引用
    TThostFtdcOrderRefType  BidOrderRef;
    ///应价编号
    TThostFtdcOrderSysIDType    ForQuoteSysID;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
    ///被顶单编号
    TThostFtdcOrderSysIDType    ReplaceSysID;
};

InstallID：CTP内部使用

OrderSubmitStatus：报价的最后状态

QuoteStatus：报价是否有报出，或者收到交易所的回报

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQrySecAgentACIDMap

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询二级代理操作员银期权限响应，当执行ReqQrySecAgentACIDMap后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQrySecAgentACIDMap(CThostFtdcSecAgentACIDMapField *pSecAgentACIDMap, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSecAgentACIDMap：二级代理操作员银期权限

struct CThostFtdcSecAgentACIDMapField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///资金账户
    TThostFtdcAccountIDType AccountID;
    ///币种
    TThostFtdcCurrencyIDType CurrencyID;
    ///境外中介机构资金帐号
    TThostFtdcAccountIDType BrokerSecAgentID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQrySecAgentCheckMode

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询二级代理商资金校验模式响应

◇ 1.函数原型

virtual void OnRspQrySecAgentCheckMode(CThostFtdcSecAgentCheckModeField *pSecAgentCheckMode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSecAgentCheckMode：二级代理商资金校验模式

struct CThostFtdcSecAgentCheckModeField
{
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///币种
    TThostFtdcCurrencyIDType CurrencyID;
    ///境外中介机构资金帐号
    TThostFtdcAccountIDType BrokerSecAgentID;
    ///是否需要校验自己的资金账户
    TThostFtdcBoolType CheckSelfAccount;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQrySecAgentTradeInfo

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询二级代理商信息响应

◇ 1.函数原型

virtual void OnRspQrySecAgentTradeInfo(CThostFtdcSecAgentTradeInfoField *pSecAgentTradeInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSecAgentTradeInfo：二级代理商信息

struct CThostFtdcSecAgentTradeInfoField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///境外中介机构资金帐号
    TThostFtdcAccountIDType BrokerSecAgentID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///二级代理商姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQrySecAgentTradingAccount

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询资金账户响应

◇ 1.函数原型

virtual void OnRspQrySecAgentTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTradingAccount：资金账户

struct CThostFtdcTradingAccountField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///上次质押金额
    TThostFtdcMoneyType PreMortgage;
    ///上次信用额度
    TThostFtdcMoneyType PreCredit;
    ///上次存款额
    TThostFtdcMoneyType PreDeposit;
    ///上次结算准备金
    TThostFtdcMoneyType PreBalance;
    ///上次占用的保证金
    TThostFtdcMoneyType PreMargin;
    ///利息基数
    TThostFtdcMoneyType InterestBase;
    ///利息收入
    TThostFtdcMoneyType Interest;
    ///入金金额
    TThostFtdcMoneyType Deposit;
    ///出金金额
    TThostFtdcMoneyType Withdraw;
    ///冻结的保证金
    TThostFtdcMoneyType FrozenMargin;
    ///冻结的资金
    TThostFtdcMoneyType FrozenCash;
    ///冻结的手续费
    TThostFtdcMoneyType FrozenCommission;
    ///当前保证金总额
    TThostFtdcMoneyType CurrMargin;
    ///资金差额
    TThostFtdcMoneyType CashIn;
    ///手续费
    TThostFtdcMoneyType Commission;
    ///平仓盈亏
    TThostFtdcMoneyType CloseProfit;
    ///持仓盈亏
    TThostFtdcMoneyType PositionProfit;
    ///期货结算准备金
    TThostFtdcMoneyType Balance;
    ///可用资金
    TThostFtdcMoneyType Available;
    ///可取资金
    TThostFtdcMoneyType WithdrawQuota;
    ///基本准备金
    TThostFtdcMoneyType Reserve;
    ///交易日
    TThostFtdcDateType TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType SettlementID;
    ///信用额度
    TThostFtdcMoneyType Credit;
    ///质押金额
    TThostFtdcMoneyType Mortgage;
    ///交易所保证金
    TThostFtdcMoneyType ExchangeMargin;
    ///投资者交割保证金
    TThostFtdcMoneyType DeliveryMargin;
    ///交易所交割保证金
    TThostFtdcMoneyType ExchangeDeliveryMargin;
    ///保底期货结算准备金
    TThostFtdcMoneyType ReserveBalance;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///上次货币质入金额
    TThostFtdcMoneyType PreFundMortgageIn;
    ///上次货币质出金额
    TThostFtdcMoneyType PreFundMortgageOut;
    ///货币质入金额
    TThostFtdcMoneyType FundMortgageIn;
    ///货币质出金额
    TThostFtdcMoneyType FundMortgageOut;
    ///货币质押余额
    TThostFtdcMoneyType FundMortgageAvailable;
    ///可质押货币金额
    TThostFtdcMoneyType MortgageableFund;
    ///特殊产品占用保证金
    TThostFtdcMoneyType SpecProductMargin;
    ///特殊产品冻结保证金
    TThostFtdcMoneyType SpecProductFrozenMargin;
    ///特殊产品手续费
    TThostFtdcMoneyType SpecProductCommission;
    ///特殊产品冻结手续费
    TThostFtdcMoneyType SpecProductFrozenCommission;
    ///特殊产品持仓盈亏
    TThostFtdcMoneyType SpecProductPositionProfit;
    ///特殊产品平仓盈亏
    TThostFtdcMoneyType SpecProductCloseProfit;
    ///根据持仓盈亏算法计算的特殊产品持仓盈亏
    TThostFtdcMoneyType SpecProductPositionProfitByAlg;
    ///特殊产品交易所保证金
    TThostFtdcMoneyType SpecProductExchangeMargin;
    ///业务类型
    TThostFtdcBizTypeType BizType;
    ///延时换汇冻结金额
    TThostFtdcMoneyType FrozenSwap;
    ///剩余换汇额度
    TThostFtdcMoneyType RemainSwap;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQrySettlementInfo

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者结算结果响应，当执行ReqQrySettlementInfo后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQrySettlementInfo(CThostFtdcSettlementInfoField *pSettlementInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSettlementInfo：投资者结算结果

struct CThostFtdcSettlementInfoField
{
    ///交易日
    TThostFtdcDateType TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType SettlementID;
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///序号
    TThostFtdcSequenceNoType SequenceNo;
    ///消息正文
    TThostFtdcContentType Content;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQrySettlementInfoConfirm

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询结算信息确认响应，当执行ReqQrySettlementInfoConfirm后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQrySettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSettlementInfoConfirm：投资者结算结果确认信息

struct CThostFtdcSettlementInfoConfirmField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///确认日期
    TThostFtdcDateType ConfirmDate;
    ///确认时间
    TThostFtdcTimeType ConfirmTime;
    ///结算编号
    TThostFtdcSettlementIDType SettlementID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryTrade

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询成交响应，当执行ReqQryTrade后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryTrade(CThostFtdcTradeField *pTrade, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTrade：成交

struct CThostFtdcTradeField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///成交编号
    TThostFtdcTradeIDType   TradeID;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///交易角色
    TThostFtdcTradingRoleType   TradingRole;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///开平标志
    TThostFtdcOffsetFlagType    OffsetFlag;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///价格
    TThostFtdcPriceType Price;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///成交时期
    TThostFtdcDateType  TradeDate;
    ///成交时间
    TThostFtdcTimeType  TradeTime;
    ///成交类型
    TThostFtdcTradeTypeType TradeType;
    ///成交价来源
    TThostFtdcPriceSourceType   PriceSource;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///本地报单编号
    TThostFtdcOrderLocalIDType  OrderLocalID;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerOrderSeq;
    ///成交来源
    TThostFtdcTradeSourceType   TradeSource;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryTradingAccount

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询资金账户响应，当执行ReqQryTradingAccount后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTradingAccount：资金账户

struct CThostFtdcTradingAccountField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///上次质押金额
    TThostFtdcMoneyType PreMortgage;
    ///上次信用额度
    TThostFtdcMoneyType PreCredit;
    ///上次存款额
    TThostFtdcMoneyType PreDeposit;
    ///上次结算准备金
    TThostFtdcMoneyType PreBalance;
    ///上次占用的保证金
    TThostFtdcMoneyType PreMargin;
    ///利息基数
    TThostFtdcMoneyType InterestBase;
    ///利息收入
    TThostFtdcMoneyType Interest;
    ///入金金额
    TThostFtdcMoneyType Deposit;
    ///出金金额
    TThostFtdcMoneyType Withdraw;
    ///冻结的保证金
    TThostFtdcMoneyType FrozenMargin;
    ///冻结的资金
    TThostFtdcMoneyType FrozenCash;
    ///冻结的手续费
    TThostFtdcMoneyType FrozenCommission;
    ///当前保证金总额
    TThostFtdcMoneyType CurrMargin;
    ///资金差额
    TThostFtdcMoneyType CashIn;
    ///手续费
    TThostFtdcMoneyType Commission;
    ///平仓盈亏
    TThostFtdcMoneyType CloseProfit;
    ///持仓盈亏
    TThostFtdcMoneyType PositionProfit;
    ///期货结算准备金
    TThostFtdcMoneyType Balance;
    ///可用资金
    TThostFtdcMoneyType Available;
    ///可取资金
    TThostFtdcMoneyType WithdrawQuota;
    ///基本准备金
    TThostFtdcMoneyType Reserve;
    ///交易日
    TThostFtdcDateType TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType SettlementID;
    ///信用额度
    TThostFtdcMoneyType Credit;
    ///质押金额
    TThostFtdcMoneyType Mortgage;
    ///交易所保证金
    TThostFtdcMoneyType ExchangeMargin;
    ///投资者交割保证金
    TThostFtdcMoneyType DeliveryMargin;
    ///交易所交割保证金
    TThostFtdcMoneyType ExchangeDeliveryMargin;
    ///保底期货结算准备金
    TThostFtdcMoneyType ReserveBalance;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///上次货币质入金额
    TThostFtdcMoneyType PreFundMortgageIn;
    ///上次货币质出金额
    TThostFtdcMoneyType PreFundMortgageOut;
    ///货币质入金额
    TThostFtdcMoneyType FundMortgageIn;
    ///货币质出金额
    TThostFtdcMoneyType FundMortgageOut;
    ///货币质押余额
    TThostFtdcMoneyType FundMortgageAvailable;
    ///可质押货币金额
    TThostFtdcMoneyType MortgageableFund;
    ///特殊产品占用保证金
    TThostFtdcMoneyType SpecProductMargin;
    ///特殊产品冻结保证金
    TThostFtdcMoneyType SpecProductFrozenMargin;
    ///特殊产品手续费
    TThostFtdcMoneyType SpecProductCommission;
    ///特殊产品冻结手续费
    TThostFtdcMoneyType SpecProductFrozenCommission;
    ///特殊产品持仓盈亏
    TThostFtdcMoneyType SpecProductPositionProfit;
    ///特殊产品平仓盈亏
    TThostFtdcMoneyType SpecProductCloseProfit;
    ///根据持仓盈亏算法计算的特殊产品持仓盈亏
    TThostFtdcMoneyType SpecProductPositionProfitByAlg;
    ///特殊产品交易所保证金
    TThostFtdcMoneyType SpecProductExchangeMargin;
    ///业务类型
    TThostFtdcBizTypeType BizType;
    ///延时换汇冻结金额
    TThostFtdcMoneyType FrozenSwap;
    ///剩余换汇额度
    TThostFtdcMoneyType RemainSwap;
};

PreCredit：上日资金冻结，为负值

Credit：当日资金冻结，为负值。交易系统初始化后会将PreCredit赋值给Credit，因此Credit包含了上日资金冻结和当日资金冻结。

PreBalance：昨权益

Balance：权益

FrozenCash：冻结权利金

CashIn：权利金

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

期货品种的套保仓、投机仓、套利仓的单向大边是单独计算，还是一起计算的？对于能源中心INE目前的交易细则是不是也有单向大边的规则？

单向大边目前只有上期所和中金所有此项业务。对于上期所，同品种的买卖双边分别计算，取买卖双边中保证金金额较大的一边单向实时收取。

对于中金所，套利、套保和投机的交易编码不同，计算的时候首先是区分交易编码的，每个交易编码下同品种的买卖双边再分别计算取大边。

对于能源中心，sc目前是单向大边的规则。

关于冻结手续费计算的问题：比如我有大商所的持仓 i1709 10手昨仓，这个时候我平仓2手挂单了，请问此时的平仓手续费率是采用平昨手续费还是平今手续费，还是这两个费率取较大的？

短线开平仓合约的平仓（不管平仓还是平今）在成交的时候是按平今手续费收取的，在冻结的时候是按平仓手续费收取。


OnRspQryTradingCode

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易编码响应，当执行ReqQryTradingCode后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryTradingCode(CThostFtdcTradingCodeField *pTradingCode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTradingCode：交易编码

struct CThostFtdcTradingCodeField
{
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
    ///客户代码
    TThostFtdcClientIDType ClientID;
    ///是否活跃
    TThostFtdcBoolType IsActive;
    ///交易编码类型
    TThostFtdcClientIDTypeType ClientIDType;
    ///营业部编号
    TThostFtdcBranchIDType BranchID;
    ///业务类型
    TThostFtdcBizTypeType BizType;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryTradingNotice

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易通知响应，当执行ReqQryTradingNotice后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTradingNotice：用户事件通知

struct CThostFtdcTradingNoticeField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者范围
    TThostFtdcInvestorRangeType InvestorRange;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///序列系列号
    TThostFtdcSequenceSeriesType SequenceSeries;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///发送时间
    TThostFtdcTimeType SendTime;
    ///序列号
    TThostFtdcSequenceNoType SequenceNo;
    ///消息正文
    TThostFtdcContentType FieldContent;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryTransferBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询转帐银行响应，当执行ReqQryTransferBank后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryTransferBank(CThostFtdcTransferBankField *pTransferBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTransferBank：转帐银行

struct CThostFtdcTransferBankField
{
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分中心代码
    TThostFtdcBankBrchIDType BankBrchID;
    ///银行名称
    TThostFtdcBankNameType BankName;
    ///是否活跃
    TThostFtdcBoolType IsActive;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryTransferSerial

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询转帐流水响应，当执行ReqQryTransferSerial后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryTransferSerial(CThostFtdcTransferSerialField *pTransferSerial, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTransferSerial：银期转账交易流水表

struct CThostFtdcTransferSerialField
{
    ///平台流水号
    TThostFtdcPlateSerialType PlateSerial;
    ///交易发起方日期
    TThostFtdcTradeDateType TradeDate;
    ///交易日期
    TThostFtdcDateType TradingDay;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///交易代码
    TThostFtdcTradeCodeType TradeCode;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///银行编码
    TThostFtdcBankIDType BankID;
    ///银行分支机构编码
    TThostFtdcBankBrchIDType BankBranchID;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///期货公司编码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///期货公司帐号类型
    TThostFtdcFutureAccTypeType FutureAccType;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///交易金额
    TThostFtdcTradeAmountType TradeAmount;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///有效标志
    TThostFtdcAvailabilityFlagType AvailabilityFlag;
    ///操作员
    TThostFtdcOperatorCodeType OperatorCode;
    ///新银行帐号
    TThostFtdcBankAccountType BankNewAccount;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

BankBranchID：填0000

BrokerBranchID：填0000

AvailabilityFlag：是否转账成功，不成功则CTP会自动发起冲正

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQueryBankAccountMoneyByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起查询银行余额应答，当执行ReqQueryBankAccountMoneyByFuture后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQueryBankAccountMoneyByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pReqQueryAccount：查询账户信息请求

struct CThostFtdcReqQueryAccountField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode: 204002 期货发起查询银行余额

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示“*”

Password：为密文，显示“*”

InstallID：CTP内部使用

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQueryCFMMCTradingAccountToken

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询监控中心用户令牌，当执行ReqQueryCFMMCTradingAccountToken后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQueryCFMMCTradingAccountToken(CThostFtdcQueryCFMMCTradingAccountTokenField *pQueryCFMMCTradingAccountToken, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pQueryCFMMCTradingAccountToken：查询监控中心用户令牌

struct CThostFtdcQueryCFMMCTradingAccountTokenField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQuoteAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报价操作请求响应，当执行ReqQuoteAction后有字段填写不对之类的CTP报错则通过此接口返回。

◇ 1.函数原型

virtual void OnRspQuoteAction(CThostFtdcInputQuoteActionField *pInputQuoteAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputQuoteAction：输入报价操作

struct CThostFtdcInputQuoteActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///报价操作引用
    TThostFtdcOrderActionRefType    QuoteActionRef;
    ///报价引用
    TThostFtdcOrderRefType  QuoteRef;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///报价操作编号
    TThostFtdcOrderSysIDType    QuoteSysID;
    ///操作标志
    TThostFtdcActionFlagType    ActionFlag;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQuoteInsert

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报价录入请求响应，当执行ReqQuoteInsert后有字段填写不对之类的CTP报错则通过此接口返回。

◇ 1.函数原型

virtual void OnRspQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInputQuote：输入的报价

struct CThostFtdcInputQuoteField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报价引用
    TThostFtdcOrderRefType  QuoteRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///卖价格
    TThostFtdcPriceType AskPrice;
    ///买价格
    TThostFtdcPriceType BidPrice;
    ///卖数量
    TThostFtdcVolumeType    AskVolume;
    ///买数量
    TThostFtdcVolumeType    BidVolume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///卖开平标志
    TThostFtdcOffsetFlagType    AskOffsetFlag;
    ///买开平标志
    TThostFtdcOffsetFlagType    BidOffsetFlag;
    ///卖投机套保标志
    TThostFtdcHedgeFlagType AskHedgeFlag;
    ///买投机套保标志
    TThostFtdcHedgeFlagType BidHedgeFlag;
    ///衍生卖报单引用
    TThostFtdcOrderRefType  AskOrderRef;
    ///衍生买报单引用
    TThostFtdcOrderRefType  BidOrderRef;
    ///应价编号
    TThostFtdcOrderSysIDType    ForQuoteSysID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///交易编码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve2;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
        ///被顶单编号
    TThostFtdcOrderSysIDType    ReplaceSysID;
};

ForQuoteSysID：指定响应的是市场上哪一笔询价

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspRemoveParkedOrder

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

删除预埋单响应，当执行ReqRemoveParkedOrder后，该方法被调用。

◇ 1.函数原型

virtual void OnRspRemoveParkedOrder(CThostFtdcRemoveParkedOrderField *pRemoveParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRemoveParkedOrder：删除预埋单

struct CThostFtdcRemoveParkedOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///预埋报单编号
    TThostFtdcParkedOrderIDType ParkedOrderID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspRemoveParkedOrderAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

删除预埋撤单响应，当执行ReqRemoveParkedOrderAction后，该方法被调用。

◇ 1.函数原型

virtual void OnRspRemoveParkedOrderAction(CThostFtdcRemoveParkedOrderActionField *pRemoveParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRemoveParkedOrderAction：删除预埋撤单

struct CThostFtdcRemoveParkedOrderActionField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///预埋撤单编号
    TThostFtdcParkedOrderActionIDType ParkedOrderActionID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspSettlementInfoConfirm

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

投资者结算结果确认响应，当执行ReqSettlementInfoConfirm后，该方法被调用。

◇ 1.函数原型

virtual void OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pSettlementInfoConfirm：投资者结算结果确认信息

struct CThostFtdcSettlementInfoConfirmField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///确认日期
    TThostFtdcDateType ConfirmDate;
    ///确认时间
    TThostFtdcTimeType ConfirmTime;
    ///结算编号
    TThostFtdcSettlementIDType SettlementID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspTradingAccountPasswordUpdate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

资金账户口令更新请求响应，当执行ReqTradingAccountPasswordUpdate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pTradingAccountPasswordUpdate：资金账户口令变更域

struct CThostFtdcTradingAccountPasswordUpdateField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///原来的口令
    TThostFtdcPasswordType OldPassword;
    ///新的口令
    TThostFtdcPasswordType NewPassword;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUserAuthMethod

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

查询用户当前支持的认证模式的回复

◇ 1.函数原型

virtual void OnRspUserAuthMethod(CThostFtdcRspUserAuthMethodField *pRspUserAuthMethod, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspUserAuthMethod：用户发出获取安全安全登陆方法回复

struct CThostFtdcRspUserAuthMethodField
{
    ///当前可以用的认证模式
    TThostFtdcCurrentAuthMethodType UsableAuthMethod;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUserLogin

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

登录请求响应，当执行ReqUserLogin后，该方法被调用。

◇ 1.函数原型

virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRspUserLogin：用户登录应答

struct CThostFtdcRspUserLoginField
{
    ///交易日
    TThostFtdcDateType TradingDay;
    ///登录成功时间
    TThostFtdcTimeType LoginTime;
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///交易系统名称
    TThostFtdcSystemNameType SystemName;
    ///前置编号
    TThostFtdcFrontIDType FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///最大报单引用
    TThostFtdcOrderRefType MaxOrderRef;
    ///上期所时间
    TThostFtdcTimeType SHFETime;
    ///大商所时间
    TThostFtdcTimeType DCETime;
    ///郑商所时间
    TThostFtdcTimeType CZCETime;
    ///中金所时间
    TThostFtdcTimeType FFEXTime;
    ///能源中心时间
    TThostFtdcTimeType INETime;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUserLogout

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

登出请求响应，当执行ReqUserLogout后，该方法被调用。

◇ 1.函数原型

virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pUserLogout:用户登出请求

struct CThostFtdcUserLogoutField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
};

pRspInfo:响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspUserPasswordUpdate

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

用户口令更新请求响应，当执行ReqUserPasswordUpdate后，该方法被调用。

◇ 1.函数原型

virtual void OnRspUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pUserPasswordUpdate：用户口令变更

struct CThostFtdcUserPasswordUpdateField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///用户代码
    TThostFtdcUserIDType UserID;
    ///原来的口令
    TThostFtdcPasswordType OldPassword;
    ///新的口令
    TThostFtdcPasswordType NewPassword;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnBulletin

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

交易所公告通知，无Req属于公有流回报

◇ 1.函数原型

virtual void OnRtnBulletin(CThostFtdcBulletinField *pBulletin) {};

回到顶部

◇ 2.参数

pBulletin：交易所公告

struct CThostFtdcBulletinField
{
    ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
    ///交易日
    TThostFtdcDateType TradingDay;
    ///公告编号
    TThostFtdcBulletinIDType BulletinID;
    ///序列号
    TThostFtdcSequenceNoType SequenceNo;
    ///公告类型
    TThostFtdcNewsTypeType NewsType;
    ///紧急程度
    TThostFtdcNewsUrgencyType NewsUrgency;
    ///发送时间
    TThostFtdcTimeType SendTime;
    ///消息摘要
    TThostFtdcAbstractType Abstract;
    ///消息来源
    TThostFtdcComeFromType ComeFrom;
    ///消息正文
    TThostFtdcContentType Content;
    ///WEB地址
    TThostFtdcURLLinkType URLLink;
    ///市场代码
    TThostFtdcMarketIDType MarketID;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnCancelAccountByBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

银行发起银期销户通知，无Req私有流回报

◇ 1.函数原型

virtual void OnRtnCancelAccountByBank(CThostFtdcCancelAccountField *pCancelAccount) {};

回到顶部

◇ 2.参数

pCancelAccount：银期销户信息

struct CThostFtdcCancelAccountField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///性别
    TThostFtdcGenderType Gender;
    ///国家代码
    TThostFtdcCountryCodeType CountryCode;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///地址
    TThostFtdcAddressType Address;
    ///邮编
    TThostFtdcZipCodeType ZipCode;
    ///电话号码
    TThostFtdcTelephoneType Telephone;
    ///手机
    TThostFtdcMobilePhoneType MobilePhone;
    ///传真
    TThostFtdcFaxType Fax;
    ///电子邮件
    TThostFtdcEMailType EMail;
    ///资金账户状态
    TThostFtdcMoneyAccountStatusType MoneyAccountStatus;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///汇钞标志
    TThostFtdcCashExchangeCodeType CashExchangeCode;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///交易ID
    TThostFtdcTIDType TID;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示“*”

Password：为密文，显示“*”

InstallID：CTP内部使用

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnCFMMCTradingAccountToken

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

保证金监控中心用户令牌，当执行ReqQueryCFMMCTradingAccountToken后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnCFMMCTradingAccountToken(CThostFtdcCFMMCTradingAccountTokenField *pCFMMCTradingAccountToken) {};

回到顶部

◇ 2.参数

pCFMMCTradingAccountToken：监控中心用户令牌

struct CThostFtdcCFMMCTradingAccountTokenField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///经纪公司统一编码
    TThostFtdcParticipantIDType ParticipantID;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///密钥编号
    TThostFtdcSequenceNoType KeyID;
    ///动态令牌
    TThostFtdcCFMMCTokenType Token;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnChangeAccountByBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

银行发起变更银行账号通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnChangeAccountByBank(CThostFtdcChangeAccountField *pChangeAccount) {};

回到顶部

◇ 2.参数

pChangeAccount：银期变更银行账号信息

struct CThostFtdcChangeAccountField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///性别
    TThostFtdcGenderType Gender;
    ///国家代码
    TThostFtdcCountryCodeType CountryCode;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///地址
    TThostFtdcAddressType Address;
    ///邮编
    TThostFtdcZipCodeType ZipCode;
    ///电话号码
    TThostFtdcTelephoneType Telephone;
    ///手机
    TThostFtdcMobilePhoneType MobilePhone;
    ///传真
    TThostFtdcFaxType Fax;
    ///电子邮件
    TThostFtdcEMailType EMail;
    ///资金账户状态
    TThostFtdcMoneyAccountStatusType MoneyAccountStatus;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///新银行帐号
    TThostFtdcBankAccountType NewBankAccount;
    ///新银行密码
    TThostFtdcPasswordType NewBankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易ID
    TThostFtdcTIDType TID;
    ///摘要
    TThostFtdcDigestType Digest;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：101003 银行发起银行账号变更

BankBranchID：填0000

BrokerBranchID：一般为空

InstallID：CTP内部使用

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnCombAction

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

申请组合通知，当执行ReqCombActionInsert后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnCombAction(CThostFtdcCombActionField *pCombAction) {};

回到顶部

◇ 2.参数

pCombAction：申请组合

struct CThostFtdcCombActionField
{
///经纪公司代码
TThostFtdcBrokerIDType  BrokerID;
///投资者代码
TThostFtdcInvestorIDType    InvestorID;
///保留的无效字段
TThostFtdcOldInstrumentIDType   reserve1;
///组合引用
TThostFtdcOrderRefType  CombActionRef;
///用户代码
TThostFtdcUserIDType    UserID;
///买卖方向
TThostFtdcDirectionType Direction;
///数量
TThostFtdcVolumeType    Volume;
///组合指令方向
TThostFtdcCombDirectionType CombDirection;
///投机套保标志
TThostFtdcHedgeFlagType HedgeFlag;
///本地申请组合编号
TThostFtdcOrderLocalIDType  ActionLocalID;
///交易所代码
TThostFtdcExchangeIDType    ExchangeID;
///会员代码
TThostFtdcParticipantIDType ParticipantID;
///客户代码
TThostFtdcClientIDType  ClientID;
///保留的无效字段
TThostFtdcOldExchangeInstIDType reserve2;
///交易所交易员代码
TThostFtdcTraderIDType  TraderID;
///安装编号
TThostFtdcInstallIDType InstallID;
///组合状态
TThostFtdcOrderActionStatusType ActionStatus;
///报单提示序号
TThostFtdcSequenceNoType    NotifySequence;
///交易日
TThostFtdcDateType  TradingDay;
///结算编号
TThostFtdcSettlementIDType  SettlementID;
///序号
TThostFtdcSequenceNoType    SequenceNo;
///前置编号
TThostFtdcFrontIDType   FrontID;
///会话编号
TThostFtdcSessionIDType SessionID;
///用户端产品信息
TThostFtdcProductInfoType   UserProductInfo;
///状态信息
TThostFtdcErrorMsgType  StatusMsg;
///保留的无效字段
TThostFtdcOldIPAddressType  reserve3;
///Mac地址
TThostFtdcMacAddressType    MacAddress;
///组合编号
TThostFtdcTradeIDType   ComTradeID;
///营业部编号
TThostFtdcBranchIDType  BranchID;
///投资单元代码
TThostFtdcInvestUnitIDType  InvestUnitID;
///合约代码
TThostFtdcInstrumentIDType  InstrumentID;
///合约在交易所的代码
TThostFtdcExchangeInstIDType    ExchangeInstID;
///IP地址
TThostFtdcIPAddressType IPAddress;
};

InstallID：CTP内部使用

ActionStatus：报入组合后的报单状态

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnErrorConditionalOrder

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

提示条件单校验错误。

◇ 1.函数原型

virtual void OnRtnErrorConditionalOrder(CThostFtdcErrorConditionalOrderField *pErrorConditionalOrder) {};

回到顶部

◇ 2.参数

pErrorConditionalOrder：查询错误报单操作

struct CThostFtdcErrorConditionalOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///报单价格条件
    TThostFtdcOrderPriceTypeType    OrderPriceType;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///组合开平标志
    TThostFtdcCombOffsetFlagType    CombOffsetFlag;
    ///组合投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量
    TThostFtdcVolumeType    VolumeTotalOriginal;
    ///有效期类型
    TThostFtdcTimeConditionType TimeCondition;
    ///GTD日期
    TThostFtdcDateType  GTDDate;
    ///成交量类型
    TThostFtdcVolumeConditionType   VolumeCondition;
    ///最小成交量
    TThostFtdcVolumeType    MinVolume;
    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;
    ///强平原因
    TThostFtdcForceCloseReasonType  ForceCloseReason;
    ///自动挂起标志
    TThostFtdcBoolType  IsAutoSuspend;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///本地报单编号
    TThostFtdcOrderLocalIDType  OrderLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///报单提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///报单来源
    TThostFtdcOrderSourceType   OrderSource;
    ///报单状态
    TThostFtdcOrderStatusType   OrderStatus;
    ///报单类型
    TThostFtdcOrderTypeType OrderType;
    ///今成交数量
    TThostFtdcVolumeType    VolumeTraded;
    ///剩余数量
    TThostFtdcVolumeType    VolumeTotal;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///委托时间
    TThostFtdcTimeType  InsertTime;
    ///激活时间
    TThostFtdcTimeType  ActiveTime;
    ///挂起时间
    TThostFtdcTimeType  SuspendTime;
    ///最后修改时间
    TThostFtdcTimeType  UpdateTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///最后修改交易所交易员代码
    TThostFtdcTraderIDType  ActiveTraderID;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///用户强评标志
    TThostFtdcBoolType  UserForceClose;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerOrderSeq;
    ///相关报单
    TThostFtdcOrderSysIDType    RelativeOrderSysID;
    ///郑商所成交数量
    TThostFtdcVolumeType    ZCETotalTradedVolume;
    ///错误代码
    TThostFtdcErrorIDType   ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType  ErrorMsg;
    ///互换单标志
    TThostFtdcBoolType  IsSwapOrder;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

StopPrice：条件单触发价格

ForceCloseReason：填0“非强平”

InstallID：CTP内部使用

OrderSubmitStatus：报单提交状态，查看是否通过ctp校验

OrderStatus：报单最终状态

ActiveTraderID：是从交易所收回来，原值填写，CTP核心不处理该字段。在撤单回报中，由报单席位号修改为撤单席位号，以方便操作员在撤单回报中看出撤单是从哪个席位发起的

BusinessUnit：是ctp内部使用字段，建议投资者不要使用

TraderID：是席位号

ActiveUserID：是ctp内部使用字段，建议投资者不要使用

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnExecOrder

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

执行宣告通知，当执行ReqExecOrderInsert后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnExecOrder(CThostFtdcExecOrderField *pExecOrder) {};

回到顶部

◇ 2.参数

pExecOrder：执行宣告

struct CThostFtdcExecOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///执行宣告引用
    TThostFtdcOrderRefType  ExecOrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///开平标志
    TThostFtdcOffsetFlagType    OffsetFlag;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///执行类型
    TThostFtdcActionTypeType    ActionType;
    ///保留头寸申请的持仓方向
    TThostFtdcPosiDirectionType PosiDirection;
    ///期权行权后是否保留期货头寸的标记,该字段已废弃
    TThostFtdcExecOrderPositionFlagType ReservePositionFlag;
    ///期权行权后生成的头寸是否自动平仓
    TThostFtdcExecOrderCloseFlagType    CloseFlag;
    ///本地执行宣告编号
    TThostFtdcOrderLocalIDType  ExecOrderLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///执行宣告提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///执行宣告编号
    TThostFtdcExecOrderSysIDType    ExecOrderSysID;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///插入时间
    TThostFtdcTimeType  InsertTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///执行结果
    TThostFtdcExecResultType    ExecResult;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerExecOrderSeq;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

OrderSubmitStatus：执行宣告的状态，查看是否已经报到交易所

ExecResult：执行宣告的最后状态，看是否已经执行

StatusMsg：报单状态，明文

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnForQuoteRsp

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

询价通知，此接口暂时不用，目前使用的是行情的OnRtnForQuoteRsp。

◇ 1.函数原型

virtual void OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp) {};

回到顶部

◇ 2.参数

pForQuoteRsp：发给做市商的询价请求

struct CThostFtdcForQuoteRspField
{
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///询价编号
    TThostFtdcOrderSysIDType    ForQuoteSysID;
    ///询价时间
    TThostFtdcTimeType  ForQuoteTime;
    ///业务日期
    TThostFtdcDateType  ActionDay;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

ForQuoteSysID：交易所给的一个询价编号，以此定位一笔询价。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnFromBankToFutureByBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

银行发起银行资金转期货通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnFromBankToFutureByBank(CThostFtdcRspTransferField *pRspTransfer) {};

回到顶部

◇ 2.参数

pRspTransfer：银行发起银行资金转期货响应

struct CThostFtdcRspTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：102001 银行发起银行资金转期货

BankBranchID：填0000

BrokerBranchID：填空

InstallID：CTP内部使用

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnFromBankToFutureByFuture

1.说明

2.函数原型

3.参数

4.返回

5.FAQ

回到顶部

< 前页 回目录 后页 >

◇ 1.说明

期货发起银行资金转期货通知，当执行ReqFromBankToFutureByFuture后并且报出后，收到返回则调用此接口，私有流回报。

回到顶部

◇ 2.函数原型

virtual void OnRtnFromBankToFutureByFuture(CThostFtdcRspTransferField *pRspTransfer) {};

回到顶部

◇ 3.参数

pRspTransfer：银行发起银行资金转期货响应

struct CThostFtdcRspTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：202001 期货发起银行资金转期货

BankBranchID：填0000

BrokerBranchID：一般为空

TransferStatus：转账的最后状态，“正常”说明转账成功，“被冲正”说明转账失败

回到顶部

◇ 4.返回

无

回到顶部

◇ 5.FAQ

无


OnRtnFromFutureToBankByBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

银行发起期货资金转银行通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnFromFutureToBankByBank(CThostFtdcRspTransferField *pRspTransfer) {};

回到顶部

◇ 2.参数

pRspTransfer：银行发起银行资金转期货响应

struct CThostFtdcRspTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：102002 银行发起期货资金转银行

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：查看转账成功与否的标志，“正常”则为转账成功，“被冲正”则为转账失败

ErrorMsg：返回的错误信息，成功则显示“交易成功”

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnFromFutureToBankByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起期货资金转银行通知，当执行ReqFromFutureToBankByFuture后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnFromFutureToBankByFuture(CThostFtdcRspTransferField *pRspTransfer) {};

回到顶部

◇ 2.参数

pRspTransfer：银行发起银行资金转期货响应

struct CThostFtdcRspTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：202002 期货发起期货资金转银行

BankBranchID：填0000

BrokerBranchID：填空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：转账状态

ErrorMsg：报错信息，若转账成功则显示为“交易成功”。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnInstrumentStatus

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

合约交易状态通知，主动推送。公有流回报。

各交易所的合约状态变化详见合约状态变化说明。

◇ 1.函数原型

virtual void OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField *pInstrumentStatus) {};

回到顶部

◇ 2.参数

pInstrumentStatus：合约状态

struct CThostFtdcInstrumentStatusField
{
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve1;
    ///结算组代码
    TThostFtdcSettlementGroupIDType SettlementGroupID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve2;
    ///合约交易状态
    TThostFtdcInstrumentStatusType  InstrumentStatus;
    ///交易阶段编号
    TThostFtdcTradingSegmentSNType  TradingSegmentSN;
    ///进入本状态时间
    TThostFtdcTimeType  EnterTime;
    ///进入本状态原因
    TThostFtdcInstStatusEnterReasonType EnterReason;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
};

EnterTime：只有郑商所的时间戳是CTP的本地时间，其他交易所的是交易所时间

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

如何获取期权合约的状态？

合约状态推送到产品级别，期权也是推送到产品级别。


OnRtnOpenAccountByBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

银行发起银期开户通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnOpenAccountByBank(CThostFtdcOpenAccountField *pOpenAccount) {};

回到顶部

◇ 2.参数

pOpenAccount：银期开户信息

struct CThostFtdcOpenAccountField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///性别
    TThostFtdcGenderType Gender;
    ///国家代码
    TThostFtdcCountryCodeType CountryCode;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///地址
    TThostFtdcAddressType Address;
    ///邮编
    TThostFtdcZipCodeType ZipCode;
    ///电话号码
    TThostFtdcTelephoneType Telephone;
    ///手机
    TThostFtdcMobilePhoneType MobilePhone;
    ///传真
    TThostFtdcFaxType Fax;
    ///电子邮件
    TThostFtdcEMailType EMail;
    ///资金账户状态
    TThostFtdcMoneyAccountStatusType MoneyAccountStatus;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///汇钞标志
    TThostFtdcCashExchangeCodeType CashExchangeCode;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///交易ID
    TThostFtdcTIDType TID;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：101001 银行发起转账开户

BankBranchID：填0000

BrokerBranchID：一般为空

InstallID：CTP内部使用

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnOptionSelfClose

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期权自对冲通知，当执行ReqOptionSelfCloseInsert后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnOptionSelfClose(CThostFtdcOptionSelfCloseField *pOptionSelfClose) {};

回到顶部

◇ 2.参数

pOptionSelfClose：期权自对冲

struct CThostFtdcOptionSelfCloseField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///期权自对冲引用
    TThostFtdcOrderRefType  OptionSelfCloseRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///期权行权的头寸是否自对冲
    TThostFtdcOptSelfCloseFlagType  OptSelfCloseFlag;
    ///本地期权自对冲编号
    TThostFtdcOrderLocalIDType  OptionSelfCloseLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期权自对冲提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///期权自对冲编号
    TThostFtdcOrderSysIDType    OptionSelfCloseSysID;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///插入时间
    TThostFtdcTimeType  InsertTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///自对冲结果
    TThostFtdcExecResultType    ExecResult;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerOptionSelfCloseSeq;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

InstallID：CTP内部使用

OrderSubmitStatus：报单报入状态

ExecResult：最后的结果，检查是否自对冲成功

StatusMsg：错误信息

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnOrder

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报单通知，当执行ReqOrderInsert后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnOrder(CThostFtdcOrderField *pOrder) {};

回到顶部

◇ 2.参数

pOrder：报单

struct CThostFtdcOrderField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///报单价格条件
    TThostFtdcOrderPriceTypeType    OrderPriceType;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///组合开平标志
    TThostFtdcCombOffsetFlagType    CombOffsetFlag;
    ///组合投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///价格
    TThostFtdcPriceType LimitPrice;
    ///数量
    TThostFtdcVolumeType    VolumeTotalOriginal;
    ///有效期类型
    TThostFtdcTimeConditionType TimeCondition;
    ///GTD日期
    TThostFtdcDateType  GTDDate;
    ///成交量类型
    TThostFtdcVolumeConditionType   VolumeCondition;
    ///最小成交量
    TThostFtdcVolumeType    MinVolume;
    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;
    ///强平原因
    TThostFtdcForceCloseReasonType  ForceCloseReason;
    ///自动挂起标志
    TThostFtdcBoolType  IsAutoSuspend;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///本地报单编号
    TThostFtdcOrderLocalIDType  OrderLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///报单提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///报单提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///报单来源
    TThostFtdcOrderSourceType   OrderSource;
    ///报单状态
    TThostFtdcOrderStatusType   OrderStatus;
    ///报单类型
    TThostFtdcOrderTypeType OrderType;
    ///今成交数量
    TThostFtdcVolumeType    VolumeTraded;
    ///剩余数量
    TThostFtdcVolumeType    VolumeTotal;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///委托时间
    TThostFtdcTimeType  InsertTime;
    ///激活时间
    TThostFtdcTimeType  ActiveTime;
    ///挂起时间
    TThostFtdcTimeType  SuspendTime;
    ///最后修改时间
    TThostFtdcTimeType  UpdateTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///最后修改交易所交易员代码
    TThostFtdcTraderIDType  ActiveTraderID;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///用户强评标志
    TThostFtdcBoolType  UserForceClose;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerOrderSeq;
    ///相关报单
    TThostFtdcOrderSysIDType    RelativeOrderSysID;
    ///郑商所成交数量
    TThostFtdcVolumeType    ZCETotalTradedVolume;
    ///互换单标志
    TThostFtdcBoolType  IsSwapOrder;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
};

ContingentCondition：作为条件单的触发条件

StopPrice：用户条件单的触发价格。

ForceCloseReason：投资者发出的报单请求填0“非强平”

InstallID：CTP内部使用

OrderSubmitStatus：报单是否通过CTP校验的状态

OrderStatus：报单状态，通过交易所反馈

IsSwapOrder：是否互换单，是为1，否为0

InsertTime：状态为未知单时为ctp系统时间，从交易所返回后变更为交易所时间。

ActiveTraderID：是从交易所收回来，原值填写，CTP核心不处理该字段。在撤单回报中，由报单席位号修改为撤单席位号，以方便操作员在撤单回报中看出撤单是从哪个席位发起的

BusinessUnit：是ctp内部使用字段，建议投资者不要使用

TraderID：是席位号

ActiveUserID：是ctp内部使用字段，建议投资者不要使用

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnQueryBankBalanceByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起查询银行余额通知，当执行ReqQueryBankAccountMoneyByFuture后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnQueryBankBalanceByFuture(CThostFtdcNotifyQueryAccountField *pNotifyQueryAccount) {};

回到顶部

◇ 2.参数

pNotifyQueryAccount：查询账户信息通知

struct CThostFtdcNotifyQueryAccountField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///银行可用金额
    TThostFtdcTradeAmountType BankUseAmount;
    ///银行可取金额
    TThostFtdcTradeAmountType BankFetchAmount;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode: 204002 期货发起查询银行余额

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password: 为密文，显示为“*”

ErrorMsg：返回是否成功的回报

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnQuote

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

报价通知，当执行ReqQuoteInsert后并且报出后，收到返回则调用此接口，私有流回报。

◇ 1.函数原型

virtual void OnRtnQuote(CThostFtdcQuoteField *pQuote) {};

回到顶部

◇ 2.参数

pQuote：报价

struct CThostFtdcQuoteField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报价引用
    TThostFtdcOrderRefType  QuoteRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///卖价格
    TThostFtdcPriceType AskPrice;
    ///买价格
    TThostFtdcPriceType BidPrice;
    ///卖数量
    TThostFtdcVolumeType    AskVolume;
    ///买数量
    TThostFtdcVolumeType    BidVolume;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///卖开平标志
    TThostFtdcOffsetFlagType    AskOffsetFlag;
    ///买开平标志
    TThostFtdcOffsetFlagType    BidOffsetFlag;
    ///卖投机套保标志
    TThostFtdcHedgeFlagType AskHedgeFlag;
    ///买投机套保标志
    TThostFtdcHedgeFlagType BidHedgeFlag;
    ///本地报价编号
    TThostFtdcOrderLocalIDType  QuoteLocalID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///报价提示序号
    TThostFtdcSequenceNoType    NotifySequence;
    ///报价提交状态
    TThostFtdcOrderSubmitStatusType OrderSubmitStatus;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///报价编号
    TThostFtdcOrderSysIDType    QuoteSysID;
    ///报单日期
    TThostFtdcDateType  InsertDate;
    ///插入时间
    TThostFtdcTimeType  InsertTime;
    ///撤销时间
    TThostFtdcTimeType  CancelTime;
    ///报价状态
    TThostFtdcOrderStatusType   QuoteStatus;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///卖方报单编号
    TThostFtdcOrderSysIDType    AskOrderSysID;
    ///买方报单编号
    TThostFtdcOrderSysIDType    BidOrderSysID;
    ///前置编号
    TThostFtdcFrontIDType   FrontID;
    ///会话编号
    TThostFtdcSessionIDType SessionID;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///状态信息
    TThostFtdcErrorMsgType  StatusMsg;
    ///操作用户代码
    TThostFtdcUserIDType    ActiveUserID;
    ///经纪公司报价编号
    TThostFtdcSequenceNoType    BrokerQuoteSeq;
    ///衍生卖报单引用
    TThostFtdcOrderRefType  AskOrderRef;
    ///衍生买报单引用
    TThostFtdcOrderRefType  BidOrderRef;
    ///应价编号
    TThostFtdcOrderSysIDType    ForQuoteSysID;
    ///营业部编号
    TThostFtdcBranchIDType  BranchID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///资金账号
    TThostFtdcAccountIDType AccountID;
    ///币种代码
    TThostFtdcCurrencyIDType    CurrencyID;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve3;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///IP地址
    TThostFtdcIPAddressType IPAddress;
    ///被顶单编号
    TThostFtdcOrderSysIDType    ReplaceSysID;
};

QuoteStatus：报价的状态

StatusMsg：明文显示状态信息

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnRepealFromBankToFutureByBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

银行发起冲正银行转期货通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnRepealFromBankToFutureByBank(CThostFtdcRspRepealField *pRspRepeal) {};

回到顶部

◇ 2.参数

pRspRepeal：冲正响应

struct CThostFtdcRspRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：103001 期货发起冲正期货转银行

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：转账状态

ErrorMsg：报错信息明文，若成功则显示为“交易成功”

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnRepealFromBankToFutureByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起冲正银行转期货请求，银行处理完毕后报盘发回的通知

◇ 1.函数原型

virtual void OnRtnRepealFromBankToFutureByFuture(CThostFtdcRspRepealField *pRspRepeal) {};

回到顶部

◇ 2.参数

pRspRepeal：冲正响应

struct CThostFtdcRspRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：103001 银行发起冲正银行转期货

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：转账状态

ErrorMsg：报错信息明文，若成功则显示为“交易成功”

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnRepealFromBankToFutureByFutureManual

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

系统运行时期货端手工发起冲正银行转期货请求，银行处理完毕后报盘发回的通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnRepealFromBankToFutureByFutureManual(CThostFtdcRspRepealField *pRspRepeal) {};

回到顶部

◇ 2.参数

pRspRepeal：冲正响应

struct CThostFtdcRspRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：203001 期货发起冲正期货转银行

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：转账状态

ErrorMsg：报错信息明文，若成功则显示为“交易成功”

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnRepealFromFutureToBankByBank

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

银行发起冲正期货转银行通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnRepealFromFutureToBankByBank(CThostFtdcRspRepealField *pRspRepeal) {};

回到顶部

◇ 2.参数

pRspRepeal：冲正响应

struct CThostFtdcRspRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：103002 期货发起冲正期货转银行

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：转账状态

ErrorMsg：报错信息明文，若成功则显示为“交易成功”

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnRepealFromFutureToBankByFuture

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起冲正期货转银行请求，银行处理完毕后报盘发回的通知，一般冲正请求由ctp自动发起，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnRepealFromFutureToBankByFuture(CThostFtdcRspRepealField *pRspRepeal) {};

回到顶部

◇ 2.参数

pRspRepeal：冲正响应

struct CThostFtdcRspRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：203002 期货发起冲正期货转银行

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：转账状态

ErrorMsg：报错信息明文，若成功则显示为“交易成功”

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnRepealFromFutureToBankByFutureManual

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

系统运行时期货端手工发起冲正期货转银行请求，银行处理完毕后报盘发回的通知，无Req属于私有流回报

◇ 1.函数原型

virtual void OnRtnRepealFromFutureToBankByFutureManual(CThostFtdcRspRepealField *pRspRepeal) {};

回到顶部

◇ 2.参数

pRspRepeal：冲正响应

struct CThostFtdcRspRepealField
{
    ///冲正时间间隔
    TThostFtdcRepealTimeIntervalType RepealTimeInterval;
    ///已经冲正次数
    TThostFtdcRepealedTimesType RepealedTimes;
    ///银行冲正标志
    TThostFtdcBankRepealFlagType BankRepealFlag;
    ///期商冲正标志
    TThostFtdcBrokerRepealFlagType BrokerRepealFlag;
    ///被冲正平台流水号
    TThostFtdcPlateSerialType PlateRepealSerial;
    ///被冲正银行流水号
    TThostFtdcBankSerialType BankRepealSerial;
    ///被冲正期货流水号
    TThostFtdcFutureSerialType FutureRepealSerial;
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：203002 期货发起冲正期货转银行

BankBranchID：填0000

BrokerBranchID：一般为空

BankPassWord：为密文，显示为“*”

Password：为密文，显示为“*”

InstallID：CTP内部使用

TransferStatus：转账状态

ErrorMsg：报错信息明文，若成功则显示为“交易成功”

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnTrade

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

成交通知，报单发出后有成交则通过此接口返回。私有流

◇ 1.函数原型

virtual void OnRtnTrade(CThostFtdcTradeField *pTrade) {};

回到顶部

◇ 2.参数

pTrade：成交

struct CThostFtdcTradeField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///报单引用
    TThostFtdcOrderRefType  OrderRef;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///成交编号
    TThostFtdcTradeIDType   TradeID;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///报单编号
    TThostFtdcOrderSysIDType    OrderSysID;
    ///会员代码
    TThostFtdcParticipantIDType ParticipantID;
    ///客户代码
    TThostFtdcClientIDType  ClientID;
    ///交易角色
    TThostFtdcTradingRoleType   TradingRole;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///开平标志
    TThostFtdcOffsetFlagType    OffsetFlag;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///价格
    TThostFtdcPriceType Price;
    ///数量
    TThostFtdcVolumeType    Volume;
    ///成交时期
    TThostFtdcDateType  TradeDate;
    ///成交时间
    TThostFtdcTimeType  TradeTime;
    ///成交类型
    TThostFtdcTradeTypeType TradeType;
    ///成交价来源
    TThostFtdcPriceSourceType   PriceSource;
    ///交易所交易员代码
    TThostFtdcTraderIDType  TraderID;
    ///本地报单编号
    TThostFtdcOrderLocalIDType  OrderLocalID;
    ///结算会员编号
    TThostFtdcParticipantIDType ClearingPartID;
    ///业务单元
    TThostFtdcBusinessUnitType  BusinessUnit;
    ///序号
    TThostFtdcSequenceNoType    SequenceNo;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///经纪公司报单编号
    TThostFtdcSequenceNoType    BrokerOrderSeq;
    ///成交来源
    TThostFtdcTradeSourceType   TradeSource;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRtnTradingNotice

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

交易通知，无Req属于私有流回报。

◇ 1.函数原型

virtual void OnRtnTradingNotice(CThostFtdcTradingNoticeInfoField *pTradingNoticeInfo) {};

回到顶部

◇ 2.参数

pTradingNoticeInfo：用户事件通知信息

struct CThostFtdcTradingNoticeInfoField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///发送时间
    TThostFtdcTimeType SendTime;
    ///消息正文
    TThostFtdcContentType FieldContent;
    ///序列系列号
    TThostFtdcSequenceSeriesType SequenceSeries;
    ///序列号
    TThostFtdcSequenceNoType SequenceNo;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryMaxOrderVolume

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

查询最大报单数量响应，当执行ReqQryMaxOrderVolume后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryMaxOrderVolume(CThostFtdcQryMaxOrderVolumeField *pQryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pQryMaxOrderVolume：查询最大报单数量

struct CThostFtdcQryMaxOrderVolumeField
{
    ///经纪公司代码
    TThostFtdcBrokerIDType BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType InvestorID;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///合约代码
    TThostFtdcInstrumentIDType InstrumentID;
    ///买卖方向
    TThostFtdcDirectionType Direction;
    ///开平标志
    TThostFtdcOffsetFlagType OffsetFlag;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///最大允许报单数量
    TThostFtdcVolumeType MaxVolume;
    ///交易所代码
    TThostFtdcExchangeIDType ExchangeID;
    ///投资单元代码
    TThostFtdcInvestUnitIDType InvestUnitID;
};

MaxVolume：取值结果为，min（可开/可平，限价单最大下单量）；可开根据昨结算价计算得出。

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

nRequestID：返回用户操作请求的ID，该ID 由用户在操作请求时指定。

bIsLast：指示该次返回是否为针对nRequestID的最后一次返回。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryClassifiedInstrument

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询分类合约响应，当执行ReqQryClassifiedInstrument后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryClassifiedInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pInstrument：合约

struct CThostFtdcInstrumentField
{
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve1;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///合约名称
    TThostFtdcInstrumentNameType    InstrumentName;
    ///保留的无效字段
    TThostFtdcOldExchangeInstIDType reserve2;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve3;
    ///产品类型
    TThostFtdcProductClassType  ProductClass;
    ///交割年份
    TThostFtdcYearType  DeliveryYear;
    ///交割月
    TThostFtdcMonthType DeliveryMonth;
    ///市价单最大下单量
    TThostFtdcVolumeType    MaxMarketOrderVolume;
    ///市价单最小下单量
    TThostFtdcVolumeType    MinMarketOrderVolume;
    ///限价单最大下单量
    TThostFtdcVolumeType    MaxLimitOrderVolume;
    ///限价单最小下单量
    TThostFtdcVolumeType    MinLimitOrderVolume;
    ///合约数量乘数
    TThostFtdcVolumeMultipleType    VolumeMultiple;
    ///最小变动价位
    TThostFtdcPriceType PriceTick;
    ///创建日
    TThostFtdcDateType  CreateDate;
    ///上市日
    TThostFtdcDateType  OpenDate;
    ///到期日
    TThostFtdcDateType  ExpireDate;
    ///开始交割日
    TThostFtdcDateType  StartDelivDate;
    ///结束交割日
    TThostFtdcDateType  EndDelivDate;
    ///合约生命周期状态
    TThostFtdcInstLifePhaseType InstLifePhase;
    ///当前是否交易
    TThostFtdcBoolType  IsTrading;
    ///持仓类型
    TThostFtdcPositionTypeType  PositionType;
    ///持仓日期类型
    TThostFtdcPositionDateTypeType  PositionDateType;
    ///多头保证金率
    TThostFtdcRatioType LongMarginRatio;
    ///空头保证金率
    TThostFtdcRatioType ShortMarginRatio;
    ///是否使用大额单边保证金算法
    TThostFtdcMaxMarginSideAlgorithmType    MaxMarginSideAlgorithm;
    ///保留的无效字段
    TThostFtdcOldInstrumentIDType   reserve4;
    ///执行价
    TThostFtdcPriceType StrikePrice;
    ///期权类型
    TThostFtdcOptionsTypeType   OptionsType;
    ///合约基础商品乘数
    TThostFtdcUnderlyingMultipleType    UnderlyingMultiple;
    ///组合类型
    TThostFtdcCombinationTypeType   CombinationType;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///合约在交易所的代码
    TThostFtdcExchangeInstIDType    ExchangeInstID;
    ///产品代码
    TThostFtdcInstrumentIDType  ProductID;
    ///基础商品代码
    TThostFtdcInstrumentIDType  UnderlyingInstrID;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryCombPromotionParam

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

请求组合优惠比例响应，当执行ReqQryCombPromotionParam后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryCombPromotionParam(CThostFtdcCombPromotionParamField *pCombPromotionParam, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pCombPromotionParam：组合优惠比例

struct CThostFtdcCombPromotionParamField
{
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///投机套保标志
    TThostFtdcCombHedgeFlagType CombHedgeFlag;
    ///期权组合保证金比例
    TThostFtdcDiscountRatioType Xparameter;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryRiskSettleInvstPosition

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

投资者风险结算持仓查询响应，当执行ReqQryRiskSettleInvstPosition后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryRiskSettleInvstPosition(CThostFtdcRiskSettleInvstPositionField *pRiskSettleInvstPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRiskSettleInvstPosition：投资者风险结算持仓

struct CThostFtdcRiskSettleInvstPositionField
{
    ///合约代码
    TThostFtdcInstrumentIDType  InstrumentID;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///投资者代码
    TThostFtdcInvestorIDType    InvestorID;
    ///持仓多空方向
    TThostFtdcPosiDirectionType PosiDirection;
    ///投机套保标志
    TThostFtdcHedgeFlagType HedgeFlag;
    ///持仓日期
    TThostFtdcPositionDateType  PositionDate;
    ///上日持仓
    TThostFtdcVolumeType    YdPosition;
    ///今日持仓
    TThostFtdcVolumeType    Position;
    ///多头冻结
    TThostFtdcVolumeType    LongFrozen;
    ///空头冻结
    TThostFtdcVolumeType    ShortFrozen;
    ///开仓冻结金额
    TThostFtdcMoneyType LongFrozenAmount;
    ///开仓冻结金额
    TThostFtdcMoneyType ShortFrozenAmount;
    ///开仓量
    TThostFtdcVolumeType    OpenVolume;
    ///平仓量
    TThostFtdcVolumeType    CloseVolume;
    ///开仓金额
    TThostFtdcMoneyType OpenAmount;
    ///平仓金额
    TThostFtdcMoneyType CloseAmount;
    ///持仓成本
    TThostFtdcMoneyType PositionCost;
    ///上次占用的保证金
    TThostFtdcMoneyType PreMargin;
    ///占用的保证金
    TThostFtdcMoneyType UseMargin;
    ///冻结的保证金
    TThostFtdcMoneyType FrozenMargin;
    ///冻结的资金
    TThostFtdcMoneyType FrozenCash;
    ///冻结的手续费
    TThostFtdcMoneyType FrozenCommission;
    ///资金差额
    TThostFtdcMoneyType CashIn;
    ///手续费
    TThostFtdcMoneyType Commission;
    ///平仓盈亏
    TThostFtdcMoneyType CloseProfit;
    ///持仓盈亏
    TThostFtdcMoneyType PositionProfit;
    ///上次结算价
    TThostFtdcPriceType PreSettlementPrice;
    ///本次结算价
    TThostFtdcPriceType SettlementPrice;
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///结算编号
    TThostFtdcSettlementIDType  SettlementID;
    ///开仓成本
    TThostFtdcMoneyType OpenCost;
    ///交易所保证金
    TThostFtdcMoneyType ExchangeMargin;
    ///组合成交形成的持仓
    TThostFtdcVolumeType    CombPosition;
    ///组合多头冻结
    TThostFtdcVolumeType    CombLongFrozen;
    ///组合空头冻结
    TThostFtdcVolumeType    CombShortFrozen;
    ///逐日盯市平仓盈亏
    TThostFtdcMoneyType CloseProfitByDate;
    ///逐笔对冲平仓盈亏
    TThostFtdcMoneyType CloseProfitByTrade;
    ///今日持仓
    TThostFtdcVolumeType    TodayPosition;
    ///保证金率
    TThostFtdcRatioType MarginRateByMoney;
    ///保证金率(按手数)
    TThostFtdcRatioType MarginRateByVolume;
    ///执行冻结
    TThostFtdcVolumeType    StrikeFrozen;
    ///执行冻结金额
    TThostFtdcMoneyType StrikeFrozenAmount;
    ///放弃执行冻结
    TThostFtdcVolumeType    AbandonFrozen;
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///执行冻结的昨仓
    TThostFtdcVolumeType    YdStrikeFrozen;
    ///投资单元代码
    TThostFtdcInvestUnitIDType  InvestUnitID;
    ///大商所持仓成本差值，只有大商所使用
    TThostFtdcMoneyType PositionCostOffset;
    ///tas持仓手数
    TThostFtdcVolumeType    TasPosition;
    ///tas持仓成本
    TThostFtdcMoneyType TasPositionCost;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


OnRspQryRiskSettleProductStatus

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

风险结算产品查询响应，当执行ReqQryRiskSettleProductStatus后，该方法被调用。

◇ 1.函数原型

virtual void OnRspQryRiskSettleProductStatus(CThostFtdcRiskSettleProductStatusField *pRiskSettleProductStatus, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

回到顶部

◇ 2.参数

pRiskSettleProductStatus：风险品种

struct CThostFtdcRiskSettleProductStatusField
{
    ///交易所代码
    TThostFtdcExchangeIDType    ExchangeID;
    ///产品编号
    TThostFtdcInstrumentIDType  ProductID;
    ///产品结算状态
    TThostFtdcProductStatusType ProductStatus;
};

pRspInfo：响应信息

struct CThostFtdcRspInfoField
{
    ///错误代码
    TThostFtdcErrorIDType ErrorID;
    ///错误信息
    TThostFtdcErrorMsgType ErrorMsg;
};

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


CThostFtdcTraderApi

1.接口

2.示例代码

回到顶部

< 前页 回目录 后页 >

■ 6.6.1P1_API接口说明

└△ 交易接口

  └◆ CThostFtdcTraderApi

CThostFtdcTraderApi类提供了交易api的初始化、登录、报单和查询等功能。

◇ 1.接口

class TRADER_API_EXPORT CThostFtdcTraderApi
{
public:
    ///创建TraderApi
    ///@param pszFlowPath 存贮订阅信息文件的目录，默认为当前目录
    ///@return 创建出的UserApi
    static CThostFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = "");
    ///获取API的版本信息
    ///@retrun 获取到的版本号
    static const char *GetApiVersion();
    ///删除接口对象本身
    ///@remark 不再使用本接口对象时,调用该函数删除接口对象
    virtual void Release() = 0;
    ///初始化
    ///@remark 初始化运行环境,只有调用后,接口才开始工作
    virtual void Init() = 0;
    ///等待接口线程结束运行
    ///@return 线程退出代码
    virtual int Join() = 0;
    ///获取当前交易日
    ///@retrun 获取到的交易日
    ///@remark 只有登录成功后,才能得到正确的交易日
    virtual const char *GetTradingDay() = 0;
    ///注册前置机网络地址
    ///@param pszFrontAddress：前置机网络地址。
    ///@remark 网络地址的格式为：“protocol://ipaddress:port”，如：”tcp://127.0.0.1:17001”。
    ///@remark “tcp”代表传输协议，“127.0.0.1”代表服务器地址。”17001”代表服务器端口号。
    virtual void RegisterFront(char *pszFrontAddress) = 0;
    ///注册名字服务器网络地址
    ///@param pszNsAddress：名字服务器网络地址。
    ///@remark 网络地址的格式为：“protocol://ipaddress:port”，如：”tcp://127.0.0.1:12001”。
    ///@remark “tcp”代表传输协议，“127.0.0.1”代表服务器地址。”12001”代表服务器端口号。
    ///@remark RegisterNameServer优先于RegisterFront
    virtual void RegisterNameServer(char *pszNsAddress) = 0;
    ///注册名字服务器用户信息
    ///@param pFensUserInfo：用户信息。
    virtual void RegisterFensUserInfo(CThostFtdcFensUserInfoField * pFensUserInfo) = 0;
    ///注册回调接口
    ///@param pSpi 派生自回调接口类的实例
    virtual void RegisterSpi(CThostFtdcTraderSpi *pSpi) = 0;
    ///订阅私有流。
    ///@param nResumeType 私有流重传方式
    ///        THOST_TERT_RESTART:从本交易日开始重传
    ///        THOST_TERT_RESUME:从上次收到的续传
    ///        THOST_TERT_QUICK:只传送登录后私有流的内容
    ///@remark 该方法要在Init方法前调用。若不调用则不会收到私有流的数据。
    virtual void SubscribePrivateTopic(THOST_TE_RESUME_TYPE nResumeType) = 0;
    ///订阅公共流。
    ///@param nResumeType 公共流重传方式
    ///        THOST_TERT_RESTART:从本交易日开始重传
    ///        THOST_TERT_RESUME:从上次收到的续传
    ///        THOST_TERT_QUICK:只传送登录后公共流的内容
    ///        THOST_TERT_NONE:取消订阅公共流
    ///@remark 该方法要在Init方法前调用。若不调用则不会收到公共流的数据。
    virtual void SubscribePublicTopic(THOST_TE_RESUME_TYPE nResumeType) = 0;
    ///客户端认证请求
    virtual int ReqAuthenticate(CThostFtdcReqAuthenticateField *pReqAuthenticateField, int nRequestID) = 0;
    ///注册用户终端信息，用于中继服务器多连接模式
    ///需要在终端认证成功后，用户登录前调用该接口
    virtual int RegisterUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;
    ///上报用户终端信息，用于中继服务器操作员登录模式
    ///操作员登录后，可以多次调用该接口上报客户信息
    virtual int SubmitUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;
    ///用户登录请求
    virtual int ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0;
    ///登出请求
    virtual int ReqUserLogout(CThostFtdcUserLogoutField *pUserLogout, int nRequestID) = 0;
    ///用户口令更新请求
    virtual int ReqUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, int nRequestID) = 0;
    ///资金账户口令更新请求
    virtual int ReqTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, int nRequestID) = 0;
    ///查询用户当前支持的认证模式
    virtual int ReqUserAuthMethod(CThostFtdcReqUserAuthMethodField *pReqUserAuthMethod, int nRequestID) = 0;
    ///用户发出获取图形验证码请求
    virtual int ReqGenUserCaptcha(CThostFtdcReqGenUserCaptchaField *pReqGenUserCaptcha, int nRequestID) = 0;
    ///用户发出获取短信验证码请求
    virtual int ReqGenUserText(CThostFtdcReqGenUserTextField *pReqGenUserText, int nRequestID) = 0;
    ///用户发出带有图片验证码的登陆请求
    virtual int ReqUserLoginWithCaptcha(CThostFtdcReqUserLoginWithCaptchaField *pReqUserLoginWithCaptcha, int nRequestID) = 0;
    ///用户发出带有短信验证码的登陆请求
    virtual int ReqUserLoginWithText(CThostFtdcReqUserLoginWithTextField *pReqUserLoginWithText, int nRequestID) = 0;
    ///用户发出带有动态口令的登陆请求
    virtual int ReqUserLoginWithOTP(CThostFtdcReqUserLoginWithOTPField *pReqUserLoginWithOTP, int nRequestID) = 0;
    ///报单录入请求
    virtual int ReqOrderInsert(CThostFtdcInputOrderField *pInputOrder, int nRequestID) = 0;
    ///预埋单录入请求
    virtual int ReqParkedOrderInsert(CThostFtdcParkedOrderField *pParkedOrder, int nRequestID) = 0;
    ///预埋撤单录入请求
    virtual int ReqParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, int nRequestID) = 0;
    ///报单操作请求
    virtual int ReqOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, int nRequestID) = 0;
    ///查询最大报单数量请求
    virtual int ReqQryMaxOrderVolume(CThostFtdcQryMaxOrderVolumeField *pQryMaxOrderVolume, int nRequestID) = 0;
    ///投资者结算结果确认
    virtual int ReqSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, int nRequestID) = 0;
    ///请求删除预埋单
    virtual int ReqRemoveParkedOrder(CThostFtdcRemoveParkedOrderField *pRemoveParkedOrder, int nRequestID) = 0;
    ///请求删除预埋撤单
    virtual int ReqRemoveParkedOrderAction(CThostFtdcRemoveParkedOrderActionField *pRemoveParkedOrderAction, int nRequestID) = 0;
    ///执行宣告录入请求
    virtual int ReqExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, int nRequestID) = 0;
    ///执行宣告操作请求
    virtual int ReqExecOrderAction(CThostFtdcInputExecOrderActionField *pInputExecOrderAction, int nRequestID) = 0;
    ///询价录入请求
    virtual int ReqForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, int nRequestID) = 0;
    ///报价录入请求
    virtual int ReqQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, int nRequestID) = 0;
    ///报价操作请求
    virtual int ReqQuoteAction(CThostFtdcInputQuoteActionField *pInputQuoteAction, int nRequestID) = 0;
    ///批量报单操作请求
    virtual int ReqBatchOrderAction(CThostFtdcInputBatchOrderActionField *pInputBatchOrderAction, int nRequestID) = 0;
    ///期权自对冲录入请求
    virtual int ReqOptionSelfCloseInsert(CThostFtdcInputOptionSelfCloseField *pInputOptionSelfClose, int nRequestID) = 0;
    ///期权自对冲操作请求
    virtual int ReqOptionSelfCloseAction(CThostFtdcInputOptionSelfCloseActionField *pInputOptionSelfCloseAction, int nRequestID) = 0;
    ///申请组合录入请求
    virtual int ReqCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, int nRequestID) = 0;
    ///请求查询报单
    virtual int ReqQryOrder(CThostFtdcQryOrderField *pQryOrder, int nRequestID) = 0;
    ///请求查询成交
    virtual int ReqQryTrade(CThostFtdcQryTradeField *pQryTrade, int nRequestID) = 0;
    ///请求查询投资者持仓
    virtual int ReqQryInvestorPosition(CThostFtdcQryInvestorPositionField *pQryInvestorPosition, int nRequestID) = 0;
    ///请求查询资金账户
    virtual int ReqQryTradingAccount(CThostFtdcQryTradingAccountField *pQryTradingAccount, int nRequestID) = 0;
    ///请求查询投资者
    virtual int ReqQryInvestor(CThostFtdcQryInvestorField *pQryInvestor, int nRequestID) = 0;
    ///请求查询交易编码
    virtual int ReqQryTradingCode(CThostFtdcQryTradingCodeField *pQryTradingCode, int nRequestID) = 0;
    ///请求查询合约保证金率
    virtual int ReqQryInstrumentMarginRate(CThostFtdcQryInstrumentMarginRateField *pQryInstrumentMarginRate, int nRequestID) = 0;
    ///请求查询合约手续费率
    virtual int ReqQryInstrumentCommissionRate(CThostFtdcQryInstrumentCommissionRateField *pQryInstrumentCommissionRate, int nRequestID) = 0;
    ///请求查询交易所
    virtual int ReqQryExchange(CThostFtdcQryExchangeField *pQryExchange, int nRequestID) = 0;
    ///请求查询产品
    virtual int ReqQryProduct(CThostFtdcQryProductField *pQryProduct, int nRequestID) = 0;
    ///请求查询合约
    virtual int ReqQryInstrument(CThostFtdcQryInstrumentField *pQryInstrument, int nRequestID) = 0;
    ///请求查询行情
    virtual int ReqQryDepthMarketData(CThostFtdcQryDepthMarketDataField *pQryDepthMarketData, int nRequestID) = 0;
    ///请求查询投资者结算结果
    virtual int ReqQrySettlementInfo(CThostFtdcQrySettlementInfoField *pQrySettlementInfo, int nRequestID) = 0;
    ///请求查询转帐银行
    virtual int ReqQryTransferBank(CThostFtdcQryTransferBankField *pQryTransferBank, int nRequestID) = 0;
    ///请求查询投资者持仓明细
    virtual int ReqQryInvestorPositionDetail(CThostFtdcQryInvestorPositionDetailField *pQryInvestorPositionDetail, int nRequestID) = 0;
    ///请求查询客户通知
    virtual int ReqQryNotice(CThostFtdcQryNoticeField *pQryNotice, int nRequestID) = 0;
    ///请求查询结算信息确认
    virtual int ReqQrySettlementInfoConfirm(CThostFtdcQrySettlementInfoConfirmField *pQrySettlementInfoConfirm, int nRequestID) = 0;
    ///请求查询投资者持仓明细
    virtual int ReqQryInvestorPositionCombineDetail(CThostFtdcQryInvestorPositionCombineDetailField *pQryInvestorPositionCombineDetail, int nRequestID) = 0;
    ///请求查询保证金监管系统经纪公司资金账户密钥
    virtual int ReqQryCFMMCTradingAccountKey(CThostFtdcQryCFMMCTradingAccountKeyField *pQryCFMMCTradingAccountKey, int nRequestID) = 0;
    ///请求查询仓单折抵信息
    virtual int ReqQryEWarrantOffset(CThostFtdcQryEWarrantOffsetField *pQryEWarrantOffset, int nRequestID) = 0;
    ///请求查询投资者品种/跨品种保证金
    virtual int ReqQryInvestorProductGroupMargin(CThostFtdcQryInvestorProductGroupMarginField *pQryInvestorProductGroupMargin, int nRequestID) = 0;
    ///请求查询交易所保证金率
    virtual int ReqQryExchangeMarginRate(CThostFtdcQryExchangeMarginRateField *pQryExchangeMarginRate, int nRequestID) = 0;
    ///请求查询交易所调整保证金率
    virtual int ReqQryExchangeMarginRateAdjust(CThostFtdcQryExchangeMarginRateAdjustField *pQryExchangeMarginRateAdjust, int nRequestID) = 0;
    ///请求查询汇率
    virtual int ReqQryExchangeRate(CThostFtdcQryExchangeRateField *pQryExchangeRate, int nRequestID) = 0;
    ///请求查询二级代理操作员银期权限
    virtual int ReqQrySecAgentACIDMap(CThostFtdcQrySecAgentACIDMapField *pQrySecAgentACIDMap, int nRequestID) = 0;
    ///请求查询产品报价汇率
    virtual int ReqQryProductExchRate(CThostFtdcQryProductExchRateField *pQryProductExchRate, int nRequestID) = 0;
    ///请求查询产品组
    virtual int ReqQryProductGroup(CThostFtdcQryProductGroupField *pQryProductGroup, int nRequestID) = 0;
    ///请求查询做市商合约手续费率
    virtual int ReqQryMMInstrumentCommissionRate(CThostFtdcQryMMInstrumentCommissionRateField *pQryMMInstrumentCommissionRate, int nRequestID) = 0;
    ///请求查询做市商期权合约手续费
    virtual int ReqQryMMOptionInstrCommRate(CThostFtdcQryMMOptionInstrCommRateField *pQryMMOptionInstrCommRate, int nRequestID) = 0;
    ///请求查询报单手续费
    virtual int ReqQryInstrumentOrderCommRate(CThostFtdcQryInstrumentOrderCommRateField *pQryInstrumentOrderCommRate, int nRequestID) = 0;
    ///请求查询资金账户
    virtual int ReqQrySecAgentTradingAccount(CThostFtdcQryTradingAccountField *pQryTradingAccount, int nRequestID) = 0;
    ///请求查询二级代理商资金校验模式
    virtual int ReqQrySecAgentCheckMode(CThostFtdcQrySecAgentCheckModeField *pQrySecAgentCheckMode, int nRequestID) = 0;
    ///请求查询二级代理商信息
    virtual int ReqQrySecAgentTradeInfo(CThostFtdcQrySecAgentTradeInfoField *pQrySecAgentTradeInfo, int nRequestID) = 0;
    ///请求查询期权交易成本
    virtual int ReqQryOptionInstrTradeCost(CThostFtdcQryOptionInstrTradeCostField *pQryOptionInstrTradeCost, int nRequestID) = 0;
    ///请求查询期权合约手续费
    virtual int ReqQryOptionInstrCommRate(CThostFtdcQryOptionInstrCommRateField *pQryOptionInstrCommRate, int nRequestID) = 0;
    ///请求查询执行宣告
    virtual int ReqQryExecOrder(CThostFtdcQryExecOrderField *pQryExecOrder, int nRequestID) = 0;
    ///请求查询询价
    virtual int ReqQryForQuote(CThostFtdcQryForQuoteField *pQryForQuote, int nRequestID) = 0;
    ///请求查询报价
    virtual int ReqQryQuote(CThostFtdcQryQuoteField *pQryQuote, int nRequestID) = 0;
    ///请求查询期权自对冲
    virtual int ReqQryOptionSelfClose(CThostFtdcQryOptionSelfCloseField *pQryOptionSelfClose, int nRequestID) = 0;
    ///请求查询投资单元
    virtual int ReqQryInvestUnit(CThostFtdcQryInvestUnitField *pQryInvestUnit, int nRequestID) = 0;
    ///请求查询组合合约安全系数
    virtual int ReqQryCombInstrumentGuard(CThostFtdcQryCombInstrumentGuardField *pQryCombInstrumentGuard, int nRequestID) = 0;
    ///请求查询申请组合
    virtual int ReqQryCombAction(CThostFtdcQryCombActionField *pQryCombAction, int nRequestID) = 0;
    ///请求查询转帐流水
    virtual int ReqQryTransferSerial(CThostFtdcQryTransferSerialField *pQryTransferSerial, int nRequestID) = 0;
    ///请求查询银期签约关系
    virtual int ReqQryAccountregister(CThostFtdcQryAccountregisterField *pQryAccountregister, int nRequestID) = 0;
    ///请求查询签约银行
    virtual int ReqQryContractBank(CThostFtdcQryContractBankField *pQryContractBank, int nRequestID) = 0;
    ///请求查询预埋单
    virtual int ReqQryParkedOrder(CThostFtdcQryParkedOrderField *pQryParkedOrder, int nRequestID) = 0;
    ///请求查询预埋撤单
    virtual int ReqQryParkedOrderAction(CThostFtdcQryParkedOrderActionField *pQryParkedOrderAction, int nRequestID) = 0;
    ///请求查询交易通知
    virtual int ReqQryTradingNotice(CThostFtdcQryTradingNoticeField *pQryTradingNotice, int nRequestID) = 0;
    ///请求查询经纪公司交易参数
    virtual int ReqQryBrokerTradingParams(CThostFtdcQryBrokerTradingParamsField *pQryBrokerTradingParams, int nRequestID) = 0;
    ///请求查询经纪公司交易算法
    virtual int ReqQryBrokerTradingAlgos(CThostFtdcQryBrokerTradingAlgosField *pQryBrokerTradingAlgos, int nRequestID) = 0;
    ///请求查询监控中心用户令牌
    virtual int ReqQueryCFMMCTradingAccountToken(CThostFtdcQueryCFMMCTradingAccountTokenField *pQueryCFMMCTradingAccountToken, int nRequestID) = 0;
    ///期货发起银行资金转期货请求
    virtual int ReqFromBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, int nRequestID) = 0;
    ///期货发起期货资金转银行请求
    virtual int ReqFromFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, int nRequestID) = 0;
    ///期货发起查询银行余额请求
    virtual int ReqQueryBankAccountMoneyByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, int nRequestID) = 0;
    ///请求查询分类合约
    virtual int ReqQryClassifiedInstrument(CThostFtdcQryClassifiedInstrumentField *pQryClassifiedInstrument, int nRequestID) = 0;
    ///请求组合优惠比例
    virtual int ReqQryCombPromotionParam(CThostFtdcQryCombPromotionParamField *pQryCombPromotionParam, int nRequestID) = 0;
protected:
    ~CThostFtdcTraderApi(){};
};

回到顶部

◇ 2.示例代码

class CTraderHandler : public CThostFtdcTraderSpi
{
private:
  CThostFtdcTraderApi *m_ptraderapi;
public:
  void connect()
  {
      //创建API实例，按照以下顺序初始化
      m_ptraderapi = CThostFtdcTraderApi::CreateFtdcTraderApi("flow/"); //必须提前创建好flow目录
      m_ptraderapi->RegisterSpi(this);
      m_ptraderapi->SubscribePublicTopic(THOST_TERT_QUICK);
      m_ptraderapi->SubscribePrivateTopic(THOST_TERT_QUICK); //设置私有流订阅模式
      m_ptraderapi->RegisterFront("tcp://127.0.0.1:41205");
      m_ptraderapi->Init();
      //输出API版本信息
      printf("%s\n", m_ptraderapi->GetApiVersion());
  }
}

请参阅：

CreateFtdcTraderApi

GetApiVersion

GetTradingDay

Init

Join

RegisterFensUserInfo

RegisterFront

RegisterNameServer

RegisterSpi

RegisterUserSystemInfo

Release

ReqAuthenticate

ReqBatchOrderAction

ReqCombActionInsert

ReqExecOrderAction

ReqExecOrderInsert

ReqForQuoteInsert

ReqFromBankToFutureByFuture

ReqFromFutureToBankByFuture

ReqGenUserCaptcha

ReqGenUserText

ReqOptionSelfCloseAction

ReqOptionSelfCloseInsert

ReqOrderAction

ReqOrderInsert

ReqParkedOrderAction

ReqParkedOrderInsert

ReqQryAccountregister

ReqQryBrokerTradingAlgos

ReqQryBrokerTradingParams

ReqQryCFMMCTradingAccountKey

ReqQryCombAction

ReqQryCombInstrumentGuard

ReqQryContractBank

ReqQryDepthMarketData

ReqQryEWarrantOffset

ReqQryExchange

ReqQryExchangeMarginRate

ReqQryExchangeMarginRateAdjust

ReqQryExchangeRate

ReqQryExecOrder

ReqQryForQuote

ReqQryInstrument

ReqQryInstrumentCommissionRate

ReqQryInstrumentMarginRate

ReqQryInstrumentOrderCommRate

ReqQryInvestor

ReqQryInvestorPosition

ReqQryInvestorPositionCombineDetail

ReqQryInvestorPositionDetail

ReqQryInvestorProductGroupMargin

ReqQryInvestUnit

ReqQryMMInstrumentCommissionRate

ReqQryMMOptionInstrCommRate

ReqQryNotice

ReqQryOptionInstrCommRate

ReqQryOptionInstrTradeCost

ReqQryOptionSelfClose

ReqQryOrder

ReqQryParkedOrder

ReqQryParkedOrderAction

ReqQryProduct

ReqQryProductExchRate

ReqQryProductGroup

ReqQryQuote

ReqQrySecAgentACIDMap

ReqQrySecAgentCheckMode

ReqQrySecAgentTradeInfo

ReqQrySecAgentTradingAccount

ReqQrySettlementInfo

ReqQrySettlementInfoConfirm

ReqQryTrade

ReqQryTradingAccount

ReqQryTradingCode

ReqQryTradingNotice

ReqQryTransferBank

ReqQryTransferSerial

ReqQueryBankAccountMoneyByFuture

ReqQueryCFMMCTradingAccountToken

ReqQryMaxOrderVolume

ReqQuoteAction

ReqQuoteInsert

ReqRemoveParkedOrder

ReqRemoveParkedOrderAction

ReqSettlementInfoConfirm

ReqTradingAccountPasswordUpdate

ReqUserAuthMethod

ReqUserLogin

ReqUserLoginWithCaptcha

ReqUserLoginWithOTP

ReqUserLoginWithText

ReqUserLogout

ReqUserPasswordUpdate

SubmitUserSystemInfo

SubscribePrivateTopic

SubscribePublicTopic

ReqQryClassifiedInstrument

ReqQryCombPromotionParam

ReqQryRiskSettleInvstPosition

ReqQryRiskSettleProductStatus


CreateFtdcTraderApi

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

创建TraderApi实例。如果创建多个api实例，则每个实例的flow目录都要区分开，否则可能会导致报单回报丢失。

◇ 1.函数原型

static CThostFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = "");

回到顶部

◇ 2.参数

pszFlowPath：常量字符指针，用于指定一个文件目录来存贮交易托管系统发布消息的状态。默认值代表当前目录。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

//初始化api
CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("flow\\01\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
pUserApi->RegisterFront("tcp://127.0.0.1:41205");
pUserApi->Init();
//创建第二个api实例，要区分开flow目录
CThostFtdcTraderApi *pUserApi2 = CThostFtdcTraderApi::CreateFtdcTraderApi("flow\\02\\");

回到顶部

◇ 5.FAQ

“RuntimeError:can not open CFlow file in line 279 of file ....\source\userapi\ThostFtdcUserApiImplBase.cpp” 报错是什么意思？

程序运行之前，flow目录必须提前创建好，否则会报错。


GetApiVersion

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

获取API的版本信息

◇ 1.函数原型

virtual const char *GetApiVersion() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

返回具体的版本号，如（v6.3.11_20180109 14:59:39）

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
LOG(pUserApi->GetApiVersion());
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
pUserApi->RegisterFront(“tcp://127.0.0.1:51205”);
pUserApi->Init();

回到顶部

◇ 5.FAQ

无


GetTradingDay

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

获得当前交易日。只有当登陆成功后才会取到正确的值。

◇ 1.函数原型

virtual const char *GetTradingDay() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

返回一个指向日期信息字符串的常量指针。

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
pUserApi->RegisterFront(“tcp://127.0.0.1:51205”);
pUserApi->Init();
WaitForSingleObject(g_LoginSig, INFINITE); //等待登陆成功后
printf(pUserApi->GetTradingDay()); //获取交易日

回到顶部

◇ 5.FAQ

无


Init

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

使客户端开始与交易托管系统建立连接，连接成功后可以进行登陆。

非线程安全，多线程使用请加锁。

◇ 1.函数原型

virtual void Init() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
pUserApi->RegisterFront(“tcp://127.0.0.1:51205”);
pUserApi->Init();

回到顶部

◇ 5.FAQ

无


Join

1.函数原型

2.参数

3.返回

4.FAQ

回到顶部

< 前页 回目录 后页 >

客户端等待一个接口实例线程的结束。

◇ 1.函数原型

virtual int Join() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.FAQ

无


RegisterFensUserInfo

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

注册名字服务器用户信息，调用RegisterNameServer前需要先使用RegisterFensUserInfo设置登录模式。

详见fens连接说明

◇ 1.函数原型

virtual void RegisterFensUserInfo(CThostFtdcFensUserInfoField * pFensUserInfo) = 0;

回到顶部

◇ 2.参数

CThostFtdcFensUserInfoField：Fens用户信息

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcUserIDType | UserID | 用户代码 | 必填
TThostFtdcLoginModeType | LoginMode | 登录模式 | 必填

LoginMode：填写THOST_FTDC_LM_Trade

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
printf(pUserApi->GetApiVersion());
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
CThostFtdcFensUserInfoField pFensUserInfo = { 0 };
strcpy_s(pFensUserInfo.BrokerID, "9999");
strcpy_s(pFensUserInfo.UserID, "1000001");
pFensUserInfo.LoginMode = THOST_FTDC_LM_Trade;
pUserApi->RegisterFensUserInfo(&pFensUserInfo);
pUserApi-> RegisterNameServer("tcp://127.0.0.1:41205");
pUserApi->Init();

回到顶部

◇ 5.FAQ

无


RegisterFront

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

设置交易托管系统的网络通讯地址，交易托管系统拥有多个通信地址，但用户只需要选择一个通信地址。

也可以通过多次调用的方式注册不同的前置地址实现冗余。当交易系统断开连接时会自动从注册的地址池中择优选择一个建立连接。择优方式为以最先建立TCP连接的地址为连接地址。

◇ 1.函数原型

virtual void RegisterFront(char *pszFrontAddress) = 0;

回到顶部

◇ 2.参数

pszFrontAddress：指向后台服务器地址的指针。

服务器地址的格式为：“protocol://ipaddress:port”，如：”tcp://127.0.0.1:17001”。“tcp”代表传输协议，“127.0.0.1”代表服务器地址。”17001”代表交易端口号。

SSL前置格式：ssl://192.168.0.1:41205

TCP前置IPv4格式：tcp://192.168.0.1:41205

TCP前置IPv6格式：tcp6://fe80::20f8:aa9b:7d59:887d:35001

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow \\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
pUserApi->SubscribePrivateTopic(THOST_TERT_RESUME);
pUserApi->SubscribePublicTopic(THOST_TERT_RESUME);
//注册多个前置地址
pUserApi->RegisterFront(“tcp://192.168.1.10:51205”);
pUserApi->RegisterFront(“tcp://192.168.1.11:51205”);
pUserApi->RegisterFront(“tcp://192.168.1.12:51205”);
pUserApi->Init();

回到顶部

◇ 5.FAQ

“CTP:无此功能”是什么错？

端口如果填写错误，例如交易和行情写反，则会报。


RegisterNameServer

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

设置名字服务器网络地址。RegisterNameServer优先于RegisterFront。

调用前需要先使用RegisterFensUserInfo设置登录模式。

详见fens连接说明

◇ 1.函数原型

virtual void RegisterNameServer(char *pszNsAddress) = 0;

回到顶部

◇ 2.参数

pszNsAddress:指向后台服务器地址的指针。

服务器地址的格式为：“protocol://ipaddress:port”，如：”tcp://127.0.0.1:17001”。“tcp”代表传输协议，“127.0.0.1”代表服务器地址。”17001”代表服务器端口号。

SSL前置格式：ssl://192.168.0.1:41205

TCP前置IPv4格式：tcp://192.168.0.1:41205

TCP前置IPv6格式：tcp6://fe80::20f8:aa9b:7d59:887d:35001

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
printf(pUserApi->GetApiVersion());
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
CThostFtdcFensUserInfoField pFensUserInfo = { 0 };
strcpy_s(pFensUserInfo.BrokerID, "9999");
strcpy_s(pFensUserInfo.UserID, "1000001");
pFensUserInfo.LoginMode = THOST_FTDC_LM_Trade;
pUserApi->RegisterFensUserInfo(&pFensUserInfo);
pUserApi-> RegisterNameServer (“tcp://127.0.0.1:41205”);
pUserApi->Init();

回到顶部

◇ 5.FAQ

无


RegisterSpi

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

注册一个派生自CThostFtdcTraderSpi 接口类的实例，该实例将完成事件处理。

◇ 1.函数原型

virtual void RegisterSpi(CThostFtdcTraderSpi *pSpi) = 0;

回到顶部

◇ 2.参数

pSpi：实现了CThostFtdcTraderSpi接口的实例指针。

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\api_liu\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
pUserApi->RegisterFront(“tcp://127.0.0.1:51205”);
pUserApi->Init();

回到顶部

◇ 5.FAQ

无


RegisterUserSystemInfo

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

注册用户终端信息，用于中继服务器多连接模式

需要在终端认证成功后，用户登录前调用该接口

◇ 1.函数原型

virtual int RegisterUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;

回到顶部

◇ 2.参数

CThostFtdcUserSystemInfoField ：用户系统信息

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcUserIDType | UserID | 用户代码 | 必填
TThostFtdcClientSystemInfoType | ClientSystemInfo | 用户端系统内部信息 | 必填
TThostFtdcIPAddressType | ClientPublicIP | 终端IP端口 | 必填
TThostFtdcTimeType | ClientLoginTime | 登录成功时间 | 必填
TThostFtdcAppIDType | ClientAppID | App代码 | 必填
TThostFtdcSystemInfoLenType | ClientSystemInfoLen | 用户端系统内部信息长度 | 必填
TThostFtdcIPPortType | ClientIPPort | 终端IP端口 | 必填
TThostFtdcOldIPAddressType | reserve1 | 保留的无效字段 | 否
TThostFtdcClientLoginRemarkType | ClientLoginRemark | 客户登录备注2 | 否

ClientSystemInfoLen：存储的为加密后的用户终端系统内部信息的长度

ClientSystemInfo：存储的为加密后的用户终端系统内部信息。

ClientPublicIP：存储的为用户终端IP，由中继服务器采集和填写

ClientLoginTime：存储的为用户登录中继时间，由中继服务器采集和填写

ClientAppid：存储的为用户终端的appid，由中继服务器采集和填写

回到顶部

◇ 3.返回

0 正确

-1 字段长度不对

-2 非CTP采集的终端信息

-3 当前终端类型非多对多中继

-5 字段中存在非法字符或者长度超限

-6 采集结果字段错误

回到顶部

◇ 4.调用示例

//多对多中继终端使用流程

Step 1 终端侧采集信息 向中继发起登录 并将终端信息发送给中继

char pSystemInfo[344];
int len;
CTP_GetSystemInfo(pSystemInfo, len);

Step 2 中继收到终端的登录请求，发起终端认证

ReqAuthenticate();

Step 3 终端认证成功后，中继上报用户信息

RegisterUserSystemInfo()
{
    char pSystemInfo[344];
    int len;
    ////将从终端得到的信息赋值给下面结构体
    CThostFtdcUserSystemInfoField field;
    memset(&field, 0, sizeof(field));
    strcpy(field.BrokerID, "9999");
    strcpy(field.UserID, "00001");
    memcpy(field.ClientSystemInfo, pSystemInfo, len);
    field.ClientSystemInfoLen = len;
    strcpy(field.ClientPublicIP, "127.0.0.1");
    field.ClientIPPort = 65535;
    strcpy(field.ClientLoginTime, "11:28:28");
    strcpy(field.ClientAppID, "aaa");
    m_pUserApi->RegisterUserSystemInfo(&field);
}

Step 4 中继上报成功后，发起登录

ReqUserLogin();

Step 5 中继登录成功

回到顶部

◇ 5.FAQ

采集信息上报时候总是提示operation not permitted，这是为什么？

如果提示operation not permitted，可能是AppID类型错误。例如，直连模式的AppID，却错误调用了SubmitUserSystemInfo。

此错误不会通过特定接口返回，只在标准输出中提示，例如直接在屏幕上打印出来。

不上报采集信息，会影响登录吗？

不影响登录，CTP不做控制，但这样不符合监管要求。

多对多中继代理模式的AppID怎么填？是填RelayAppID还是ClientAppID？

认证时用relayappid，上报时填客户端的appid。

使用中继模式，已经认证成功了。用工具查看不到采集获得的信息，但是在代码里看到的pSystemInfo不为空的。这可能是什么原因？

采集不落库，基本上都是采集的数据在转储时被截断了。

一定要使用memcpy，不要把采集的数据当成字符串，他不是字符串。

还有一种常见错误，ClientSystemInfoLen不按照采集库的返回值填写，而是自己用strlen()之类的函数去获取。


Release

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

删除接口对象本身

不再使用本接口对象时,调用该函数删除接口对象

非线程安全，多线程使用请加锁。

建议使用logout函数登出，等自动重连后再重新登录，以实现api实例重复使用。不建议直接release api实例。

◇ 1.函数原型

virtual void Release() = 0;

回到顶部

◇ 2.参数

无

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

template <class TUserApi>
void CUserApiEnv<TUserApi>::UnInitialUserApi()
{
    // 释放UserApi
    if (m_pUserApi)
    {
        m_pUserApi->Release();
        m_pUserApi = NULL;
    }
    // 释放UserSpi实例
    if (m_pUserSpiImpl)
    {
        delete m_pUserSpiImpl;
        m_pUserSpiImpl = NULL;
    }
}

回到顶部

◇ 5.FAQ

无


ReqAuthenticate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

客户端认证请求，对应响应OnRspAuthenticate。如果交易系统开启了强制终端认证，则必须认证通过后才能发起登陆；如果未开启，则不需要认证即可登陆，此时如果主动去认证，不管成功或失败，也不影响后续登陆。

◇ 1.函数原型

virtual int ReqAuthenticate(CThostFtdcReqAuthenticateField *pReqAuthenticateField, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqAuthenticateField：客户端认证请求

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcUserIDType | UserID | 用户代码 | 必填
TThostFtdcProductInfoType | UserProductInfo | 用户端产品信息 | 无
TThostFtdcAuthCodeType | AuthCode | 认证码 | 必填
TThostFtdcAppIDType | AppID | App代码 | 必填

UserProductInfo：客户端的产品信息，如软件开发商、版本号等。

CTP后台用户事件中的用户登录事件所显示的用户端产品信息取自ReqAuthentication接口里的UserProductInfo，而非ReqUserLogin里的。

AuthCode：认证码需要向期货公司申请得到

AppID：必填项，不然认证失败，如果没有则要向期货公司申请，申请的AppID必须遵循监控中心规范格式

UserID：必填项，用户代码。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcReqAuthenticateField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.UserID, "1000001");
strcpy_s(a.UserProductInfo, "mytest");
strcpy_s(a.AuthCode, "MLX0LEA4L4UPUCBF");
strcpy_s(a.AppID, "mytest");
m_pUserApi->ReqAuthenticate(&a, nRequestID++);

回到顶部

◇ 5.FAQ

每次重连都需要做一遍客户端认证吗？

重新连接都需要重新认证一下。

非穿透式版本，开通了强制认证，需要申请一个认证码的。穿透式版本，也需要一个穿透式的认证码。如果想同时开通非穿透式强制认证和穿透式认证，这样就要两个认证码；但API里是只需要一个认证码，那请问这种情况怎么解决？

这种场景是不存在的，因为穿透式和非穿透式版本的api互不兼容，所以不存在用一个api去同时做新旧前置的认证。

在使用“看穿式监管信息采集评测工具”时候，发现获取到的记录数和数据库中信息的条目数不匹配。这是为什么？

数据库中的记录为乱码的话就不显示。

采集信息库是否是线程安全的？能多个线程同时调用吗？

不是线程安全的，不能同时调用。


ReqBatchOrderAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

批量报单操作请求

错误回报: OnErrRtnBatchOrderAction，OnRspBatchOrderAction

正确回报：OnRtnOrder

◇ 1.函数原型

virtual int ReqBatchOrderAction(CThostFtdcInputBatchOrderActionField *pInputBatchOrderAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputBatchOrderAction：输入批量报单操作

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 无
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 无
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcOrderActionRefType | OrderActionRef | 报单操作引用 | 无
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcFrontIDType | FrontID | 前置编号 | 无
TThostFtdcSessionIDType | SessionID | 会话编号 | 无
TThostFtdcOldIPAddressType | reserve1 | 保留的无效字段 | 否

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqCombActionInsert

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

申请组合录入请求

错误响应: OnErrRtnCombActionInsert，OnRspCombActionInsert

正确响应: OnRtnCombAction

◇ 1.函数原型

virtual int ReqCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputCombAction：输入的申请组合

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcOrderRefType | CombActionRef | 组合引用 | 选填
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 必填
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcVolumeType | Volume | 数量 | 必填
TThostFtdcFrontIDType | FrontID | 前置编号 | 无
TThostFtdcSessionIDType | SessionID | 会话编号 | 无
TThostFtdcDirectionType | Direction | 买卖方向 | 必填
TThostFtdcCombDirectionType | CombDirection | 组合指令方向 | 申请组合或者申请拆分
TThostFtdcHedgeFlagType | HedgeFlag | 投机套保标志 | 必填
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqExecOrderAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

执行宣告操作请求

错误响应: OnErrRtnExecOrderAction，OnRspExecOrderAction

正确响应: OnRtnExecOrder

◇ 1.函数原型

virtual int ReqExecOrderAction(CThostFtdcInputExecOrderActionField *pInputExecOrderAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputExecOrderAction：输入执行宣告操作

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 无
TThostFtdcOrderRefType | ExecOrderRef | 报单引用 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 必填
TThostFtdcExecOrderSysIDType | ExecOrderSysID | 执行宣告操作编号 | 与执行宣告记录该编号一致
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcOrderActionRefType | ExecOrderActionRef | 报单操作引用 | 无
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcFrontIDType | FrontID | 前置编号 | 无
TThostFtdcSessionIDType | SessionID | 会话编号 | 无
TThostFtdcActionFlagType | ActionFlag | 操作标志 | 删除
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

ActionFlag：只支持删除，不支持修改

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcInputExecOrderActionField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
a.ExecOrderActionRef = 1;
strcpy_s(a.ExecOrderRef, "00000003");
a.FrontID = 1;
a.SessionID = -7844256;
strcpy_s(a.ExchangeID, "SHFE");
strcpy_s(a.ExecOrderSysID, "         285");
a.ActionFlag = THOST_FTDC_AF_Delete;//删除
strcpy_s(a.UserID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
m_pUserApi->ReqExecOrderAction(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqExecOrderInsert

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

执行宣告录入请求

错误响应: OnErrRtnExecOrderInsert，OnRspExecOrderInsert

正确响应: OnRtnExecOrder

◇ 1.函数原型

virtual int ReqExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputExecOrder：输入的执行宣告

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcOrderRefType | ExecOrderRef | 执行宣告引用 | 选填
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcBusinessUnitType | BusinessUnit | 业务单元 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 无
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 无
TThostFtdcClientIDType | ClientID | 客户代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcVolumeType | Volume | 数量 | 必填
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcOffsetFlagType | OffsetFlag | 开平标志 | 必填
TThostFtdcHedgeFlagType | HedgeFlag | 投机套保标志 | 投机或套保
TThostFtdcActionTypeType | ActionType | 执行类型 | 必填
TThostFtdcPosiDirectionType | PosiDirection | 保留头寸申请的持仓方向 | 多头
TThostFtdcExecOrderPositionFlagType | ReservePositionFlag | 期权行权后是否保留期货头寸的标记,该字段已废弃 | 该字段已废弃，调用时不能为空
TThostFtdcExecOrderCloseFlagType | CloseFlag | 期权行权后生成的头寸是否自动平仓 | 必填
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

ExecOrderRef：需要纯数字递增，不填则ctp自动填写

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcInputExecOrderField OrderInsert = { 0 };
strcpy_s(OrderInsert.BrokerID, "9999");
strcpy_s(OrderInsert.InvestorID, "1000001");
strcpy_s(OrderInsert.InstrumentID, "rb1809");
strcpy_s(OrderInsert.ExchangeID, "SHFE");
strcpy_s(OrderInsert.ExecOrderRef, "00001");
strcpy_s(OrderInsert.UserID, "1000001");
OrderInsert.Volume = 1;
OrderInsert.RequestID = 1;
OrderInsert.OffsetFlag = THOST_FTDC_OF_Close;//开平标志
OrderInsert.HedgeFlag = THOST_FTDC_HF_Speculation;//投机套保标志
OrderInsert.ActionType = THOST_FTDC_ACTP_Exec;//执行类型类型
OrderInsert.PosiDirection = THOST_FTDC_PD_Long;//持仓多空方向类型
OrderInsert.ReservePositionFlag = THOST_FTDC_EOPF_Reserve;//期权行权后是否保留期货头寸的标记类型
OrderInsert.CloseFlag = THOST_FTDC_EOCF_NotToClose;//期权行权后生成的头寸是否自动平仓类型
m_pUserApi->ReqExecOrderInsert(&OrderInsert, nRequestID++);

回到顶部

◇ 5.FAQ

盘中通过api进行中金所行权，报错“CTP:不支持的功能”为什么？

中金所不支持通过api行权，只能盘后通过会服提交行权申请。


ReqForQuoteInsert

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

询价录入请求

错误响应: OnErrRtnForQuoteInsert，OnRspForQuoteInsert

正确响应: OnRtnForQuoteRsp

◇ 1.函数原型

virtual int ReqForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputForQuote：输入的询价

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 期权合约名称
TThostFtdcOrderRefType | ForQuoteRef | 询价引用 | 选填
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

ForQuoteRef：需要纯数字递增，不填则ctp自动填写

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcInputForQuoteField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
strcpy_s(a.UserID, "1000001");
strcpy_s(a.ExchangeID, "SHFE");
m_pUserApi->ReqForQuoteInsert(&a, nRequestID++);

回到顶部

◇ 5.FAQ

询价时报：“没有该合约的做市商”？

询价合约不对。


ReqFromBankToFutureByFuture

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起银行资金转期货请求

错误响应: OnRspFromBankToFutureByFuture

正确响应: OnRtnFromBankToFutureByFuture

◇ 1.函数原型

virtual int ReqFromBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqTransfer：转账请求

struct CThostFtdcReqTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：202001 期货发起银行资金转期货。

BankBranchID：为0000

BrokerBranchID：为空

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcReqTransferField a = { 0 };
strcpy_s(a.TradeCode, "202001");///业务功能码
strcpy_s(a.BankID, "1");
strcpy_s(a.BankBranchID, "0000");///期商代码
strcpy_s(a.BrokerID, "9999");
a.LastFragment = THOST_FTDC_LF_Yes;///最后分片标志 '0'=是最后分片
a.IdCardType = THOST_FTDC_ICT_IDCard;///证件类型
a.CustType = THOST_FTDC_CUSTT_Person;///客户类型
strcpy_s(a.BankAccount, "621485212110187");
strcpy_s(a.AccountID, "1000001");///投资者帐号
strcpy_s(a.Password, "123456");///期货密码--资金密码
a.InstallID = 1;///安装编号
a.FutureSerial = 0;///期货公司流水号
a.VerifyCertNoFlag = THOST_FTDC_YNI_No;///验证客户证件号码标志
strcpy_s(a.CurrencyID, "CNY");///币种代码
a.TradeAmount = output_num;///转帐金额
a.FutureFetchAmount = 0;///期货可取金额
a.CustFee = 0;///应收客户费用
a.BrokerFee = 0;///应收期货公司费用
a.SecuPwdFlag = THOST_FTDC_BPWDF_BlankCheck;///期货资金密码核对标志
a.RequestID = 0;///请求编号
a.TID = 0;///交易ID
m_pUserApi->ReqFromBankToFutureByFuture(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqFromFutureToBankByFuture

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起期货资金转银行请求

错误响应: OnRspFromFutureToBankByFuture

正确响应: OnRtnFromFutureToBankByFuture

◇ 1.函数原型

virtual int ReqFromFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqTransfer：转账请求

struct CThostFtdcReqTransferField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///转帐金额
    TThostFtdcTradeAmountType TradeAmount;
    ///期货可取金额
    TThostFtdcTradeAmountType FutureFetchAmount;
    ///费用支付标志
    TThostFtdcFeePayFlagType FeePayFlag;
    ///应收客户费用
    TThostFtdcCustFeeType CustFee;
    ///应收期货公司费用
    TThostFtdcFutureFeeType BrokerFee;
    ///发送方给接收方的消息
    TThostFtdcAddInfoType Message;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///转账交易状态
    TThostFtdcTransferStatusType TransferStatus;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：202002 期货发起期货资金转银行。

BankID：返回银行在期货公司的代码

BankBranchID：填0000

BrokerBranchID：为空

TradeAmount：转账金额

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcReqTransferField a = { 0 };
strcpy_s(a.TradeCode, "202002");///业务功能码
strcpy_s(a.BankID, "1");
strcpy_s(a.BankBranchID, "0000");///期商代码
strcpy_s(a.BrokerID, "9999");
a.LastFragment = THOST_FTDC_LF_Yes;///最后分片标志 '0'=是最后分片
a.SessionID = SessionID;
a.IdCardType = THOST_FTDC_ICT_IDCard;///证件类型
strcpy_s(a.IdentifiedCardNo, "310110198701011914");///证件号码
strcpy_s(a.BankAccount, "123456789");///银行帐号
strcpy_s(a.AccountID, "1000001");///投资者帐号
strcpy_s(a.Password, "123456");///期货密码
a.InstallID = 1;///安装编号
a.CustType = THOST_FTDC_CUSTT_Person;
a.VerifyCertNoFlag = THOST_FTDC_YNI_No;///验证客户证件号码标志
strcpy_s(a.CurrencyID, "CNY");///币种代码
a.TradeAmount = output_num;///转帐金额
a.FutureFetchAmount = 0;///期货可取金额
a.CustFee = 0;///应收客户费用
a.BrokerFee = 0;///应收期货公司费用
a.RequestID = 0;///请求编号
a.TID = 0;///交易ID
m_pUserApi->ReqFromFutureToBankByFuture(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqGenUserCaptcha

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户发出获取图形验证码请求，暂不支持

响应: OnRspGenUserCaptcha

◇ 1.函数原型

virtual int ReqGenUserCaptcha(CThostFtdcReqGenUserCaptchaField *pReqGenUserCaptcha, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqGenUserCaptcha：用户发出获取安全安全登陆方法请求

字段类型 | 字段名称 | 含义 | 值
TThostFtdcDateType | TradingDay | 交易日 | 无
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 无
TThostFtdcUserIDType | UserID | 用户代码 | 无

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqGenUserText

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户发出获取短信验证码请求，暂不支持

响应: OnRspGenUserText

◇ 1.函数原型

virtual int ReqGenUserText(CThostFtdcReqGenUserTextField *pReqGenUserText, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqGenUserText：用户发出获取安全安全登陆方法请求

字段类型 | 字段名称 | 含义 | 值
TThostFtdcDateType | TradingDay | 交易日 | 无
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 无
TThostFtdcUserIDType | UserID | 用户代码 | 无

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqOptionSelfCloseAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

期权自对冲操作请求

错误响应: OnErrRtnOptionSelfCloseAction，OnRspOptionSelfCloseAction

正确响应: OnRtnOptionSelfClose

◇ 1.函数原型

virtual int ReqOptionSelfCloseAction(CThostFtdcInputOptionSelfCloseActionField *pInputOptionSelfCloseAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputOptionSelfCloseAction：输入期权自对冲操作

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 无
TThostFtdcOrderRefType | OptionSelfCloseRef | 期权自对冲引用 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 必填
TThostFtdcOrderSysIDType | OptionSelfCloseSysID | 期权自对冲编号 | 必填*1，需要对应要撤的报单
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcOrderActionRefType | OptionSelfCloseActionRef | 期权自对冲操作引用 | 无
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcFrontIDType | FrontID | 前置编号 | 无
TThostFtdcSessionIDType | SessionID | 会话编号 | 无
TThostFtdcActionFlagType | ActionFlag | 操作标志 | 必填
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

OptionSelfCloseRef：对应要撤销的期权自对冲的引用

FrontID：对应要撤销的期权自对冲的前置编号

SessionID：对应要撤销的期权自对冲的会话编号

ExchangeID：对应要撤销的期权自对冲的交易所编号

ActionFlag：支持删除，不支持修改

InstrumentID：对应要撤销的期权自对冲的合约代码

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcInputOptionSelfCloseActionField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.OptionSelfCloseRef, "000000258");//期权自对冲引用
a.FrontID = 1;
a.SessionID = 6442531;
strcpy_s(a.ExchangeID, "SHFE");
a.ActionFlag = THOST_FTDC_AF_Delete;
strcpy_s(a.UserID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
m_pUserApi->ReqOptionSelfCloseAction(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqOptionSelfCloseInsert

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

期权自对冲录入请求

错误响应: OnErrRtnOptionSelfCloseInsert，OnRspOptionSelfCloseInsert

正确响应: OnRtnOptionSelfClose

◇ 1.函数原型

virtual int ReqOptionSelfCloseInsert(CThostFtdcInputOptionSelfCloseField *pInputOptionSelfClose, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputOptionSelfClose：输入的期权自对冲

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcOrderRefType | OptionSelfCloseRef | 期权自对冲引用 | 无
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcBusinessUnitType | BusinessUnit | 业务单元 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 必填
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 无
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 无
TThostFtdcClientIDType | ClientID | 客户代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcVolumeType | Volume | 数量 | 必填
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcHedgeFlagType | HedgeFlag | 投机套保标志 | 无
TThostFtdcOptSelfCloseFlagType | OptSelfCloseFlag | 期权行权的头寸是否自对冲 | 1自对冲期权仓位、2保留期权仓位、3自对冲卖方履约后的期货仓位
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

OptionSelfCloseRef：需要纯数字递增，不填则ctp自动填写

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcInputOptionSelfCloseField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
strcpy_s(a.UserID, "1000001");
a.Volume = 1;
a.HedgeFlag = THOST_FTDC_HF_Speculation;
a.OptSelfCloseFlag = THOST_FTDC_OSCF_CloseSelfOptionPosition;
strcpy_s(a.ExchangeID, "SHFE");
strcpy_s(a.AccountID, "1000001");
strcpy_s(a.CurrencyID, "CNY");
m_pUserApi->ReqOptionSelfCloseInsert(&a, nRequestID++);

回到顶部

◇ 5.FAQ

为什么报入的OptionSelfCloseRef和返回的值不同？

根据交易所规则，自对冲报单由首次报入的报单属性确定，之后不论是否对该报单进行任何操作（包括撤单和重新报单），报单的OptionSelfCloseRef都不变。


ReqOrderAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

报单操作请求

错误响应: OnRspOrderAction，OnErrRtnOrderAction

正确响应：OnRtnOrder

◇ 1.函数原型

virtual int ReqOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputOrderAction：输入报单操作

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcOrderRefType | OrderRef | 报单引用 | 必填*1
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 必填
TThostFtdcOrderSysIDType | OrderSysID | 报单编号 | 必填*2
TThostFtdcUserIDType | UserID | 用户代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcOrderActionRefType | OrderActionRef | 报单操作引用 | 必填，递增
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcFrontIDType | FrontID | 前置编号 | 必填*1
TThostFtdcSessionIDType | SessionID | 会话编号 | 必填*1
TThostFtdcVolumeType | VolumeChange | 数量变化 | 无
TThostFtdcActionFlagType | ActionFlag | 操作标志 | 必填
TThostFtdcPriceType | LimitPrice | 价格 | 无
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 无
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 无

必填*1、必填*2：两组选一组必填，能对应要撤的报单。

OrderRef：对应要撤销的那笔报单的报单引用

FrontID: 对应要撤销的那笔报单的前置编号

SessionID: 对应要撤销的那笔报单的会话编号

ExchangeID: 对应要撤销的那笔报单的交易所ID

OrderSysID: 对应要撤销的那笔报单的报单编号

ActionFlag：只支持删除，不支持修改、激活、挂起。对于由其他柜台做的激活或挂起的报单，ctp系统能正常接收。

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

//第一种方法，使用OrderSysID撤单（推荐使用）

CThostFtdcInputOrderActionField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.UserID, "1000001");
strcpy_s(a.OrderSysID, "         131");  //对应要撤报单的OrderSysID
strcpy_s(a.ExchangeID, "SHFE");
strcpy_s(a.InstrumentID, "rb1809");
ActionFlag = THOST_FTDC_AF_Delete;
m_pUserApi->ReqOrderAction(&a, nRequestID++);

//第二种方法，使用FrontID+SessionID+OrderRef撤单

CThostFtdcInputOrderActionField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.UserID, "1000001");
a.FrontID = 1;   //对应要撤报单的FrontID
a.SessionID = -788541;   //对应要撤报单的sessionid
strcpy_s(a.OrderRef, "        3");   //对应要撤报单的OrderRef
strcpy_s(a.ExchangeID, "SHFE");
strcpy_s(a.InstrumentID, "rb1809");
ActionFlag = THOST_FTDC_AF_Delete;
m_pUserApi->ReqOrderAction(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqOrderInsert

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

报单录入请求，录入错误时对应响应OnRspOrderInsert、OnErrRtnOrderInsert，正确时对应回报OnRtnOrder、OnRtnTrade。

可以录入限价单、市价单、条件单等交易所支持的指令，撤单时使用ReqOrderAction。

不支持预埋单录入，预埋单请使用ReqParkedOrderInsert。

◇ 1.函数原型

virtual int ReqOrderInsert(CThostFtdcInputOrderField *pInputOrder, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputOrder：输入报单

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcOrderRefType | OrderRef | 报单引用 | 可自定义或不填
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcCombOffsetFlagType | CombOffsetFlag | 开平标志 | 必填
TThostFtdcCombHedgeFlagType | CombHedgeFlag | 投机套保标志 | 必填
TThostFtdcDateType | GTDDate | GTD日期 | 无
TThostFtdcBusinessUnitType | BusinessUnit | 业务单元 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 必填
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 无
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 无
TThostFtdcClientIDType | ClientID | 客户代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcVolumeType | VolumeTotalOriginal | 数量 | 必填
TThostFtdcVolumeType | MinVolume | 最小成交量 | 无
TThostFtdcBoolType | IsAutoSuspend | 自动挂起标志 | 必填
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcBoolType | UserForceClose | 用户强评标志 | 无
TThostFtdcBoolType | IsSwapOrder | 互换单标志 | 必填
TThostFtdcOrderPriceTypeType | OrderPriceType | 报单价格条件 | 必填
TThostFtdcDirectionType | Direction | 买卖方向 | 必填
TThostFtdcTimeConditionType | TimeCondition | 有效期类型 | 必填
TThostFtdcVolumeConditionType | VolumeCondition | 成交量类型 | 必填
TThostFtdcContingentConditionType | ContingentCondition | 触发条件 | 必填
TThostFtdcForceCloseReasonType | ForceCloseReason | 强平原因 | 必填
TThostFtdcPriceType | LimitPrice | 价格 | 必填
TThostFtdcPriceType | StopPrice | 止损价 | 必填
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 无
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 无

OrderPriceType：确定输入的报单类型，比如限价单则填写THOST_FTDC_OPT_LimitPrice、市价单则填写THOST_FTDC_OPT_AnyPrice。

Direction：确定买卖方向

CombOffsetFlag：确定开平标志。注:上期所、能源交易所有平今指令，下平仓指令和平昨指令相同

CombHedgeFlag：确定投机套保标志 例:投机 THOST_FTDC_BHF_Speculation

TimeCondition：确定报单有效期类型 例:立即完成，否则撤销 THOST_FTDC_TC_IOC

VolumeCondition：确定成交量类型

ContingentCondition：确定触发条件

StopPrice：止损价，用于条件单的触发价格

ForceCloseReason：普通用户下单填写THOST_FTDC_FCC_NotForceClose 非强平

IsSwapOrder：互换单填1

CurrencyID：不填写默认为CNY

OrderRef：OrderRef是本地会话全局唯一编号，必须保持递增；可由用户维护，也可由系统自动填写。一定为数字。

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

MacAddress：手工填写本机Mac地址，不自动获取。

BusinessUnit：保留字段。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

//限价单:
CThostFtdcInputOrderField ord = { 0 };
strcpy_s(ord.BrokerID, “0000”);
strcpy_s(ord.InvestorID, “00001”);
strcpy_s(ord.ExchangeID, “SHFE”);
strcpy_s(ord.InstrumentID, “ag1801”);
strcpy_s(ord.UserID, “00001”);
ord.OrderPriceType = THOST_FTDC_OPT_LimitPrice;//限价
ord.Direction = THOST_FTDC_D_Buy;//买
ord.CombOffsetFlag[0] = THOST_FTDC_OF_Open;//开
ord.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;//投机
ord.LimitPrice = 100;
ord.VolumeTotalOriginal = 1;
ord.TimeCondition = THOST_FTDC_TC_GFD;///当日有效
ord.VolumeCondition = THOST_FTDC_VC_AV;///任意数量
ord.MinVolume = 1;
ord.ContingentCondition = THOST_FTDC_CC_Immediately;
ord.StopPrice = 0;
ord.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;
ord.IsAutoSuspend = 0;
m_pUserApi->ReqOrderInsert(&ord, nRequestID++);

回到顶部

◇ 5.FAQ

郑商所白糖期权的跨式和宽跨式套利指令，在ctp里如何实现？

和普通的限价单类似，不同的地方是在填写InstrumentID的时候

郑商所跨式组合（STD）: STD SR703C5300&SR703P5300

郑商所宽跨式组合（STG): STG SR703C5300&SR703P5200

支持FAK和FOK

“已撤单报单被拒绝CZCE:出错:不支持无限制期权组合订单”是什么原因？

郑商所的组合合约下单，TimeCondition应该用THOST_FTDC_TC_IOC（1）。

如果下单后遇到报错“ctp：每秒报单数超过许可数”，是什么原因？

这是由于报单频率太快被前置流控所致。投资者可询问期货公司具体的流控设置；期货公司可以自行查看FLEX"程序化交易频繁报撤单管理"中的设置，以及Front的流控配置。注意：Front的流控会放到下一秒，不会报错；FLEX"程序化交易频繁报撤单管理"中的流控会报错。

“CTP:报单错误：不允许重复报单”，是什么原因？

这是表示OrderRef没有递增。

“CTP:无此权限”，是什么原因？

这可能InvestorID填写错误，或者该InvestorID不属于UserID的组织架构下。

“CTP:交易所未处理请求超过许可数”，是什么原因？

表示报单频率过快，超过了交易所的流控。

“CTP:交易所每秒发送请求数超过许可数”，是什么原因？

表示报单频率过快，超过了交易所的流控。


ReqParkedOrderAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

预埋撤单录入请求

响应: OnRspQryParkedOrderAction

◇ 1.函数原型

virtual int ReqParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pParkedOrderAction：输入预埋单操作

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcOrderRefType | OrderRef | 报单引用 | 必填*1
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 无
TThostFtdcOrderSysIDType | OrderSysID | 报单编号 | 必填*2
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcParkedOrderActionIDType | ParkedOrderActionID | 预埋撤单单编号 | 无
TThostFtdcErrorMsgType | ErrorMsg | 错误信息 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcOrderActionRefType | OrderActionRef | 报单操作引用 | 无
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcFrontIDType | FrontID | 前置编号 | 必填*1
TThostFtdcSessionIDType | SessionID | 会话编号 | 必填*1
TThostFtdcVolumeType | VolumeChange | 数量变化 | 无
TThostFtdcErrorIDType | ErrorID | 错误代码 | 无
TThostFtdcActionFlagType | ActionFlag | 操作标志 | 必填
TThostFtdcUserTypeType | UserType | 用户类型 | 无
TThostFtdcParkedOrderStatusType | Status | 预埋单状态 | 无
TThostFtdcPriceType | LimitPrice | 价格 | 无
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

必填*1、必填*2：两组选一组必填，能对应要撤的报单。

OrderRef：对应要撤销的那笔报单的报单引用

FrontID: 对应要撤销的那笔报单的前置编号

SessionID: 对应要撤销的那笔报单的会话编号

ExchangeID: 对应要撤销的那笔报单的交易所ID

OrderSysID: 对应要撤销的那笔报单的报单编号

ActionFlag：只支持删除，不支持修改

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcParkedOrderActionField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.ExchangeID, "SHFE");
strcpy_s(a.OrderSysID, "    10061782");
strcpy_s(a.UserID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
ActionFlag = THOST_FTDC_AF_Delete;
m_pUserApi->ReqParkedOrderAction(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqParkedOrderInsert

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

预埋单录入请求

响应: OnRspParkedOrderInsert

◇ 1.函数原型

virtual int ReqParkedOrderInsert(CThostFtdcParkedOrderField *pParkedOrder, int nRequestID) = 0;

回到顶部

◇ 2.参数

pParkedOrder：预埋单

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcOrderRefType | OrderRef | 报单引用 | 自定义或不填
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcCombOffsetFlagType | CombOffsetFlag | 开平标志 | 必填
TThostFtdcCombHedgeFlagType | CombHedgeFlag | 投机套保标志 | 必填
TThostFtdcDateType | GTDDate | GTD日期 | 无
TThostFtdcBusinessUnitType | BusinessUnit | 业务单元 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 无
TThostFtdcParkedOrderIDType | ParkedOrderID | 预埋报单编号 | 无
TThostFtdcErrorMsgType | ErrorMsg | 错误信息 | 无
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 无
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 无
TThostFtdcClientIDType | ClientID | 客户代码 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcVolumeType | VolumeTotalOriginal | 数量 | 必填
TThostFtdcVolumeType | MinVolume | 最小成交量 | 无
TThostFtdcBoolType | IsAutoSuspend | 自动挂起标志 | 无
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcBoolType | UserForceClose | 用户强评标志 | 无
TThostFtdcErrorIDType | ErrorID | 错误代码 | 无
TThostFtdcBoolType | IsSwapOrder | 互换单标志 | 无
TThostFtdcOrderPriceTypeType | OrderPriceType | 报单价格条件 | 限价
TThostFtdcDirectionType | Direction | 买卖方向 | 必填
TThostFtdcTimeConditionType | TimeCondition | 有效期类型 | 当日有效
TThostFtdcVolumeConditionType | VolumeCondition | 成交量类型 | 任何数量
TThostFtdcContingentConditionType | ContingentCondition | 触发条件 | 立即
TThostFtdcForceCloseReasonType | ForceCloseReason | 强平原因 | 非强平
TThostFtdcUserTypeType | UserType | 用户类型 | 无
TThostFtdcParkedOrderStatusType | Status | 预埋单状态 | 无
TThostFtdcPriceType | LimitPrice | 价格 | 必填
TThostFtdcPriceType | StopPrice | 止损价 | 无
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

OrderRef：OrderRef是本地会话全局唯一编号，必须保持递增；可由用户维护，也可由系统自动填写。一定为数字。

OrderPriceType：确定输入的报单类型，比如限价单则填写THOST_FTDC_OPT_LimitPrice、市价单则填写THOST_FTDC_OPT_AnyPrice。

Direction：确定买卖方向

CombOffsetFlag：确定开平标志。注:上期所、能源交易所有平今指令，下平仓指令和平昨指令相同

CombHedgeFlag：确定投机套保标志 例:投机 THOST_FTDC_BHF_Speculation

TimeCondition：确定报单有效期类型 例:立即完成，否则撤销 THOST_FTDC_TC_IOC

VolumeCondition：确定成交量类型

ContingentCondition：确定触发条件

StopPrice：止损价，用于条件单的触发价格

ForceCloseReason：一般填写THOST_FTDC_FCC_NotForceClose 非强平

IsSwapOrder：用户互换单的标志，只有互换单需要填写，是互换单的则赋值为1

CurrencyID：不填写默认为CNY

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcParkedOrderField a = { 0 };
strcpy(a.BrokerID, "9999");
strcpy(a.InvestorID, "1000001");
strcpy(a.InstrumentID, "rb1809");
strcpy(a.UserID, "1000001");
strcpy(a.ExchangeID, "SHFE");
a.OrderPriceType = THOST_FTDC_OPT_LimitPrice;
a.Direction = THOST_FTDC_D_Buy;
strcpy(a.CombOffsetFlag, "0");
strcpy(a.CombHedgeFlag, "1");
a.LimitPrice = 400;
a.VolumeTotalOriginal = 1;
a.TimeCondition = THOST_FTDC_TC_GFD;
strcpy(a.GTDDate, "");
a.VolumeCondition = THOST_FTDC_VC_CV;
a.MinVolume = 0;
a.ContingentCondition = THOST_FTDC_CC_Immediately;
a.StopPrice = 0;
a.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;
a.IsAutoSuspend = 0;
m_pUserApi->ReqParkedOrderInsert(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryAccountregister

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询银期签约关系

响应: OnRspQryAccountregister

◇ 1.函数原型

virtual int ReqQryAccountregister(CThostFtdcQryAccountregisterField *pQryAccountregister, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryAccountregister：请求查询银期签约关系

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 否
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 否
TThostFtdcBankIDType | BankID | 银行代码 | 否
TThostFtdcBankBrchIDType | BankBranchID | 银行分支机构代码 | 否
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 否

字段值填写正确时，均无查询结果

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryAccountregisterField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.AccountID, "1000001");
strcpy_s(a.BankID, "1");
strcpy_s(a.CurrencyID, "CNY");
m_pUserApi->ReqQryAccountregister(&a, 1);

回到顶部

◇ 5.FAQ

无


ReqQryBrokerTradingAlgos

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询经纪公司交易算法

响应: OnRspQryBrokerTradingAlgos

◇ 1.函数原型

virtual int ReqQryBrokerTradingAlgos(CThostFtdcQryBrokerTradingAlgosField *pQryBrokerTradingAlgos, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryBrokerTradingAlgos：查询经纪公司交易算法

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryBrokerTradingParams

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询经纪公司交易参数

响应: OnRspQryBrokerTradingParams

◇ 1.函数原型

virtual int ReqQryBrokerTradingParams(CThostFtdcQryBrokerTradingParamsField *pQryBrokerTradingParams, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryBrokerTradingParams：查询经纪公司交易参数

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 是
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryBrokerTradingParamsField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
m_pUserApi->ReqQryBrokerTradingParams(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryCFMMCTradingAccountKey

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询保证金监管系统经纪公司资金账户密钥，此接口已弃用，请使用ReqQueryCFMMCTradingAccountToken查询。

响应: OnRspQryCFMMCTradingAccountKey

◇ 1.函数原型

virtual int ReqQryCFMMCTradingAccountKey(CThostFtdcQryCFMMCTradingAccountKeyField *pQryCFMMCTradingAccountKey, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryCFMMCTradingAccountKey：请求查询保证金监管系统经纪公司资金账户密钥

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 否
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 否

接口弃用

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryCFMMCTradingAccountKeyField a = { 0 };
strcpy(a.BrokerID, "9999");
strcpy(a.InvestorID, "1000001");
m_pUserApi->ReqQryCFMMCTradingAccountKey(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryCombAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询申请组合

响应: OnRspQryCombAction

◇ 1.函数原型

virtual int ReqQryCombAction(CThostFtdcQryCombActionField *pQryCombAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryCombAction：申请组合查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryCombActionField a = { 0 };
strcpy(a.BrokerID, "9999");
strcpy(a.InvestorID, "1000001");
strcpy(a.InstrumentID, "rb1809");//不填写则返回全部
strcpy(a.ExchangeID, "SHFE");
m_pUserApi->ReqQryCombAction(&a, 1);

回到顶部

◇ 5.FAQ

无


ReqQryCombInstrumentGuard

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询组合合约安全系数

响应：OnRspQryCombInstrumentGuard

◇ 1.函数原型

virtual int ReqQryCombInstrumentGuard(CThostFtdcQryCombInstrumentGuardField *pQryCombInstrumentGuard, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryCombInstrumentGuard：组合合约安全系数查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 否
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 否
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryContractBank

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询签约银行

响应: OnRspQryContractBank

◇ 1.函数原型

virtual int ReqQryContractBank(CThostFtdcQryContractBankField *pQryContractBank, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryContractBank：查询签约银行请求

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcBankIDType | BankID | 银行代码 | 是
TThostFtdcBankBrchIDType | BankBrchID | 银行分中心代码 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryContractBankField a = { 0 };
strcpy_s(a.BrokerID, "9999");
m_pUserApi->ReqQryContractBank(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryDepthMarketData

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询行情，只能查询当前快照，不能查询历史行情。

响应: OnRspQryDepthMarketData

◇ 1.函数原型

virtual int ReqQryDepthMarketData(CThostFtdcQryDepthMarketDataField *pQryDepthMarketData, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryDepthMarketData：查询行情

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryEWarrantOffset

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询仓单折抵信息

响应: OnRspQryEWarrantOffset

◇ 1.函数原型

virtual int ReqQryEWarrantOffset(CThostFtdcQryEWarrantOffsetField *pQryEWarrantOffset, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryEWarrantOffset：查询仓单折抵信息

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryExchange

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易所

响应: OnRspQryExchange

◇ 1.函数原型

virtual int ReqQryExchange(CThostFtdcQryExchangeField *pQryExchange, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryExchange：查询交易所

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryExchangeMarginRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易所保证金率

响应: OnRspQryExchangeMarginRate

◇ 1.函数原型

virtual int ReqQryExchangeMarginRate(CThostFtdcQryExchangeMarginRateField *pQryExchangeMarginRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryExchangeMarginRate：查询交易所保证金率

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcHedgeFlagType | HedgeFlag | 投机套保标志 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryExchangeMarginRateAdjust

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易所调整保证金率

响应: OnRspQryExchangeMarginRateAdjust

◇ 1.函数原型

virtual int ReqQryExchangeMarginRateAdjust(CThostFtdcQryExchangeMarginRateAdjustField *pQryExchangeMarginRateAdjust, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryExchangeMarginRateAdjust：查询交易所调整保证金率

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcHedgeFlagType | HedgeFlag | 投机套保标志 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryExchangeRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询汇率

响应：OnRspQryExchangeRate

◇ 1.函数原型

virtual int ReqQryExchangeRate(CThostFtdcQryExchangeRateField *pQryExchangeRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryExchangeRate：查询汇率

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcCurrencyIDType | FromCurrencyID | 源币种 | 是
TThostFtdcCurrencyIDType | ToCurrencyID | 目标币种 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryExecOrder

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询执行宣告

响应: OnRspQryExecOrder

◇ 1.函数原型

virtual int ReqQryExecOrder(CThostFtdcQryExecOrderField *pQryExecOrder, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryExecOrder：执行宣告查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcExecOrderSysIDType | ExecOrderSysID | 报单编号 | 是
TThostFtdcTimeType | InsertTimeStart | 开始时间 | 是
TThostFtdcTimeType | InsertTimeEnd | 结束时间 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryExecOrderField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
strcpy_s(a.ExchangeID, "SHFE");
m_pUserApi->ReqQryExecOrder(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryForQuote

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询询价

响应：OnRspQryForQuote

◇ 1.函数原型

virtual int ReqQryForQuote(CThostFtdcQryForQuoteField *pQryForQuote, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryForQuote：询价查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcTimeType | InsertTimeStart | 开始时间 | 是
TThostFtdcTimeType | InsertTimeEnd | 结束时间 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryInstrument

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询合约，填空可以查询到所有合约。

响应:OnRspQryInstrument

◇ 1.函数原型

virtual int ReqQryInstrument(CThostFtdcQryInstrumentField *pQryInstrument, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInstrument：查询合约

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcExchangeInstIDType | ExchangeInstID | 合约在交易所的代码 | 是
TThostFtdcInstrumentIDType | ProductID | 产品代码 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldExchangeInstIDType | reserve2 | 保留的无效字段 | 否
TThostFtdcOldInstrumentIDType | reserve3 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryInstrumentField a = { 0 };
strcpy_s(a.InstrumentID, "rb1809");
strcpy_s(a.ExchangeID, "SHFE");
m_pUserApi->ReqQryInstrument(&a, nRequestID++);

回到顶部

◇ 5.FAQ

为何查询不到郑商所跨式和宽跨式套利合约？

郑商所没有推跨式和宽跨式套利合约，所以查询不到此类合约。

为何查询中金所的EFP（期转现）合约，InstrumentName为空？

交易所就没有推送instrumentname。


ReqQryInstrumentCommissionRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询合约手续费率，对应响应OnRspQryInstrumentCommissionRate。如果InstrumentID填空，则返回持仓对应的合约手续费率。

目前无法通过一次查询得到所有合约手续费率，如果要查询所有，则需要通过多次查询得到。

◇ 1.函数原型

virtual int ReqQryInstrumentCommissionRate(CThostFtdcQryInstrumentCommissionRateField *pQryInstrumentCommissionRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInstrumentCommissionRate：查询手续费率

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

InstrumentID：返回手续费率对应的合约。

但是如果在柜台没有设置具体合约的手续费率，则默认会返回产品的手续费率，InstrumentID就为对应产品ID。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryInstrumentCommissionRateField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
m_pUserApi->ReqQryInstrumentCommissionRate(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryInstrumentMarginRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询合约保证金率，对应响应OnRspQryInstrumentMarginRate。如果InstrumentID填空，则返回持仓对应的合约保证金率，否则返回相应InstrumentID的保证金率。

目前无法通过一次查询得到所有合约保证金率，如果要查询所有，则需要通过多次查询得到。

◇ 1.函数原型

virtual int ReqQryInstrumentMarginRate(CThostFtdcQryInstrumentMarginRateField *pQryInstrumentMarginRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInstrumentMarginRate：查询合约保证金率

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 投机套保标志 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 交易所代码 | 否
TThostFtdcHedgeFlagType | HedgeFlag | 投资单元代码 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryInstrumentMarginRateField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
a.HedgeFlag = THOST_FTDC_HF_Speculation;
m_pUserApi->ReqQryInstrumentMarginRate(&a, 1);

回到顶部

◇ 5.FAQ

无


ReqQryInstrumentOrderCommRate

1.说明

2.函数原型

3.参数

4.返回

5.调用示例

6.FAQ

回到顶部

< 前页 回目录 后页 >

◇ 1.说明

请求查询报单手续费

响应: OnRspQryInstrumentOrderCommRate

回到顶部

◇ 2.函数原型

virtual int ReqQryInstrumentOrderCommRate(CThostFtdcQryInstrumentOrderCommRateField *pQryInstrumentOrderCommRate, int nRequestID) = 0;

回到顶部

◇ 3.参数

pQryInstrumentOrderCommRate：报单手续费率查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 4.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 5.调用示例

CThostFtdcQryInstrumentOrderCommRateField a = { 0 };
strcpy(a.BrokerID, "9999");
strcpy(a.InvestorID, "1000001");
strcpy(a.InstrumentID, "rb1809");
m_pUserApi->ReqQryInstrumentOrderCommRate(&a, 1);

回到顶部

◇ 6.FAQ

无


ReqQryInvestor

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者

响应：OnRspQryInvestor

◇ 1.函数原型

virtual int ReqQryInvestor(CThostFtdcQryInvestorField *pQryInvestor, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInvestor：查询投资者

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryInvestorField a = { 0 };
strcpy(a.BrokerID, "9999");
strcpy(a.InvestorID, "1000001");
m_pUserApi->ReqQryInvestor(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryInvestorPosition

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者持仓，对应响应OnRspQryInvestorPosition。CTP系统将持仓明细记录按合约，持仓方向，开仓日期（仅针对上期所和能源所，区分昨仓、今仓）进行汇总。

◇ 1.函数原型

virtual int ReqQryInvestorPosition(CThostFtdcQryInvestorPositionField *pQryInvestorPosition, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInvestorPosition：查询投资者持仓

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryInvestorPositionField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");//不填写合约则返回所有持仓
m_pUserApi->ReqQryInvestorPosition(&a, 1);

回到顶部

◇ 5.FAQ

无


ReqQryInvestorPositionCombineDetail

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者持仓明细

响应: OnRspQryInvestorPositionCombineDetail

◇ 1.函数原型

virtual int ReqQryInvestorPositionCombineDetail(CThostFtdcQryInvestorPositionCombineDetailField *pQryInvestorPositionCombineDetail, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInvestorPositionCombineDetail：查询组合持仓明细

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | CombInstrumentID | 组合持仓合约编码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryInvestorPositionDetail

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者持仓明细，对应响应OnRspQryInvestorPositionDetail。

CTP系统根据来自交易所的成交记录生成持仓明细记录，一笔成交记录对应一条持仓明细记录。

◇ 1.函数原型

virtual int ReqQryInvestorPositionDetail(CThostFtdcQryInvestorPositionDetailField *pQryInvestorPositionDetail, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInvestorPositionDetail：查询投资者持仓明细

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryInvestorProductGroupMargin

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者品种/跨品种保证金

响应: OnRspQryInvestorProductGroupMargin

◇ 1.函数原型

virtual int ReqQryInvestorProductGroupMargin(CThostFtdcQryInvestorProductGroupMarginField *pQryInvestorProductGroupMargin, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInvestorProductGroupMargin：查询投资者品种/跨品种保证金

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | ProductGroupID | 品种 | 是
TThostFtdcExchangeIDType | ExchangeID | 投机套保标志 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 交易所代码 | 否
TThostFtdcHedgeFlagType | HedgeFlag | 投资单元代码 | 不需要填写
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryInvestUnit

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资单元，暂不支持此功能

响应: OnRspQryInvestUnit

◇ 1.函数原型

virtual int ReqQryInvestUnit(CThostFtdcQryInvestUnitField *pQryInvestUnit, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryInvestUnit：查询投资单元

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 否
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryMMInstrumentCommissionRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询做市商合约手续费率

响应: OnRspQryMMInstrumentCommissionRate

◇ 1.函数原型

virtual int ReqQryMMInstrumentCommissionRate(CThostFtdcQryMMInstrumentCommissionRateField *pQryMMInstrumentCommissionRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryMMInstrumentCommissionRate：查询做市商合约手续费率

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryMMOptionInstrCommRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询做市商期权合约手续费

响应: OnRspQryMMOptionInstrCommRate

◇ 1.函数原型

virtual int ReqQryMMOptionInstrCommRate(CThostFtdcQryMMOptionInstrCommRateField *pQryMMOptionInstrCommRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryMMOptionInstrCommRate：做市商期权手续费率查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryNotice

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询客户通知

响应: OnRspQryNotice

◇ 1.函数原型

virtual int ReqQryNotice(CThostFtdcQryNoticeField *pQryNotice, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryNotice：查询客户通知

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryOptionInstrCommRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询期权合约手续费

响应: OnRspQryOptionInstrCommRate

◇ 1.函数原型

virtual int ReqQryOptionInstrCommRate(CThostFtdcQryOptionInstrCommRateField *pQryOptionInstrCommRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryOptionInstrCommRate：期权手续费率查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryOptionInstrCommRateField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
m_pUserApi->ReqQryOptionInstrCommRate(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryOptionInstrTradeCost

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询期权交易成本，该函数用于查期权保证金，对应响应OnRspQryOptionInstrTradeCost。

保证金=max(权利金+FixedMargin,MiniMargin)，用户可根据此公式计算实时保证金。

◇ 1.函数原型

virtual int ReqQryOptionInstrTradeCost(CThostFtdcQryOptionInstrTradeCostField *pQryOptionInstrTradeCost, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryOptionInstrTradeCost：期权交易成本查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcHedgeFlagType | HedgeFlag | 投机套保标志 | 是
TThostFtdcPriceType | InputPrice | 期权合约报价 | 是
TThostFtdcPriceType | UnderlyingPrice | 标的价格,填0则用昨结算价 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryOptionInstrTradeCostField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
a.HedgeFlag = THOST_FTDC_HF_Speculation;
a.InputPrice = 300;
m_pUserApi->ReqQryOptionInstrTradeCost(&a, nRequestID++);

回到顶部

◇ 5.FAQ

为什么我用这个接口算出来的保证金跟资金查询得到的保证金占用不一致？

ReqQryOptionInstrTradeCost计算出的期权保证金跟资金查询里的期权保证金的计算方式不一样。

ReqQryOptionInstrTradeCost只是估计计算，因为其使用的公式（保证金=max(权利金+FixedMargin,MiniMargin)）中的权利金部分在计算时使用的期权价格是InputPrice。

而资金查询里的期权保证金计算公式中的期权价格是使用max算法（max(昨结算，最新价)）得到的。

所以两者存在差别。


ReqQryOptionSelfClose

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询期权自对冲

响应: OnRspQryOptionSelfClose

◇ 1.函数原型

virtual int ReqQryOptionSelfClose(CThostFtdcQryOptionSelfCloseField *pQryOptionSelfClose, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryOptionSelfClose：期权自对冲查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcOrderSysIDType | OptionSelfCloseSysID | 期权自对冲编号 | 是
TThostFtdcTimeType | InsertTimeStart | 开始时间 | 是
TThostFtdcTimeType | InsertTimeEnd | 结束时间 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

OnRspQryOptionSelfClose：由此能定位一笔期权自对冲的报单

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryOptionSelfCloseField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
strcpy_s(a.ExchangeID, "SHFE");
m_pUserApi->ReqQryOptionSelfClose(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryOrder

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询报单

响应: OnRspQryOrder

◇ 1.函数原型

virtual int ReqQryOrder(CThostFtdcQryOrderField *pQryOrder, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryOrder：查询报单

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcOrderSysIDType | OrderSysID | 报单编号 | 是
TThostFtdcTimeType | InsertTimeStart | 开始时间 | 是
TThostFtdcTimeType | InsertTimeEnd | 结束时间 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryOrderField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.ExchangeID, "SHFE");
m_pUserApi->ReqQryOrder(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryParkedOrder

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询预埋单

响应: OnRspQryParkedOrder

◇ 1.函数原型

virtual int ReqQryParkedOrder(CThostFtdcQryParkedOrderField *pQryParkedOrder, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryParkedOrder：查询预埋单

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryParkedOrderAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询预埋撤单

响应: OnRspQryParkedOrderAction

◇ 1.函数原型

virtual int ReqQryParkedOrderAction(CThostFtdcQryParkedOrderActionField *pQryParkedOrderAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryParkedOrderAction：查询预埋撤单

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryProduct

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询产品

响应: OnRspQryProduct

◇ 1.函数原型

virtual int ReqQryProduct(CThostFtdcQryProductField *pQryProduct, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryProduct：查询产品

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcInstrumentIDType | ProductID | 产品代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 产品类型 | 否
TThostFtdcProductClassType | ProductClass | 交易所代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryProductField a = { 0 };
strcpy_s(a.ProductID, "sc");
a.ProductClass = THOST_FTDC_PC_Futures;
strcpy_s(a.ExchangeID, "SHFE");
m_pUserApi->ReqQryProduct(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryProductExchRate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询产品报价汇率

响应: OnRspQryProductExchRate

◇ 1.函数原型

virtual int ReqQryProductExchRate(CThostFtdcQryProductExchRateField *pQryProductExchRate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryProductExchRate：产品报价汇率查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcInstrumentIDType | ProductID | 产品代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryProductGroup

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询产品组

响应: OnRspQryProductGroup

◇ 1.函数原型

virtual int ReqQryProductGroup(CThostFtdcQryProductGroupField *pQryProductGroup, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryProductGroup：查询产品组

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcInstrumentIDType | ProductID | 产品代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryQuote

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询报价

响应: OnRspQryQuote

◇ 1.函数原型

virtual int ReqQryQuote(CThostFtdcQryQuoteField *pQryQuote, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryQuote：报价查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcOrderSysIDType | QuoteSysID | 报价编号 | 是
TThostFtdcTimeType | InsertTimeStart | 开始时间 | 是
TThostFtdcTimeType | InsertTimeEnd | 结束时间 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQrySecAgentACIDMap

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询二级代理操作员银期权限

响应: OnRspQrySecAgentACIDMap

◇ 1.函数原型

virtual int ReqQrySecAgentACIDMap(CThostFtdcQrySecAgentACIDMapField *pQrySecAgentACIDMap, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQrySecAgentACIDMap：二级代理操作员银期权限查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcUserIDType | UserID | 用户代码 | 是
TThostFtdcAccountIDType | AccountID | 资金账户 | 是
TThostFtdcCurrencyIDType | CurrencyID | 币种 | 是

使用二级代理商操作员管理的投资者进行查询，字段值填写正确时，均无查询结果。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQrySecAgentCheckMode

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询二级代理商资金校验模式

响应: OnRspQrySecAgentCheckMode

◇ 1.函数原型

virtual int ReqQrySecAgentCheckMode(CThostFtdcQrySecAgentCheckModeField *pQrySecAgentCheckMode, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQrySecAgentCheckMode：查询二级代理商资金校验模式

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是

使用二级代理商操作员管理的投资者进行查询，字段值填写正确时，有查询结果。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQrySecAgentTradeInfo

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询二级代理商信息

响应: OnRspQrySecAgentTradeInfo

◇ 1.函数原型

virtual int ReqQrySecAgentTradeInfo(CThostFtdcQrySecAgentTradeInfoField *pQrySecAgentTradeInfo, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQrySecAgentTradeInfo：查询二级代理商信息

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcAccountIDType | BrokerSecAgentID | 境外中介机构资金帐号 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQrySecAgentTradingAccount

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询资金账户

响应: OnRspQrySecAgentTradingAccount

◇ 1.函数原型

virtual int ReqQrySecAgentTradingAccount(CThostFtdcQryTradingAccountField *pQryTradingAccount, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryTradingAccount：请求查询资金账户

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 否
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 否
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 否
TThostFtdcAccountIDType | AccountID | 业务类型 | 否
TThostFtdcBizTypeType | BizType | 投资者帐号 | 否

使用二级代理商操作员管理的投资者进行查询，字段值填写正确时，均无查询结果。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQrySettlementInfo

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询投资者结算结果，对应响应OnRspQrySettlementInfo。可以查询当天或历史结算单，也可以查询月结算单，但是前提是CTP柜台生成了相应的日或月结算单。

◇ 1.函数原型

virtual int ReqQrySettlementInfo(CThostFtdcQrySettlementInfoField *pQrySettlementInfo, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQrySettlementInfo：查询投资者结算结果

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcDateType | TradingDay | 交易日 | 是
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 否
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 否

TradingDay：查询某一天的结算单，填写格式为“yyyymmdd”；查询某一月的结算单，填写格式为“yyyymm”

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQrySettlementInfoField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.TradingDay,“20180101”);
m_pUserApi->ReqQrySettlementInfo(&a, nRequestID++);

回到顶部

◇ 5.FAQ

为什么我查不到月结单？

这有可能是CTP系统里没有生成你的月结算单。CTP的日结算单是需要每天结算的时候业务人员去点击生成的，月结算单也是需要定期生成的。


ReqQrySettlementInfoConfirm

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询结算信息确认

响应: OnRspQrySettlementInfoConfirm

◇ 1.函数原型

virtual int ReqQrySettlementInfoConfirm(CThostFtdcQrySettlementInfoConfirmField *pQrySettlementInfoConfirm, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQrySettlementInfoConfirm：查询结算信息确认域

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 否
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryTrade

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询成交

响应: OnRspQryTrade

◇ 1.函数原型

virtual int ReqQryTrade(CThostFtdcQryTradeField *pQryTrade, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryTrade：查询成交

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcTradeIDType | TradeID | 成交编号 | 是
TThostFtdcTimeType | TradeTimeStart | 开始时间 | 是
TThostFtdcTimeType | TradeTimeEnd | 结束时间 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryTradingAccount

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询资金账户，

响应: OnRspQryTradingAccount

◇ 1.函数原型

virtual int ReqQryTradingAccount(CThostFtdcQryTradingAccountField *pQryTradingAccount, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryTradingAccount：查询资金账户

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 是
TThostFtdcAccountIDType | AccountID | 业务类型 | 否
TThostFtdcBizTypeType | BizType | 投资者帐号 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryTradingAccountField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.CurrencyID, "CNY");
m_pUserApi->ReqQryTradingAccount(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQryTradingCode

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易编码

响应: OnRspQryTradingCode

◇ 1.函数原型

virtual int ReqQryTradingCode(CThostFtdcQryTradingCodeField *pQryTradingCode, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryTradingCode：查询交易编码

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 是
TThostFtdcClientIDType | ClientID | 客户代码 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcClientIDTypeType | ClientIDType | 交易编码类型 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryTradingNotice

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询交易通知

响应: OnRspQryTradingNotice

◇ 1.函数原型

virtual int ReqQryTradingNotice(CThostFtdcQryTradingNoticeField *pQryTradingNotice, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryTradingNotice：查询交易事件通知

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryTransferBank

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询转帐银行

响应: OnRspQryTransferBank

◇ 1.函数原型

virtual int ReqQryTransferBank(CThostFtdcQryTransferBankField *pQryTransferBank, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryTransferBank：查询转帐银行

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBankIDType | BankID | 银行代码 | 是
TThostFtdcBankBrchIDType | BankBrchID | 银行分中心代码 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryTransferSerial

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询转帐流水。

响应：OnRspQryTransferSerial

◇ 1.函数原型

virtual int ReqQryTransferSerial(CThostFtdcQryTransferSerialField *pQryTransferSerial, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryTransferSerial：请求查询转帐流水

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 是
TThostFtdcBankIDType | BankID | 银行代码 | 是
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryTransferSerialField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.AccountID, "1000001");
strcpy_s(a.BankID, “1”);
strcpy_s(a.CurrencyID, "CNY");
m_pUserApi->ReqQryTransferSerial(&a, nRequestID++);

回到顶部

◇ 5.FAQ

我在柜台上做了手工出入金，通过这个接口查不到？

ReqQryTransferSerial不能查柜台手工出入金，只能查询到期货发起期货转银行或者银行转期货的内容。


ReqQueryBankAccountMoneyByFuture

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

期货发起查询银行余额请求

错误响应: OnRspQueryBankAccountMoneyByFuture

正确响应: OnRtnQueryBankBalanceByFuture

◇ 1.函数原型

virtual int ReqQueryBankAccountMoneyByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqQueryAccount：查询账户信息请求

struct CThostFtdcReqQueryAccountField
{
    ///业务功能码
    TThostFtdcTradeCodeType TradeCode;
    ///银行代码
    TThostFtdcBankIDType BankID;
    ///银行分支机构代码
    TThostFtdcBankBrchIDType BankBranchID;
    ///期商代码
    TThostFtdcBrokerIDType BrokerID;
    ///期商分支机构代码
    TThostFtdcFutureBranchIDType BrokerBranchID;
    ///交易日期
    TThostFtdcTradeDateType TradeDate;
    ///交易时间
    TThostFtdcTradeTimeType TradeTime;
    ///银行流水号
    TThostFtdcBankSerialType BankSerial;
    ///交易系统日期
    TThostFtdcTradeDateType TradingDay;
    ///银期平台消息流水号
    TThostFtdcSerialType PlateSerial;
    ///最后分片标志
    TThostFtdcLastFragmentType LastFragment;
    ///会话号
    TThostFtdcSessionIDType SessionID;
    ///客户姓名
    TThostFtdcIndividualNameType CustomerName;
    ///证件类型
    TThostFtdcIdCardTypeType IdCardType;
    ///证件号码
    TThostFtdcIdentifiedCardNoType IdentifiedCardNo;
    ///客户类型
    TThostFtdcCustTypeType CustType;
    ///银行帐号
    TThostFtdcBankAccountType BankAccount;
    ///银行密码
    TThostFtdcPasswordType BankPassWord;
    ///投资者帐号
    TThostFtdcAccountIDType AccountID;
    ///期货密码
    TThostFtdcPasswordType Password;
    ///期货公司流水号
    TThostFtdcFutureSerialType FutureSerial;
    ///安装编号
    TThostFtdcInstallIDType InstallID;
    ///用户标识
    TThostFtdcUserIDType UserID;
    ///验证客户证件号码标志
    TThostFtdcYesNoIndicatorType VerifyCertNoFlag;
    ///币种代码
    TThostFtdcCurrencyIDType CurrencyID;
    ///摘要
    TThostFtdcDigestType Digest;
    ///银行帐号类型
    TThostFtdcBankAccTypeType BankAccType;
    ///渠道标志
    TThostFtdcDeviceIDType DeviceID;
    ///期货单位帐号类型
    TThostFtdcBankAccTypeType BankSecuAccType;
    ///期货公司银行编码
    TThostFtdcBankCodingForFutureType BrokerIDByBank;
    ///期货单位帐号
    TThostFtdcBankAccountType BankSecuAcc;
    ///银行密码标志
    TThostFtdcPwdFlagType BankPwdFlag;
    ///期货资金密码核对标志
    TThostFtdcPwdFlagType SecuPwdFlag;
    ///交易柜员
    TThostFtdcOperNoType OperNo;
    ///请求编号
    TThostFtdcRequestIDType RequestID;
    ///交易ID
    TThostFtdcTIDType TID;
    ///长客户姓名
    TThostFtdcLongIndividualNameType LongCustomerName;
};

TradeCode：204002 期货发起查询银行余额

BankBranchID：填0000

InstallID：ctp内部使用，不用填

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQueryCFMMCTradingAccountToken

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询监控中心用户令牌，对应响应OnRspQueryCFMMCTradingAccountToken、OnRtnCFMMCTradingAccountToken。

◇ 1.函数原型

virtual int ReqQueryCFMMCTradingAccountToken(CThostFtdcQueryCFMMCTradingAccountTokenField *pQueryCFMMCTradingAccountToken, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQueryCFMMCTradingAccountToken：查询监控中心用户令牌

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryMaxOrderVolume

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

查询最大报单数量请求，对应响应OnRspQryMaxOrderVolume。

虽然ReqQryMaxOrderVolume可以查询可开，但是交易核心在计算的时候是没有算手续费的，所以不完全准，计算逻辑是按照昨结算价计算的可开；如果需要精确结果的，建议自行计算。另外，可平的查询是已经排除了冻结持仓的。

◇ 1.函数原型

virtual int ReqQryMaxOrderVolume(CThostFtdcQryMaxOrderVolumeField *pQryMaxOrderVolume, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryMaxOrderVolume：查询最大报单数量

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 是
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 否
TThostFtdcVolumeType | MaxVolume | 最大允许报单数量 | 否
TThostFtdcDirectionType | Direction | 买卖方向 | 是
TThostFtdcOffsetFlagType | OffsetFlag | 开平标志 | 是
TThostFtdcHedgeFlagType | HedgeFlag | 投机套保标志 | 是
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否

MaxVolume：取值结果为，min（可开/可平，限价单最大下单量）；可开根据昨结算价计算得出。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcQryMaxOrderVolumeField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.InstrumentID, "rb1809");
a.Direction = THOST_FTDC_D_Buy;
a.OffsetFlag = THOST_FTDC_OF_Open;
a.HedgeFlag = THOST_FTDC_HF_Speculation;
a.MaxVolume = 1;
m_pUserApi->ReqQryMaxOrderVolume(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQuoteAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

报价操作请求，用于撤销报价

错误响应:OnRspQuoteAction OnErrRtnQuoteAction

正确响应:OnRtnQuote OnRtnOrder

◇ 1.函数原型

virtual int ReqQuoteAction(CThostFtdcInputQuoteActionField *pInputQuoteAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputQuoteAction：输入报价操作

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填*2
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 无
TThostFtdcOrderRefType | QuoteRef | 报价引用 | 必填*1
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 必填*2
TThostFtdcOrderSysIDType | QuoteSysID | 报价编号 | 必填*2
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填*1
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcClientIDType | ClientID | 客户代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcOrderActionRefType | QuoteActionRef | 报价操作引用 | 无
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcFrontIDType | FrontID | 前置编号 | 必填*1
TThostFtdcSessionIDType | SessionID | 会话编号 | 必填*1
TThostFtdcActionFlagType | ActionFlag | 操作标志 | 必填
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否

必填*1、必填*2：两组选一组必填，能对应要撤的报价单。

FrontID：对应要撤销的报价的前置编号

SessionID：对应要撤销的报价的会话编号

QuoteSysID: 对应要撤销的报价的编号

ActionFlag：操作标志，支持删除，目前不支持改单。想实现改单操作可以先撤销之后再重新报单。

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcInputQuoteActionField t = { 0 };
strcpy_s(t.BrokerID, "9999");
strcpy_s(t.InvestorID, "1000001");
strcpy_s(t.UserID, "1000001");
strcpy_s(t.ExchangeID, "SHFE");
strcpy_s(t.QuoteRef, "           1");
t.FrontID = 1;
t.SessionID = 6442531;
t.ActionFlag = THOST_FTDC_AF_Delete;
strcpy_s(t.InstrumentID, "rb1809");
m_pUserApi->ReqQuoteAction(&t, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqQuoteInsert

1.函数原型

2.参数

3.返回

4.示例调用

5.FAQ

回到顶部

< 前页 回目录 后页 >

报价录入请求，如果出错，则返回响应OnRspQuoteInsert和OnErrRtnQuoteInsert；正确则推送OnRtnQuote、OnRtnOrder和OnRtnTrade。

单边报价和双边报价，都是用一个接口 ReqQuoteInsert。

在单边报价的时候，只需要另一边的数量填0，交易核心就能区分开。另外，无论是单边还是双边，Ask/BidOrderRef都是要填的。

◇ 1.函数原型

virtual int ReqQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, int nRequestID) = 0;

回到顶部

◇ 2.参数

pInputQuote：输入的报价

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 必填
TThostFtdcOrderRefType | QuoteRef | 报价引用 | 无
TThostFtdcUserIDType | UserID | 用户代码 | 无
TThostFtdcBusinessUnitType | BusinessUnit | 业务单元 | 无
TThostFtdcOrderRefType | AskOrderRef | 衍生卖报单引用 | 选填
TThostFtdcOrderRefType | BidOrderRef | 衍生买报单引用 | 选填
TThostFtdcOrderSysIDType | ForQuoteSysID | 应价编号 | 无
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 无
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无
TThostFtdcClientIDType | ClientID | 客户代码 | 无
TThostFtdcIPAddressType | IPAddress | IP地址 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcVolumeType | AskVolume | 卖数量 | 必填
TThostFtdcVolumeType | BidVolume | 买数量 | 必填
TThostFtdcRequestIDType | RequestID | 请求编号 | 无
TThostFtdcOffsetFlagType | AskOffsetFlag | 卖开平标志 | 必填
TThostFtdcOffsetFlagType | BidOffsetFlag | 买开平标志 | 必填
TThostFtdcHedgeFlagType | AskHedgeFlag | 卖投机套保标志 | 投机
TThostFtdcHedgeFlagType | BidHedgeFlag | 买投机套保标志 | 投机
TThostFtdcPriceType | AskPrice | 卖价格 | 必填
TThostFtdcPriceType | BidPrice | 买价格 | 必填
TThostFtdcOldInstrumentIDType | reserve1 | 保留的无效字段 | 否
TThostFtdcOldIPAddressType | reserve2 | 保留的无效字段 | 否
TThostFtdcOrderSysIDType | ReplaceSysID | 被顶单编号 | 否

ForQuoteSysID：询价编号，用于唯一定位一笔询价，需要纯数字递增

AskOrderRef：需要纯数字递增

BidOrderRef：要比AskOrderRef大，需要纯数字递增

IPAddress：手工填写本机IP地址，不自动获取。填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.示例调用

CThostFtdcInputQuoteField t = { 0 };
strcpy_s(t.BrokerID, "9999");
strcpy_s(t.InvestorID, "1000001");
strcpy_s(t.InstrumentID, "rb1809");
strcpy_s(t.UserID, "1000001");
strcpy_s(t.ExchangeID, "SHFE");
t.AskPrice = 200;
t.BidPrice = 150;
t.AskVolume = 1;
t.BidVolume = 1;
t.AskOffsetFlag = THOST_FTDC_OF_Open;///卖开平标志
t.BidOffsetFlag = THOST_FTDC_OF_Open;///买开平标志
t.AskHedgeFlag = THOST_FTDC_HF_Hedge;///卖投机套保标志
t.BidHedgeFlag = THOST_FTDC_HF_Hedge;///买投机套保标志
_itoa_s(OrderRef, t.AskOrderRef, 10);///衍生卖报单引用
OrderRef++;
_itoa_s(OrderRef, t.BidOrderRef, 10);///衍生买报单引用
OrderRef++;
m_pUserApi->ReqQuoteInsert(&t, nRequestID++);

回到顶部

◇ 5.FAQ

询价时报：“没有该合约的做市商”？

这是因为询价合约不对，目前期权合约可以参加询价。

询价时报：“CTP：当前时间禁止询价”？

这是因为期货公司一般把询价限制时间设置为60秒询价一次，周期内不能多次询价。

询价时报：“CTP：当前价差禁止询价”？

交易所有询价价差的限制，期货公司可以在柜台上进行设置，一般如下：

经纪公司代码 | 合约代码 | 交易所代码 | 最新价 | 价差
1008 | SRC | CZCE | 0 | 8
1008 | SRC | CZCE | 50 | 10
1008 | SRC | CZCE | 100 | 20
1008 | SRC | CZCE | 200 | 30
1008 | SRC | CZCE | 300 | 50
1008 | SRC | CZCE | 500 | 75

询价价差的判断过程

1）看最新价对应于上面的哪一档次，确定价差的最小值

2）计算买价和卖价的价差，看是否大于设置的价差（等于也不行）

如果2）通过，那么询价单报入交易所，否则会被CTP直接拒绝。

“非法的做市商响应”是什么原因？

这可能是所用交易编码非做市商专用所致。

各家交易所第二次报价是否会撤销第一次报价？

中金所：不会撤销

大商所：不会撤销

郑商所：会撤销

上期所：会撤销


ReqRemoveParkedOrder

1.函数原型

2.参数

3.返回

4.示例调用

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求删除预埋单，对应响应OnRspRemoveParkedOrder。该函数用于删除已经报入但未触发的某笔预埋报单，注意跟ReqRemoveParkedOrderAction的区别。

◇ 1.函数原型

virtual int ReqRemoveParkedOrder(CThostFtdcRemoveParkedOrderField *pRemoveParkedOrder, int nRequestID) = 0;

回到顶部

◇ 2.参数

pRemoveParkedOrder：删除预埋单

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcParkedOrderIDType | ParkedOrderID | 预埋报单编号 | 必填
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无

ParkedOrderID：对应的预埋报单编号，指定要删除的预埋报单。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.示例调用

CThostFtdcRemoveParkedOrderField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.ParkedOrderID, "           5");
m_pUserApi->ReqRemoveParkedOrder(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqRemoveParkedOrderAction

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求删除预埋撤单，对应响应OnRspRemoveParkedOrderAction。该函数用于删除已经报入但未触发的某笔预埋撤单，注意是预埋撤单，而不是预埋报单。删除预埋报单使用ReqRemoveParkedOrder。

◇ 1.函数原型

virtual int ReqRemoveParkedOrderAction(CThostFtdcRemoveParkedOrderActionField *pRemoveParkedOrderAction, int nRequestID) = 0;

回到顶部

◇ 2.参数

pRemoveParkedOrderAction：删除预埋撤单

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 必填
TThostFtdcParkedOrderActionIDType | ParkedOrderActionID | 预埋撤单单编号 | 必填
TThostFtdcInvestUnitIDType | InvestUnitID | 投资单元代码 | 无

ParkedOrderActionID：对应的要删除的预埋撤单编号

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcRemoveParkedOrderActionField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.InvestorID, "1000001");
strcpy_s(a.ParkedOrderActionID, "1");
m_pUserApi->ReqRemoveParkedOrderAction(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqSettlementInfoConfirm

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

投资者结算结果确认，在开始每日交易前都需要先确认上一日结算单，只需要确认一次。对应响应OnRspSettlementInfoConfirm。

◇ 1.函数原型

virtual int ReqSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, int nRequestID) = 0;

回到顶部

◇ 2.参数

pSettlementInfoConfirm：投资者结算结果确认信息

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 是
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 是
TThostFtdcDateType | ConfirmDate | 确认日期 | 否
TThostFtdcTimeType | ConfirmTime | 确认时间 | 否
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 否
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 否
TThostFtdcSettlementIDType | SettlementID | 结算编号 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcSettlementInfoConfirmField Confirm = { 0 };
strcpy_s(Confirm.BrokerID, "9999");
strcpy_s(Confirm.InvestorID, "1000001");
m_pUserApi->ReqSettlementInfoConfirm(&Confirm, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqTradingAccountPasswordUpdate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

资金账户口令更新请求，对应响应OnRspTradingAccountPasswordUpdate。

◇ 1.函数原型

virtual int ReqTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pTradingAccountPasswordUpdate：资金账户口令变更域

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcAccountIDType | AccountID | 投资者帐号 | 必填
TThostFtdcPasswordType | OldPassword | 原来的口令 | 必填
TThostFtdcPasswordType | NewPassword | 新的口令 | 必填
TThostFtdcCurrencyIDType | CurrencyID | 币种代码 | 必填

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcTradingAccountPasswordUpdateField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.AccountID, "1000001");
strcpy_s(a.OldPassword, "123456");
strcpy_s(a.NewPassword, "666666");
strcpy_s(a.CurrencyID, "CNY");
m_pUserApi->ReqTradingAccountPasswordUpdate(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


ReqUserAuthMethod

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

查询用户当前支持的认证模式，暂不支持

响应: OnRspUserAuthMethod

◇ 1.函数原型

virtual int ReqUserAuthMethod(CThostFtdcReqUserAuthMethodField *pReqUserAuthMethod, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqUserAuthMethod：用户发出获取安全安全登陆方法请求

字段类型 | 字段名称 | 含义 | 值
TThostFtdcDateType | TradingDay | 交易日 | 无
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 无
TThostFtdcUserIDType | UserID | 用户代码 | 无

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqUserLogin

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户登录请求，对应响应OnRspUserLogin。

◇ 1.函数原型

virtual int ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqUserLoginField：用户登录请求

字段类型 | 字段名称 | 含义 | 值
TThostFtdcDateType | TradingDay | 交易日 | 无
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcUserIDType | UserID | 用户代码 | 必填
TThostFtdcPasswordType | Password | 密码 | 必填
TThostFtdcProductInfoType | UserProductInfo | 用户端产品信息 | 无
TThostFtdcProductInfoType | InterfaceProductInfo | 接口端产品信息 | 无
TThostFtdcProtocolInfoType | ProtocolInfo | 协议信息 | 无
TThostFtdcMacAddressType | MacAddress | Mac地址 | 无
TThostFtdcPasswordType | OneTimePassword | 动态密码 | 无
TThostFtdcOldIPAddressType | reserve1 | 保留的无效字段 | 无
TThostFtdcIPAddressType | ClientIPAddress | 终端IP地址 | 无
TThostFtdcLoginRemarkType | LoginRemark | 登录备注 | 无
TThostFtdcIPPortType | ClientIPPort | 终端IP端口 | 无

UserID：操作员代码，之后的investorid需要属于该操作员管理下。

UserProductInfo：客户端的产品信息，如软件开发商、版本号等。

用户事件中的UserProductInfo取决于认证填写的值，而非登录。

例如：SFITTraderV100。

LoginRemark：可以写登录备注，能够被交易系统的日志查询到。

OneTimePassword：如果期货公司启用了动态口令，客户会有一个电子口令牌，把生成的值，输入到登录报文里的OneTimePassword(动态密码)这个字段中去即可

ClientIPAddress：CTP前置主动获取，填写无效。

MacAddress：API采集，填写无效。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcReqUserLoginField reqUserLogin = { 0 };
strcpy_s(reqUserLogin.BrokerID, “0000”);
strcpy_s(reqUserLogin.UserID, “00001”);
strcpy_s(reqUserLogin.Password, “123456”);
m_pUserApi->ReqUserLogin(&reqUserLogin, nRequestID++);

回到顶部

◇ 5.FAQ

现在投资者登录的时候，有时候会被锁定，请问会有什么原因？

CTP有单独锁IP的功能。被锁定的情况下继续登录会报“CTP：登录失败次数超限，IP被禁止”。目前这个阈值一般设置为5000，单个交易日内累积计算。

CTP有锁IP+账号的功能。被锁定的情况下继续登录会报“CTP：连续登录失败次数超限，登录被禁止”。目前这个阈值一般设置为6-10，注意这里的登录错误次数CTP是连续计算的。

具体的阈值以期货公司设置的为准。

首次登陆如果提示修改密码，如何修改？

首次登陆如果提示修改密码，则必须在当前会话调用ReqUserPasswordUpdate来修改密码。

“CTP:用户在线会话超出上限”是什么意思？

表示该UserID的同时在线会话数超出了期货公司设置的阈值，具体阈值咨询期货公司柜台设置。

登录报“CTP：重复的登录”，是什么原因？

正常情况下，收到登录成功的响应后再发起登录，是没有响应的，这是因为如果前置收到登陆成功的响应，则会过滤后续的相同Session的登陆请求。

极端情况下，当前置还没收到核心返回的登录成功响应，而此时又再次收到来自客户端的登录请求，就不会过滤，核心收到重复的登录请求后就会返回“CTP：重复的登录”的错误响应。

登录时候报错：“CTP：连续登录失败数超限，登录被禁止”，为什么？

此报错说明用户连续输错密码被禁止登录了，ip被锁定。此时用户换ip或者联系期货公司解锁即可。


ReqUserLoginWithCaptcha

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户发出带有图片验证码的登陆请求，暂不支持

响应: OnRspUserLogin

◇ 1.函数原型

virtual int ReqUserLoginWithCaptcha(CThostFtdcReqUserLoginWithCaptchaField *pReqUserLoginWithCaptcha, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqUserLoginWithCaptcha：用户发出带图形验证码的登录请求请求

struct CThostFtdcReqUserLoginWithCaptchaField
{
///交易日
TThostFtdcDateType  TradingDay;
///经纪公司代码
TThostFtdcBrokerIDType  BrokerID;
///用户代码
TThostFtdcUserIDType    UserID;
///密码
TThostFtdcPasswordType  Password;
///用户端产品信息
TThostFtdcProductInfoType   UserProductInfo;
///接口端产品信息
TThostFtdcProductInfoType   InterfaceProductInfo;
///协议信息
TThostFtdcProtocolInfoType  ProtocolInfo;
///Mac地址
TThostFtdcMacAddressType    MacAddress;
///保留的无效字段
TThostFtdcOldIPAddressType  reserve1;
///登录备注
TThostFtdcLoginRemarkType   LoginRemark;
///图形验证码的文字内容
TThostFtdcPasswordType  Captcha;
///终端IP端口
TThostFtdcIPPortType    ClientIPPort;
///终端IP地址
TThostFtdcIPAddressType ClientIPAddress;
};

ClientIPAddress：填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqUserLoginWithOTP

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户发出带有动态口令的登陆请求，暂不支持

响应: OnRspUserLogin

◇ 1.函数原型

virtual int ReqUserLoginWithOTP(CThostFtdcReqUserLoginWithOTPField *pReqUserLoginWithOTP, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqUserLoginWithOTP：用户发出带动态验证码的登录请求请求

struct CThostFtdcReqUserLoginWithOTPField
{
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///密码
    TThostFtdcPasswordType  Password;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///接口端产品信息
    TThostFtdcProductInfoType   InterfaceProductInfo;
    ///协议信息
    TThostFtdcProtocolInfoType  ProtocolInfo;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve1;
    ///登录备注
    TThostFtdcLoginRemarkType   LoginRemark;
    ///OTP密码
    TThostFtdcPasswordType  OTPPassword;
    ///终端IP端口
    TThostFtdcIPPortType    ClientIPPort;
    ///终端IP地址
    TThostFtdcIPAddressType ClientIPAddress;
};

ClientIPAddress：填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqUserLoginWithText

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户发出带有短信验证码的登陆请求，暂不支持

响应: OnRspUserLogin

◇ 1.函数原型

virtual int ReqUserLoginWithText(CThostFtdcReqUserLoginWithTextField *pReqUserLoginWithText, int nRequestID) = 0;

回到顶部

◇ 2.参数

pReqUserLoginWithText：用户发出带短信验证码的登录请求请求

struct CThostFtdcReqUserLoginWithTextField
{
    ///交易日
    TThostFtdcDateType  TradingDay;
    ///经纪公司代码
    TThostFtdcBrokerIDType  BrokerID;
    ///用户代码
    TThostFtdcUserIDType    UserID;
    ///密码
    TThostFtdcPasswordType  Password;
    ///用户端产品信息
    TThostFtdcProductInfoType   UserProductInfo;
    ///接口端产品信息
    TThostFtdcProductInfoType   InterfaceProductInfo;
    ///协议信息
    TThostFtdcProtocolInfoType  ProtocolInfo;
    ///Mac地址
    TThostFtdcMacAddressType    MacAddress;
    ///保留的无效字段
    TThostFtdcOldIPAddressType  reserve1;
    ///登录备注
    TThostFtdcLoginRemarkType   LoginRemark;
    ///短信验证码文字内容
    TThostFtdcPasswordType  Text;
    ///终端IP端口
    TThostFtdcIPPortType    ClientIPPort;
    ///终端IP地址
    TThostFtdcIPAddressType ClientIPAddress;
};

ClientIPAddress：填写规则如下：ipv4原样填写，ipv6要转成非零压缩地址，即原始地址，同时要去掉冒号，eg：AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqUserLogout

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

登出请求，对应响应OnRspUserLogout。

◇ 1.函数原型

virtual int ReqUserLogout(CThostFtdcUserLogoutField *pUserLogout, int nRequestID) = 0;

回到顶部

◇ 2.参数

pUserLogout：用户登出请求

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcUserIDType | UserID | 用户代码 | 必填

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcUserLogoutField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.UserID, "1000001");
m_pUserApi->ReqUserLogout(&a, nRequestID++);

回到顶部

◇ 5.FAQ

用户调用ReqUserLogout后是否会自动重连？

会，Logout后，触发OnFrontDisconnected，能自动OnFrontConnected。


ReqUserPasswordUpdate

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

用户口令更新请求，对应响应OnRspUserPasswordUpdate。

◇ 1.函数原型

virtual int ReqUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, int nRequestID) = 0;

回到顶部

◇ 2.参数

pUserPasswordUpdate：用户口令变更

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcUserIDType | UserID | 用户代码 | 必填
TThostFtdcPasswordType | OldPassword | 原来的口令 | 必填
TThostFtdcPasswordType | NewPassword | 新的口令 | 必填

NewPassword：新密码需要符合复杂度要求，不然修改失败。

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

CThostFtdcUserPasswordUpdateField a = { 0 };
strcpy_s(a.BrokerID, "9999");
strcpy_s(a.UserID, "1000001");
strcpy_s(a.OldPassword, "123456");
strcpy_s(a.NewPassword, "666666");
m_pUserApi->ReqUserPasswordUpdate(&a, nRequestID++);

回到顶部

◇ 5.FAQ

无


SubmitUserSystemInfo

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

上报用户终端信息，用于中继服务器操作员登录模式，操作员登录后，可以多次调用该接口上报不同客户信息。

◇ 1.函数原型

virtual int SubmitUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;

回到顶部

◇ 2.参数

pUserSystemInfo：用户系统信息

字段类型 | 字段名称 | 含义 | 值
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 必填
TThostFtdcUserIDType | UserID | 用户代码 | 必填
TThostFtdcClientSystemInfoType | ClientSystemInfo | 用户端系统内部信息 | 必填
TThostFtdcIPAddressType | ClientPublicIP | 终端IP端口 | 必填
TThostFtdcTimeType | ClientLoginTime | 登录成功时间 | 必填
TThostFtdcAppIDType | ClientAppID | App代码 | 必填
TThostFtdcSystemInfoLenType | ClientSystemInfoLen | 用户端系统内部信息长度 | 必填
TThostFtdcIPPortType | ClientIPPort | 终端IP端口 | 必填
TThostFtdcOldIPAddressType | reserve1 | 保留的无效字段 | 无
TThostFtdcClientLoginRemarkType | ClientLoginRemark | 客户登录备注2 | 无

UserID：此处应该填终端的投资者账号，即InvestorID，而非操作员账号。

ClientSystemInfoLen：加密后的用户终端系统内部信息的长度

ClientSystemInfo：加密后的用户终端系统内部信息。

ClientPublicIP：用户终端IP，由中继服务器采集和填写

ClientLoginTime：用户登录中继时间，由中继服务器采集和填写

ClientAppid：用户终端的appid，由中继服务器采集和填写

回到顶部

◇ 3.返回

0 正确

-1 字段长度不对

-2 非CTP采集的终端信息

-4 当前用户非一对多操作员

-5 字段中存在非法字符或者长度超限

-6 采集结果字段错误

回到顶部

◇ 4.调用示例

//一对多中继终端使用方法

Step 1 中继在启动后，在API连接后发起认证

Authenticate();

Step 2 认证成功后发起登录

UserLogin();

Step 3 终端登录中继时，中继上报用户终端信息

char pSystemInfo[344];
  int len;
  CTP_GetSystemInfo(pSystemInfo, len);
  CThostFtdcUserSystemInfoField field1;
  memset(&field1, 0, sizeof(field));
  strcpy(field1.BrokerID, "9999");
  strcpy(field1.UserID, "00001");
  memcpy(field1.ClientSystemInfo, pSystemInfo, len);
  field1.ClientSystemInfoLen = len;
  strcpy(field1.ClientPublicIP, "127.0.0.1");
  field1.ClientIPPort = 65535;
  strcpy(field1.ClientLoginTime, "11:28:28");
  strcpy(field1.ClientAppID, "Q7");
  m_pUserApi->SubmitUserSystemInfo(&field1);

回到顶部

◇ 5.FAQ

采集信息上报时候总是提示operation not permitted，这是为什么？

如果提示operation not permitted，可能是AppID类型错误。例如，直连模式的AppID，却错误调用了SubmitUserSystemInfo。

此错误不会通过特定接口返回，只在标准输出中提示，例如直接在屏幕上打印出来。

不上报采集信息，会影响登录吗？

不影响登录，CTP不做控制，但这样不符合监管要求。

一对多模式下，如果认证成功后，密码输错导致登录失败了，是否要退出登录，重新认证和登录？

要退出登录，重新认证和登录。否则继续登录的话会导致submitusersysinfo调用失败！


SubscribePrivateTopic

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

订阅私有流。该方法要在Init 方法前调用。若不调用则不会收到私有流的数据。推荐使用THOSTTERTRESTART方式订阅私有流。

◇ 1.函数原型

virtual void SubscribePrivateTopic(THOSTTERESUME_TYPE nResumeType) = 0;

回到顶部

◇ 2.参数

nResumeType： 私有流重传方式

THOST_TERT_RESTART:从本交易日开始重传（推荐）

THOST_TERT_RESUME:从上次收到的续传

序号保存在本地流水文件里，若遇到CTP交易系统清流重启，如果此时不删除原流水文件并继续用RESUME模式接入，则可能收不到私有流回报

THOST_TERT_QUICK:只传送登录后私有流的内容

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
pUserApi->SubscribePrivateTopic(THOST_TERT_RESTART);
pUserApi->SubscribePublicTopic(THOST_TERT_RESTART);
pUserApi->RegisterFront(“tcp://127.0.0.1:51205”);
pUserApi->Init();

回到顶部

◇ 5.FAQ

无


SubscribePublicTopic

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

订阅公共流。该方法要在Init 方法前调用。若不调用，默认RESTART模式订阅。

◇ 1.函数原型

virtual void SubscribePublicTopic(THOST_TE_RESUME_TYPE nResumeType) = 0;

回到顶部

◇ 2.参数

nResumeType：私有流重传方式。

THOST_TERT_RESTART：从本交易日开始重传

THOST_TERT_RESUME：从上次收到的续传

THOST_TERT_QUICK：只传送登录后私有流的内容

THOST_TERT_NONE：取消订阅公有流

回到顶部

◇ 3.返回

无

回到顶部

◇ 4.调用示例

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
pUserApi->SubscribePrivateTopic(THOST_TERT_RESUME);
pUserApi->SubscribePublicTopic(THOST_TERT_RESUME);
pUserApi->RegisterFront("tcp://127.0.0.1:51205");
pUserApi->Init();

回到顶部

◇ 5.FAQ

无


ReqQryClassifiedInstrument

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求查询分类合约，对应响应请求OnRspQryClassifiedInstrument

详见 6.5.1版本更新说明补充说明

◇ 1.函数原型

virtual int ReqQryClassifiedInstrument(CThostFtdcQryClassifiedInstrumentField *pQryClassifiedInstrument, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryClassifiedInstrument：查询分类合约

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 否
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcExchangeInstIDType | ExchangeInstID | 合约在交易所的代码 | 否
TThostFtdcInstrumentIDType | ProductID | 产品代码 | 否
TThostFtdcTradingTypeType | TradingType | 合约交易状态 | 是
TThostFtdcClassTypeType | ClassType | 合约分类类型 | 是

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryCombPromotionParam

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

请求组合优惠比例，对应响应请求OnRspQryCombPromotionParam

详见 6.5.1版本更新说明补充说明

◇ 1.函数原型

virtual int ReqQryCombPromotionParam(CThostFtdcQryCombPromotionParamField *pQryCombPromotionParam, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryCombPromotionParam：查询组合优惠比例

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcExchangeIDType | ExchangeID | 交易所代码 | 否
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryRiskSettleInvstPosition

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

投资者风险结算持仓查询，对应响应请求OnRspQryRiskSettleInvstPosition

详见 6.6.1P1版本更新说明

◇ 1.函数原型

virtual int ReqQryRiskSettleInvstPosition(CThostFtdcQryRiskSettleInvstPositionField *pQryRiskSettleInvstPosition, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryRiskSettleInvstPosition：投资者风险结算持仓查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcBrokerIDType | BrokerID | 经纪公司代码 | 否
TThostFtdcInvestorIDType | InvestorID | 投资者代码 | 否
TThostFtdcInstrumentIDType | InstrumentID | 合约代码 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


ReqQryRiskSettleProductStatus

1.函数原型

2.参数

3.返回

4.调用示例

5.FAQ

回到顶部

< 前页 回目录 后页 >

风险结算产品查询，对应响应请求OnRspQryRiskSettleProductStatus

详见 6.6.1P1版本更新说明

◇ 1.函数原型

virtual int ReqQryRiskSettleProductStatus(CThostFtdcQryRiskSettleProductStatusField *pQryRiskSettleProductStatus, int nRequestID) = 0;

回到顶部

◇ 2.参数

pQryRiskSettleProductStatus：风险结算产品查询

字段类型 | 字段名称 | 含义 | 是否可作为过滤条件
TThostFtdcInstrumentIDType | ProductID | 产品代码 | 否

nRequestID：请求ID，对应响应里的nRequestID，无递增规则，由用户自行维护。

回到顶部

◇ 3.返回

0，代表成功。

-1，表示网络连接失败；

-2，表示未处理请求超过许可数；

-3，表示每秒发送请求数超过许可数。

回到顶部

◇ 4.调用示例

无

回到顶部

◇ 5.FAQ

无


其他业务规则

■ 6.6.1P1_API接口说明

└◆ 其他业务规则

请参阅：

做市商询价和报价

报单回调规则

大商所组保

报价回调规则

协议方式接收二代组播行情

fens连接说明

各交易所行情区别

合约状态变化说明

报单流控、查询流控和会话数控制

通讯模式

TAS介绍

条件单规则


做市商询价和报价

1.指令介绍

2.四所区别

回到顶部

< 前页 回目录 后页 >

◇ 1.指令介绍

  • 1.请求询价指令

发起询价指令使用ReqForQuoteInsert函数。

参数CThostFtdcInputForQuoteField中，ForQuoteRef非必填，可由CTP交易核心自动生成。

交易所有询价价差的限制，期货公司可以在柜台上进行设置，一般如下

经纪公司代码 | 合约代码 | 交易所代码 | 最新价 | 价差
1008 | SRC | CZCE | 0 | 8
1008 | SRC | CZCE | 50 | 10
1008 | SRC | CZCE | 100 | 20
1008 | SRC | CZCE | 200 | 30
1008 | SRC | CZCE | 300 | 50
1008 | SRC | CZCE | 500 | 75

询价价差的判断过程

1) 看最新价对应于上面的哪一档次，确定价差的最小值

2) 计算买价和卖价的价差，看是否大于设置的价差（等于也不行）

3) 如果2)通过，那么询价单报入交易所，否则会被CTP直接拒绝。

如果询价的时候，当前合约价差不在范围，则报“CTP：当前价差禁止询价”。

另外，交易所还有询价时间间隔限制，一般在交易所端有控制，但郑商所控制在CTP柜台端，柜台设置例如：

对于郑商所、中金所，如果询价过于频繁，则会报“CTP：当前时间禁止询价”。其他交易所报错类似。

中金所询价开放了交易编码类型，支持“投机，套保，套利”的编码询价。

  • 2.接收询价响应

询价响应有以下几种：

函数名称 | 说明
OnRspForQuoteInsert | 只在录入错误的情况下返回，如字段校验失败、被限制询价等；可以通过ErrorID和ErrorMsg查看错误信息
OnRtnForQuoteRsp（交易spi） | 暂时不用
OnRtnForQuoteRsp（行情spi） | 录入成功后会推送，但是事先要调用行情api里的SubscribeForQuoteRsp去订阅该消息。
OnErrRtnForQuoteInsert | 被交易所拒绝的询价，通过此接口返回；可以通过ErrorID和ErrorMsg查看错误信息

由于中金所、上期所和大商所的询价是来自交易所交易流，而郑商所是来自交易所行情流，所以连接mdfront只能看到郑商所的询价通知，连接行情front能收到所有交易所的询价通知。

  • 3.查询询价

查询询价使用ReqQryForQuote函数。

接收查询结果使用OnRspQryForQuote函数

  • 4.请求报价指令

请求报价指令使用ReqQuoteInsert函数。

参数CThostFtdcInputQuoteField中，QuoteRef、AskOrderRef、BidOrderRef非必填，如果手工填则要求AskOrderRef小于BidOrderRef，否则会报“CTP：重复的报单”。

  • 5.接收报价响应

报价响应有以下几种：

函数名称 | 说明
OnRspQuoteInsert | 只在录入错误的情况下返回，如字段校验失败、无做市商权限等；可以通过ErrorID和ErrorMsg查看错误信息
OnRtnQuote | 当报价录入成功后，CTP给出该报价响应
OnRtnOrder | 报价录入成功后，如果是双边报价，CTP还会同时衍生出买卖两笔报价衍生单报入交易所，并返回相应的OnRtnOrder
OnRtnTrade | 衍生单成交后，返回该成交回报

对于大商所，交易所在接受报价后，将不再维护报价状态的更新，所以客户端在接收CTP的报价回报时，其报价状态没有完整生命周期，因此采用CTP接口的开发人员需要重点关注报价对应衍生报单的状态。上期所会维护报价的状态，但是跟报单状态独立，比如，如果两腿报单都已经成交，依然可以撤报价单，并且能成功。中金所的报价和撤销报价的时候，交易所会发送OnRtnQuote，会更新为已撤销。但是如果单独撤销两个衍生单，中金所不再更新报价的状态。

详见报价回调规则

  • 6.撤销报价请求

撤销报价请求使用ReqQuoteAction函数。

参数CThostFtdcInputQuoteActionField中，使用QuoteRef+SessionID+FrontID组合来撤单。

  • 7.撤销报价衍生单

撤销报价衍生单使用ReqOrderAction函数。

参数CThostFtdcInputOrderActionField中，使用FrontID+SessionID+OrderRef组合来撤单。

要注意的是，如果在报价的时候没有填写AskOrderRef和BidOrderRef，那么报价衍生单的响应OnRtnOrder里的FrontID和SessionID是0。

  • 8.查询报价

查询报价使用ReqQryQuote函数。

接收查询结果使用OnRspQryQuote函数

回到顶部

◇ 2.四所区别

下面列出四所在询价和报价上的一些区别。注意：以下内容仅供参考，如果交易所的规则发生变化，文档并不会实时更新。

  • 1.四所询价对比
 | 中金所 | 大商所 | 郑商所 | 上期所
询价间隔如何设置 | 交易所限制 | 交易所限制 | CTP柜台 | 交易所限制
普通投资者是否可接收询价申报 | 可以 | 可以 | 可以 | 可以
  • 2.四所报价对比
 | 中金所 | 大商所 | 郑商所 | 上期所
是否支持平仓 | 支持 | 支持 | 支持 | 支持
是否必须关联询价 | 询价通知没有询价编号，不用填 | 询价通知有编号，但是非必填，如做市商要完成义务率则要填 | 询价通知有编号，但是非必填，如做市商要完成义务率则要填 | 询价通知没有询价编号，不用填
是否支持单边报价 | 不支持，提示“CTP:报单字段有误” | 支持，数量填0 | 不支持，提示“CTP:报单字段有误” | 不支持，提示“CTP:报单字段有误”
是否支持市价单 | 不支持，交易所提示：“已撤单报单被拒绝CFFEX:价格跌破跌停板” | 不支持，交易所提示：已撤单报单被拒绝DCE:期权价格必须大于等于TICK! | 不支持，交易所提示：“已撤单报单被拒绝CZCE:出错: 限价单价格不能为0或负数” | 不支持
双边报价买卖数量可否不一致 | 可以不一致 | 可以不一致 | CTP:不可以，提示“CTP：报单字段有误” | CTP:不可以，提示“CTP：报单字段有误”
双边报价卖价是否必须大于买价 | 一定是低价买，高价卖。否则会形成自成交 | 必须，否则交易所提示： 已撤单报单被拒绝DCE:双边报价指令卖价必须大于买价 | 必须，否则交易所提示：已撤单报单被拒绝CZCE: 出错：卖价(40800)必需大于买价(94800) | 一定是低价买，高价卖。否则会形成自成交
是否支持套保属性 | 支持 | 不支持，提示“CTP:该期权合约只支持投机类型报单” | 不支持，提示“CTP：该期权合约只支持投机类型报单” | 支持
是否会撤销前一次报价 | 不会撤销 | 不会撤销 接入大商所七期之后支持自动撤销 | 会撤销 | 会撤销
是否支持撤单腿 | 可以 | 可以 | 不可以 | 不可以
双边报价开平可否不一致 | 可以 | 可以 | 可以 | 可以


报单回调规则

1.术语说明

2.回调规则

3.大商所特殊回调规则

回到顶部

< 前页 回目录 后页 >

本文例举了一些常用的报单操作所对应的回调规则。在给定交易所报单回报顺序的前提下，CTP返回给API的回调顺序是固定的。

目前大商所的回报比较特殊，当一笔委托全部成交后，大商所直接返回该笔委托的成交回报，而不返回状态为全部成交的报单回报，对于这种情况，CTP会补一个状态为全部成交的报单回报，下文会举例说明。

◇ 1.术语说明

  • 报单回报

指报单的状态回报，有未知单报单回报、未成交报单回报、部分成交报单回报、全部成交报单回报和撤单回报。对应回调函数OnRtnOrder，以OrderStatus字段区分。

  • 成交回报

指报单成交后推送的成交回报，对应回调函数OnRtnTrade。

  • 错单响应

指报单被CTP拒绝后返回的响应通知，对应回调函数OnRspOrderInsert，其中ErrorID和ErrorMsg指明了错误原因。

  • 错单回报

指报单被CTP或交易所拒绝后的报单的状态回报。对应回调函数OnErrRtnOrderInsert。

回到顶部

◇ 2.回调规则

测试场景1

报单合约ag1207，报入1手，到交易所先未成交，后全部成交1手。

报单

ReqOrderInsert

回调顺序：

OnRtnOrder （未知单）

此时CTP接收到交易所的未成交报单回报

OnRtnOrder （未成交）

此时CTP接收到交易所的成交回报和全部成交报单回报

OnRtnOrder （未成交）

OnRtnOrder （全部成交）

OnRtnTrade

测试场景2

报单合约ag1207，报入1手，到交易所立即全部成交1手。（注意，此案例没有收到交易所的未成交回报状态，而是直接收到全部成交状态）

报单

ReqOrderInsert

OnRtnOrder （未知单）

此时CTP接收到交易所的成交回报和成交报单回报

OnRtnOrder （未知单）

OnRtnOrder （全部成交报单已提交）

OnRtnTrade

测试场景3

报单合约ag1207，报入1手，到交易所先未成交，然后撤单1手。

报单

ReqOrderInsert

OnRtnOrder（未知单）

此时CTP接收到交易所的未成交报单回报

OnRtnOrder（未成交）

ReqOrderAction

此时CTP接收到交易所的撤单报单回报

OnRtnOrder（未成交）

OnRtnOrder（已撤单）

测试场景4

报单合约ag1207，报入10手，到交易所先未成交，然后成交3手，然后剩余全部成交7手。

报单

ReqOrderInsert

OnRtnOrder （未知单）

此时CTP接收到交易所的未成交报单回报

OnRtnOrder （未成交）

此时CTP接收到交易所的成交回报和部分成交报单回报

OnRtnOrder （未成交）

OnRtnOrder （部分成交）

OnRtnTrade

此时CTP接收到交易所的成交回报和全部成交报单回报

OnRtnOrder （部分成交）

OnRtnOrder （全部成交）

OnRtnTrade

测试场景5

报单合约ag1207，报入10手，到交易所先未成交，然后成交4手，然后剩余全部撤单6手。

报单

ReqOrderInsert

OnRtnOrder （未知单）

此时CTP接收到交易所的未成交报单回报

OnRtnOrder （未成交）

此时CTP接收到交易所的成交回报和部分成交报单回报

OnRtnOrder （未成交）

OnRtnOrder （部分成交）

OnRtnTrade

发起撤单

ReqOrderAction

此时CTP接收到交易所的撤单回报

OnRtnOrder（部分成交）

OnRtnOrder（已撤单）

测试场景6

对一笔已经撤单的委托单再次撤单。

对一笔已撤单再次撤单

ReqOrderAction

触发撤单错误响应

OnRspOrderAction （CTP:报单已全成交或已撤销，不能再撤）

触发撤单错误回报

OnErrRtnOrderAction （CTP:报单已全成交或已撤销，不能再撤）

测试场景7

对一笔未成交委托进行撤单，因为委托号填写错误导致撤单失败

撤一笔不存在的委托

ReqOrderAction

触发撤单错误响应（CTP:撤单找不到相应报单）

OnRspOrderAction

触发撤单错误回报

OnErrRtnOrderAction （CTP:撤单找不到相应报单）

回到顶部

◇ 3.大商所特殊回调规则

目前大商所的回报比较特殊，当一笔委托全部成交后，大商所直接返回该笔委托的成交回报，而不返回状态为全部成交的报单回报，对于这种情况，CTP会补一个状态为全部成交的报单回报。

测试场景1

报单合约c1911-C-1760，报入1手，到交易所先未成交，后全部成交1手。

报单

ReqOrderInsert

OnRtnOrder （未知单）

此时CTP接收到交易所的未成交报单回报

OnRtnOrder （未成交）

此时CTP接收到交易所的成交回报

OnRtnOrder （全部成交）（CTP补充生成，且不重复推送前一状态）

OnRtnTrade

测试场景2

报单合约c1911-C-1760，报入1手，到交易所立即全部成交1手。注意，大商所不管会不会立即成交，只要委托进入报单簿后都会返回一笔未成交报单回报给到CTP。

报单

ReqOrderInsert

OnRtnOrder （未知单）

此时CTP接收到交易所的未成交报单回报

OnRtnOrder （未成交）

此时CTP接收到交易所的成交回报

OnRtnOrder （全部成交）（CTP补充生成，且不重复推送前一状态）

OnRtnTrade

测试场景3

报单合约c1911-C-1760，报入1手，到交易所先未成交，然后撤单1手。

报单

ReqOrderInsert

OnRtnOrder （未知单）

此时CTP接收到交易所的未成交报单回报

OnRtnOrder （未成交）

发起撤单

ReqOrderAction

此时CTP接收到交易所的撤单回报

OnRtnOrder （未成交）

OnRtnOrder （已撤单）


大商所组保

1.接口说明

2.可申请组合的合约

3.申请组合填写规则

4.仓位计算规则

5.平仓盈亏计算和保证金释放计算原则

6.代码示例

7.FAQ

回到顶部

< 前页 回目录 后页 >

大商所期权上市后，为了更好的服务市场，大商所启动了期权六期项目，主要从行权功能优化、期权套保、组合保证金优惠三方面完善期权相关业务。

大商所目前支持的组合有：期货对锁，期货跨期，期货跨品种，备兑买权，备兑卖权，期权跨式，期权宽跨式共7种，投保标志支持投机-投机，套保-套保，投机-套保，套保-投机共4种。

本文主要就API针对组保业务的一些调整和特性做相关说明，具体业务规则请参考交易所文档。

◇ 1.接口说明

录入请求：ReqCombActionInsert

错误响应：OnErrRtnCombActionInsert，OnRspCombActionInsert

正确响应：OnRtnCombAction

注意，这些接口并非新增，而是大商所的组合业务复用了此接口。

回到顶部

◇ 2.可申请组合的合约

组合和拆分的合约为大商所组合优惠表中所列的合约，但目前CTP暂时不支持此优惠表的查询。在实际操作中，用户可通过OnRspQryInstrument或OnRtnDepthMarketData里返回的组合合约来填写。

目前的套利单合约（期货跨期和跨品种）基本都在大商所组合优惠表中。但是有一种情况，就是新合约上市，套利合约也是新合约的时候，当天是不包括在组合优惠表中的。

回到顶部

◇ 3.申请组合填写规则

  • 合约（InstrumentID）：

针对各组合类型举例如下：

a) 期权跨式组合合约申请和拆分（STD m1905-c-2700&m1905-p-2700）

b) 期权宽跨式组合合约申请和拆分（STG m1905-p-2400&m1905-c-2700）

c) 备兑组合合约申请和拆分（PRT m1905-c-2400&m1905）

d) 期货跨期组合合约申请和拆分（SP a1903&a1905）

e) 期货跨品种组合合约申请和拆分（SPC c1903&cs1909）

f) 期货对锁组合合约申请和拆分（SP a1903& a1903）

g) 期权买入垂直价差组合（BLS m1809-P-3150&m1809-P-3100）

h) 期权卖出垂直价差组合（BES m1809-P-3350&m1809-P-3150）

i) 期权日历价差组合（CAS m1807-P-3150&m1809-P-3150）

j) 买入期权期货组合（BFO m1809-P-3150&m1809）

k) 期权对锁组合合约申请和拆分（OPL m1809-P-3150&m1809-P-3150）

  • 买卖方向（Direction）

以上面所列组合类型为例：

a、 b：方向为卖。这种组合类型需要左右两腿都是卖持仓，即空头持仓；

c：方向为卖。因为目前交易所只支持备兑卖权，不支持备兑买权，即支持左腿是卖持仓的组合，不支持左腿是买持仓的组合。

若右腿组合的是多头的期货合约，则称为“备兑看涨期权组合持仓”；若右腿组合的是空头的期货合约，则称为“备兑看跌期权组合持仓”；

d、e：当方向是买的时候就是左买持右卖持，当方向是卖的时候就是左卖持右买持；

f：方向只支持买，所以是只有左买持右卖持。

g：买入垂直价差组合：当方向是买时就是左买持仓右卖持，若为卖则会报错“CTP:找不到合约”

h：卖出垂直价差组合：当方向是卖时就是左卖持仓右买持，若为买则会报错“CTP:找不到合约”

i：日历价差：

1）卖出较近月份的看涨期权合约，买入较远月份相同执行价格的看涨期权合约，组合的买卖方向为卖

2）卖出较近月份的看跌期权合约，买入较远月份相同执行价格的看跌期权合约，组合的买卖方向为卖

j：买入期权期货组合：组合买卖方向为买

1）买入看涨期权，同时卖出对应期货合约

2）买入看跌期权，同时买入对应期货合约

k：期权对锁组合：组合买卖方向为买

1）在同一期权品种同一系列同一合约上建立数量相等、方向相反的头寸

  • 组合方向（CombDirection）

组合方向支持‘申请组合’和‘拆分组合’。

  • 投机套保类型（HedgeFlag）

投机套保类型支持‘投机’（指左右两腿都是投机），‘保值’（指左右两腿都是套保），‘投套（指左腿投机右腿套保）’，‘套投（指左腿套保右腿投机）’。

盘中的话，如果通过套利报单的话（ReqOrderInsert），是只支持投机-投机，套保-套保；如果是通过申请组合形成组合单的话，支持投机-投机，套保-套保，投机-套保，套保-投机。

  • 交易所（ExchangeID）

该字段必填。

回到顶部

◇ 4.仓位计算规则

组合合约申请接受后，会将现有的两腿持仓组合到一起，形成组合持仓。此时，在持仓汇总（OnRspQryInvestorPosition）里会显示三条持仓记录，分别是新增的组合合约持仓，原多头合约持仓和原空头合约持仓。而持仓明细（OnRspQryInvestorPositionDetail）里不会新增组合合约记录。

1) 比如投资者在大商所买入1手“SP a0905&a0909”合约，形成的持仓汇总如下：

合约 | 多头持仓 | 空头持仓
SP a0905&a0909 | 1 | 0
a0905 | 1 | 0
a0909 | 1 | 0

2) 比如投资者在大商所组合1手“STG c1909-P-1680&c1909-C-2020”合约，形成的持仓汇总如下：

合约 | 多头持仓 | 空头持仓
STG c1909-P-1680&c1909-C-2020 | 0 | 1
c1909-P-1680 | 0 | 1
c1909-C-2020 | 0 | 1

回到顶部

◇ 5.平仓盈亏计算和保证金释放计算原则

平仓盈亏计算和保证金释放计算原则如下：

1）在计算平仓盈亏时，采用先开先平原则。

2）在计算保证金释放时，采用先平单腿持仓，后平优惠组合持仓的原则，优惠组合按照优先级从低到高的顺序进行打破。

3）投资者持仓明细里面的TimeFirstVolume（大商所专用）是指大商所的持仓按照先开先平的平仓顺序平仓后的剩余手数

4）投资者持仓明细里面的Volume如果是大商所的持仓则按照先单一后组合的平仓顺序平仓后的剩余手数

5）投资者持仓接口里面的PositionCostOffset，因为目前大商所平仓还是按照先单一后组合进行平仓，而计算平仓盈亏需要按照先开先平进行计算，所以增加该字段用以计算按照先开先平的原则的持仓盈亏。

综上所述，在通过持仓明细去计算持仓成本、持仓盈亏、平仓盈亏时，需要用TimeFirstVolume；计算保证金时，需要用Volume。

通过持仓汇总去计算持仓成本和持仓盈亏规则如下：

大商所先开先平持仓成本 = PositionCost- PositionCostOffset

大商所持仓盈亏：

多头：PositionProfit = LastPrice*Position*VolumeMultiple -
（PositionCost - PositionCostOffset）
空头：PositionProfit = （PositionCost - PositionCostOffset） -
LastPrice*Position*VolumeMultiple

回到顶部

◇ 6.代码示例

场景：现有c1909-P-1680和c1909-C-2020各一手的投机卖仓，申请组合代码示例如下：

    CThostFtdcInputCombActionField a = { 0 };
    strcpy_s(a.BrokerID, “9999”);
    strcpy_s(a.InvestorID, “00001”);
    strcpy_s(a.InstrumentID, “STG c1909-P-1680&c1909-C-2020”);
    strcpy_s(a.CombActionRef, "1");
    strcpy_s(a.UserID, “00001”);
    a.Direction = THOST_FTDC_D_Sell;
    a.Volume = 1;
    a.CombDirection = THOST_FTDC_CMDR_Comb;
    a.HedgeFlag = THOST_FTDC_HF_Speculation;
    strcpy_s(a.ExchangeID, “DCE”);
    m_pUserApi->ReqCombActionInsert(&a, nRequestID++);

回到顶部

◇ 7.FAQ

查询合约的时候发现合约id不全

对于老版本api如果有查询组合合约，或者收到的组合合约id超过了30个字符，超过的部分会被截断，行情中也是如此。


报价回调规则

1.术语说明

2.回调规则

回到顶部

< 前页 回目录 后页 >

本文例举了一些常用的报价操作所对应的回调规则。在给定交易所报价回报顺序的前提下，CTP返回给API的回调顺序是固定的。

特别要注意，大商所只返回一次报价状态回报，例如一笔报价从报入到未成交到最终成交，一共有三个状态，但是大商所只推送未成交报价回报，全部成交后不推送成交报价回报。甚至在查询报价时，其报价状态也仍然是未成交状态。用户在测试和实现自己业务的时候要格外注意这点。

目前国内几家交易所的报价规则各不相同，本文不做详细例举，希望大家在梳理规则时学会举一反三。

◇ 1.术语说明

  • 报价衍生单

报价报入交易所时，同时会衍生出两笔买卖报单，以普通报单的形式报入交易所。这两笔报单称之为报价衍生单。

  • 报价回报

指报价的状态回报，有未知单报价回报、未成交报价回报、全部成交报价回报。对应回调函数OnRtnQuote，以QuoteStatus字段区分。

  • 报单回报

指报单的状态回报，有未知单报单回报、未成交报单回报、部分成交报单回报、全部成交报单回报和撤单回报。对应回调函数OnRtnOrder，以OrderStatus字段区分。

  • 成交回报

指报单成交后推送的成交回报，对应回调函数OnRtnTrade。

回到顶部

◇ 2.回调规则

测试场景1

CZCE做市商报价，报价合约SR911P4100，开仓，买报价100，卖报价150，买数量1手，卖数量1手，先买成交1手，后又卖成交1手。

报价

ReqQuoteInsert

OnRtnOrder（未知单-卖）

OnRtnOrder（未知单-买）

OnRtnQuote（未知单）

此时CTP接收到交易所未成交报价回报和报单回报。

OnRtnQuote（未成交）

OnRtnOrder（未成交-买）

OnRtnOrder（未成交-卖）

此时CTP接收到交易所买方向全部成交的成交回报和报单回报。

OnRtnOrder（全部成交-买）

OnRtnTrade（买）

此时CTP接收到交易所卖方向的全部成交成交回报和报单回报，以及全部成交报价回报。

OnRtnQuote（全部成交）

OnRtnOrder（全部成交-卖）

OnRtnTrade（卖）

注意：报价的衍生单（报价两条单腿报单）的回报顺序取决于交易所返回的衍生单的回报顺序。例如测试场景1中，交易所先推送买未成交报单回报后推送卖未成交回报，则CTP也会照此顺序推送。成交回报同理，因此对于报价及衍生单的买卖回报顺序是不固定的。

测试场景2

DCE做市商报价，报价合约m1911-C-2400，开仓，买报价400，卖报价500，买数量1手，卖数量1手，买成交1手，卖成交1手。

报价

ReqQuoteInsert

OnRtnOrder（未知单-卖）

OnRtnOrder（未知单-买）

OnRtnQuote（未知单）

此时CTP接收到交易所未成交报价回报和报单回报。

OnRtnQuote（未成交）

OnRtnOrder（未成交-卖）

OnRtnOrder（未成交-买）

此时CTP接收到交易所买方向全部成交的成交回报和报单回报。

OnRtnOrder（全部成交-卖）

OnRtnTrade（卖）

此时CTP接收到交易所卖方向的全部成交成交回报和报单回报。

OnRtnOrder（全部成交-买）

OnRtnTrade（买）

注意：DCE区别于其他交易所，其报价状态只推送一次，即使后续状态发生变化，也不再推送。因此测试场景2相比场景1，会少一笔状态为全部成交的报价回报。

测试场景3

CZCE做市商报价撤单，报价合约CF001C12200，开仓，买报价2199，卖报价3369，买数量1手，卖数量1手，撤报价。

报价

ReqQuoteInsert

OnRtnOrder （未知单—卖）

OnRtnOrder （未知单—买）

OnRtnQuote （未知单）

此时CTP接收到交易所未成交报价回报和报单回报。

OnRtnOrder （未成交—买）

OnRtnOrder （未成交—卖）

OnRtnQuote （未成交）

此时撤报价

此时CTP接收到交易所已撤单报价回报和报单回报。

OnRtnQuote （已撤单）

OnRtnOrder （已撤单—卖）

OnRtnOrder （已撤单—买）

测试场景4

DCE做市商报价，撤单腿报价。报价合约c1909-C-1660，开仓，买报价179，卖报价371，买数量1手，卖数量1手；撤买单腿1手，撤卖单腿1手。

报价

ReqQuoteInsert

OnRtnOrder （未知单—卖）

OnRtnOrder （未知单—买）

OnRtnQuote （未知单）

此时CTP接收到交易所未成交报价回报和报单回报。

OnRtnQuote （未成交）

OnRtnOrder （未成交—卖）

OnRtnOrder （未成交—买）

此时撤单腿操作

OnRtnOrder （未成交—买）

OnRtnOrder （已撤单—买）

OnRtnOrder （未成交—卖）

OnRtnOrder （已撤单—卖）

测试场景5

CZCE做市商报价，撤单腿报价，报价合约CF001C12200，开仓，买报价2199，卖报价3369，买数量1手，卖数量1手，撤买单腿1手，撤卖单腿1手。

报价

ReqQuoteInsert

OnRtnOrder （未知单—卖）

OnRtnOrder （未知单—买）

OnRtnQuote （未知单）

此时CTP接收到交易所未成交报价回报和报单回报。

OnRtnQuote （未成交）

OnRtnOrder （未成交—买）

OnRtnOrder （未成交—卖）

此时撤买单腿

此时CTP接收到交易所买撤单报单回报和错单回报。

OnRtnOrder （未成交—买）

OnErrRtnOrderAction [CZCE:出错: 所撤委托单没有找到]

此时撤卖单腿

此时CTP接收到交易所买撤单报单回报和错单回报。

OnRtnOrder （未成交—卖）

OnErrRtnOrderAction [CZCE:出错: 所撤委托单没有找到]

郑商所和上期所报价只支持撤报价，不支持撤单腿，因此报错。

测试场景6

CZCE做市商报价。报价合约CF001C13000，开仓，买报价1700，卖报价2800，买数量1手，卖数量1手；再报价，报价合约仍是CF001C13000，开仓。

第一次报价

ReqQuoteInsert

OnRtnOrder （未知单—卖）

OnRtnOrder （未知单—买）

OnRtnQuote （未知单）

此时CTP接收到交易所未成交报价回报和报单回报。

OnRtnQuote （未成交）

OnRtnOrder （未成交—买）

OnRtnOrder （未成交—卖）

第二次报价（郑商所的第二次报价会自动撤销第一次报价）

ReqQuoteInsert

OnRtnOrder （未知单—卖）

OnRtnOrder （未知单—买）

OnRtnQuote （未知单）

此时CTP接收到交易所如下回报：第一次报价的已撤单报价回报和报单回报，第二次报价的未成交报价回报和报单回报。

OnRtnQuote （已撤销，第一次报价）

OnRtnOrder （已撤单—买，第一次报价）

OnRtnOrder （已撤单—卖，第一次报价）

OnRtnQuote （未成交，第二次报价）

OnRtnOrder （未成交—买，第二次报价）

OnRtnOrder （未成交—卖，第二次报价）

郑商所的第二次报价会自动撤销第一次报价。

测试场景7

DCE做市商报价，撤报价。报价合约m1707-C-2700，开仓，买报价63，卖报价349，买数量1手，卖数量1手；撤报价1手。

报价

ReqQuoteInsert

OnRtnOrder （未知单—卖）

OnRtnOrder （未知单—买）

OnRtnQuote （未知单）

此时CTP接收到交易所未成交报价回报和报单回报。

OnRtnQuote （未成交）

OnRtnOrder （未成交—卖）

OnRtnOrder （未成交—买）

此时撤报价操作

OnRtnOrder （未成交—卖）

OnRtnOrder （未成交—买）

OnRtnQuote （未成交）

OnRtnOrder （已撤单—卖）

OnRtnOrder （已撤单—买）

大商所报价后，交易所推送报价响应（未成交），此时撤报价，返回两腿的报单回报（已撤单），但是报价状态不会再推送


协议方式接收二代组播行情

1.术语介绍

2.说明

3.方法

4.代码示例

回到顶部

< 前页 回目录 后页 >

本文介绍协议方式下如何通过mdfront接收二代组播行情。

◇ 1.术语介绍

  1. 协议方式：指不通过CTP封装的API，而是自行通过二代行情协议规范解码数据报文，从而获取实时行情的方式。

  2. 二代组播行情（下文简称二代行情）：交易所以组播方式提供的实时五档行情。因为是组播，所以接收端必须在内部网络并且要加入组播组。

  3. mdfront：CTP交易系统中一个接收交易所二代组播行情的组件。该组件提供查询组播合约接口，可通过API函数ReqQryMulticastInstrument获取。

回到顶部

◇ 2.说明

交易所不允许投资者直接交易所报盘网去接收二代行情，但期货公司可以将二代行情转发出来给投资者使用。

二代行情包含了快照查询和增量行情实时推送功能，其中，增量行情仅包含了变动值，例如价格变动多少、成交量变动多少，只有通过快照+增量的方式才能得到一笔完整的行。而期货公司只能转发增量行情，不能转发快照查询。所以投资者除了接收增量行情外，还需要想办法获取行情快照。

行情快照建议通过mdfront获取，只需订阅行情即可。订阅方法参见行情接口。

最后，增量行情还有个问题，即报文里的合约是以数字编号命名，例如编号100。而CTP的行情都是合约名称，例如rb2002，为了解决合约编号到合约名称的映射关系，mdfront提供了ReqQryMulticastInstrument查询接口，用户可以通过mdapi的ReqQryMulticastInstrument查询到映射关系。

注意，普通front不提供ReqQryMulticastInstrument查询接口，调用不会返回有效数据。

综上所述，需要有三个部分才能拼装出完整的行情，分别为增量行情、行情快照和组播合约映射关系。

回到顶部

◇ 3.方法

下面是推荐方法，仅做参考：

1、订阅CTP行情。

可以连接mdfront组件接收行情，因为CTP端的行情是完整的行情，而非增量，所以可以作为基准快照，在后续拼装完整行情的时候使用。

2、订阅期货公司转发的二代行情。

具有解码能力的投资者，可以订阅该行情，并参考交易所二代行情协议规范做相应解码。解码后会得到增量行情，但是这里要注意，这个增量行情还不能直接拿来用，因为该行情里没有InstrumentID，只有合约编号InstrumentNo，而CTP mdfront的行情里是InstrumentID，两者无法关联。为了解决这个问题，新的mdapi增加了ReqQryMulticastInstrument接口，该接口会返回InstrumentID和InstrumentNo的对应关系，有了这个函数便可以拼出完整的行情。注意，仅新的组播mdfront支持该函数，普通行情front和老mdfront不支持该函数！完整行情拼装方法如下：

a) 盘前接入

开盘后，CTP推送每tick快照行情，转发行情则推送每tick增量行情。投资者程序判断同一合约两边的UpdateTime和UpdateMillisec。如果一致，则将mdfront的这笔tick快照行情作为该合约的基准快照，后续的增量行情都在此基础上做拼装，得到笔笔完整行情。

b) 盘中接入

盘中，如果客户接入，则方法同上述a，投资者程序实时判断两边的UpdateTime和UpdateMillisec，直到遇到一致，则作为基准快照。

c) 盘中丢行情

交易所的二代行情带行情序号，如果行情序号不连续了，说明行情丢包了。此时应该停止行情组装工作，重新寻找最新的行情快照，方法同a。

回到顶部

◇ 4.代码示例

下面代码演示了如何接入mdfront前置，查询组播合约，并订阅行情。

// mduserhandle.h

#include "ThostFtdcMdApi.h"
#include <stdio.h>
#include <Windows.h>
TThostFtdcInstrumentIDType  g_chInstrumentID;
class CMduserHandler : public CThostFtdcMdSpi
{
    private:
      CThostFtdcMdApi *m_mdApi;
    public:
    void connect()
    {
    //创建并初始化API
        m_mdApi = CThostFtdcMdApi::CreateFtdcMdApi("", true, true);
        m_mdApi->RegisterSpi(this);
        m_mdApi->RegisterFront("tcp://218.28.130.102:41413");
        m_mdApi->Init();
    }
    //登陆
    void login()
    {
        CThostFtdcReqUserLoginField t = {0};
        while (m_mdApi->ReqUserLogin(&t, 1)!=0) Sleep(1000);
    }
    //请求查询组播合约
     void ReqQryMulticastInstrument()
    {
        CThostFtdcQryMulticastInstrumentField a = { 0 };
        a.TopicID = 1001;
        strcpy_s(a.InstrumentID, "cu1905");
        while (m_mdApi->ReqQryMulticastInstrument(&a, 1)!=0) Sleep(1000);
    }
    void OnRspQryMulticastInstrument(CThostFtdcMulticastInstrumentField *pMulticastInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
    {
        if (pMulticastInstrument)
        {
            strcpy_s(g_chInstrumentID,pMulticastInstrument->InstrumentID);
        }
    }
    // 订阅行情
    void subscribe()
    {
        char **ppInstrument=new char * [50];
        ppInstrumentID[0] = g_chInstrumentID;
        while (m_mdApi->SubscribeMarketData(ppInstrument, 1)!=0) Sleep(1000);
    }
    //接收行情
    void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
    {
            printf("OnRtnDepthMarketData\n");
    }
};
// main.cpp
#include "mduserhandle.h"
int main(int argc, char* argv[])
{
    CMduserHandler *mduser = new CMduserHandler;
    mduser->connect();
    mduser->login();
    mduser->ReqQryMulticastInstrument();
    mduser->subscribe();
    Sleep(INFINITE);
}


fens连接说明

1.优势

2.fens连接规则

3.参数说明

4.代码示例

回到顶部

< 前页 回目录 后页 >

fens机制提供了另一种接入CTP的方式。

◇ 1.优势

通常情况下，用户为了实现交易前置接入的冗余备份，会用RegisterFront注册多个地址，当所连前置发生故障时，API会自动连接到其他已注册的可用地址。但是，CTP规定用户同一时间只能在一个中心有交易权限，基于这个前提，所有注册的地址必须是同一中心的，否则API在择优挑选地址时如果连接到其他中心，用户是没有交易权限的；当发生灾备切换时，用户需要从主中心的前置切换到备中心的前置，此时就不得不中断交易，退出程序，重新注册备中心的前置地址进行连接。可见，当发生中心切换时，RegisterFront方式带来的连接恢复成本是很高的。

再比如，一些客户端在打包发布时，往往集成了前置地址列表。但是，如果期货公司更改了前置地址，客户端就不得不重新打包发布。

fens地址就很好的解决了RegisterFront的缺点。用户只要接入fens前置，fens会根据用户所在的中心号自动注册对应中心的地址列表；当发生中心切换时，用户会自动转到另一个中心的前置上，迅速恢复交易，整个过程无需干预。

同样的，对于客户端的打包发布，只需配置fens地址，即便期货公司新增或修改了前置地址，期货公司也不需要通知客户端，客户端也不需要重新打包发布。

另外，fens还能根据用户所在的网段，自定义返回的地址列表。

下文将详细介绍fens的一些配置和使用方法。

回到顶部

◇ 2.fens连接规则

下图是fens.xml示例，该配置在期货公司端：

投资者在调用接口RegisterFensUserInfo时需要选择LoginMode参数。

若选择THOST_FTDC_LM_Trade，且投资者是主中心用户，则会连接到sysid="1"的这组地址；

若选择THOST_FTDC_LM_Trade，且投资者是备中心用户，则会连接到sysid="2"的这组地址；

若选择THOST_FTDC_LM_Transfer，且投资者是主中心用户，则会连接到sysid="1"的这组地址；

若选择THOST_FTDC_LM_Transfer，且投资者是备中心用户，则会连接到sysid="1"的这组地址。

回到顶部

◇ 3.参数说明

THOST_FTDC_LM_Trade模式下，fens会根据用户所在中心，自动切换。

THOST_FTDC_LM_Transfer模式下，fens只连接主中心前置。

回到顶部

◇ 4.代码示例

交易fens使用方法：

CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi("F:\\flow\\");
CSimpleHandler sh(pUserApi);
pUserApi->RegisterSpi(&sh);
printf(pUserApi->GetApiVersion());
pUserApi->SubscribePrivateTopic(THOST_TERT_QUICK);
pUserApi->SubscribePublicTopic(THOST_TERT_QUICK);
CThostFtdcFensUserInfoField pFensUserInfo = { 0 };
strcpy_s(pFensUserInfo.BrokerID, "9999");
strcpy_s(pFensUserInfo.UserID, "1000001");
pFensUserInfo.LoginMode = THOST_FTDC_LM_Trade;
pUserApi->RegisterFensUserInfo(&pFensUserInfo);
pUserApi-> RegisterNameServer (“tcp://127.0.0.1:41205”);
pUserApi->Init();

行情fens使用方法：

CThostFtdcMdApi  *pUserMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
CSimpleMdHandler ash(pUserMdApi);
pUserMdApi->RegisterSpi(&ash);
CThostFtdcFensUserInfoField pFensUserInfo = { 0 };
strcpy_s(pFensUserInfo.BrokerID, g_chBrokerID);
strcpy_s(pFensUserInfo.UserID, g_chUserID);
pFensUserInfo.LoginMode = THOST_FTDC_LM_Trade;
pUserMdApi->RegisterFensUserInfo(&pFensUserInfo, nRequestID++);
pUserMdApi->RegisterNameServer (“tcp://127.0.0.1:41205”);
pUserMdApi->Init();


各交易所行情区别

1.字段差异

2.每秒tick数

3.组合合约行情

4.UDP行情和TCP行情区别

回到顶部

< 前页 回目录 后页 >

目前，各交易所提供的行情存在一定的差异，主要体现在字段数量、字段计算方法、字段含义上，甚至行情每秒tick数都不尽相同。CTP对交易所的行情只做转发，但对于有些交易所不发的字段，会做一定程度的补充，例如郑商所的成交金额，交易所不发这个字段，但该字段对于行情又十分重要，因此CTP会计算并补填；对于交易所有值的字段，CTP不会对其做更改，只做转发。

本文针对CTP给出的各所行情，选取一些重要差异，逐一说明，以帮助用户更快上手，降低开发成本。交易所行情本身的差异不在本文讨论范围。如需了解行情的订阅方法，请参阅行情接口。

◇ 1.字段差异

  • ExchangeID（交易所ID）

    期货普通前置不推送exchangeid； 期货mdfront推送exchangeid ；个股的普通前置推送exchangeid

  • Tradingday（交易日）

    郑商所行情的Tradingday是自然日，其他交易所的Tradingday都是交易日。

  • TrunOver（成交金额）

    郑商所行情中，不推送成交金额，CTP的TCP行情会自行计算并填补，成交金额=成交均价*成交数量。

  • AveragePrice（成交均价）

    除了郑商所外，其他交易所都不推送成交均价，CTP的TCP行情会自行计算并填补，成交均价=成交金额/成交数量

回到顶部

◇ 2.每秒tick数

郑商所的行情可以配置为4Tick/秒或2Tick/秒，该配置在CTP的郑商所报盘ini里。

czcemdserver.ini中，MarketID=ZCE001为两笔，行情源是tcp行情。MarketID=ZCE011为四笔，行情源是udp行情。如欲配置成4笔，请咨询上期技术当前mdserver版本是否支持。

使用mdfront的，在mdfront.ini中，郑商所配置下，ProtocolVersion=2为两笔，ProtocolVersion=11为四笔。

其他交易所的行情只能是2Tick/秒，即500毫秒推一次，一秒两次。

回到顶部

◇ 3.组合合约行情

只有大商所和郑商所有组合合约行情，其他交易所没有组合合约行情。

组合行情仅有少数字段有值，例如买卖价量、涨跌停板；大部分字段都没有值，例如最新价、成交金额、成交量等。

特别提醒：部分终端的组合行情有最新价，是因为终端自己计算了最新价。并非行情订阅的有问题。

回到顶部

◇ 4.UDP行情和TCP行情区别

UDP行情只做纯转发，因此交易所不发的字段，在UDP行情里就保持为空转发出去。

TCP行情会补填一些字段。比如郑商所的Tradingday字段和AveragePrice字段，交易所行情没有这个字段，因此是空的，但是TCP行情会去补填。

UDP行情和TCP行情的订阅方法，请参阅CreateFtdcMdApi


合约状态变化说明

1.各交易所合约状态变化

2.关于EnterTime字段

回到顶部

< 前页 回目录 后页 >

合约状态变化表示的是交易所各合约的交易阶段变化，用户在登录CTP后，无需订阅便能收到全量的合约状态变化（对应接口OnRtnInstrumentStatus），该变化在盘中实时推送。其中合约状态推送到产品级别，期权也是推送到产品级别的。CTP服务器预埋单便是通过判断合约是否进入集合竞价报单阶段或连续交易阶段来触发的。本文整理了各交易所的合约状态变化。

◇ 1.各交易所合约状态变化

下图是交易所各个时间段的报盘状态变化情况。

 | CFFEX | CZCE | DCE | INE | SHFE
20:55:00 |  | 集合竞价报单 | 集合竞价报单 | 集合竞价报单 | 集合竞价报单
20:59:00 |  | 开盘前 | 集合竞价撮合 | 集合竞价撮合 | 集合竞价撮合
21:00:00 |  | 连续交易 | 连续交易 | 连续交易 | 连续交易
8:55:00 |  | 集合竞价报单 | 集合竞价报单 |  | 集合竞价报单
8:59:00 |  | 开盘前 | 非交易 |  | 非交易
9:00:00 |  | 连续交易 | 连续交易 | 连续交易 | 连续交易
9:10:00 | 集合竞价报单 |  |  |  |
9:14:00 | 集合竞价撮合 |  |  |  |
9:15:00 | 连续交易 |  |  |  |
9:25:00 | 集合竞价报单 |  |  |  |
9:29:00 | 集合竞价撮合 |  |  |  |
9:30:00 | 连续交易 |  |  |  |
10:15:00 |  | 开盘前 | 非交易 | 非交易 | 非交易
10:30:00 |  | 连续交易 | 连续交易 | 连续交易 | 连续交易
11:30:00 | 非交易 | 开盘前 | 非交易 | 非交易 | 非交易
13:00:00 | 连续交易 | 连续交易 | 连续交易 | 连续交易 | 连续交易
15:00:00 | 收盘 | 收盘 | 收盘 | 收盘 | 收盘
15:15:00 | 收盘 |  |  |  |

回到顶部

◇ 2.关于EnterTime字段

EnterTime表示的是进入本状态时间，该时间指的是交易所时间；但郑商所例外，因为郑商所的合约状态变化是通过交易所的行情报盘推送的，其中没有时间戳，因此CTP会打上本地时间戳，也就是说郑商所的合约状态变化报文中的EnterTime表示的是CTP本地时间。


报单流控、查询流控和会话数控制

1.报单流控

2.查询流控

3.FTD报文流控

4.前置连接数流控

5.同一用户最大允许在线会话数

6.交易所API流控

回到顶部

< 前页 回目录 后页 >

CTP交易系统基于安全和性能考虑，在诸多地方有流量控制，其中流量控制又分FTD报文流量控制、报单流量控制、查询流量控制等。而这些流量控制分布在各个不同的地方。此处将会给大家详细介绍。

◇ 1.报单流控

报单流控是指用户在本交易系统报单（ReqOrderInsert）、撤单（ReqOrderAction)时每秒内允许的最大笔数。

报单流控限制配置在CTP柜台端【程序化交易频繁报撤单管理】菜单。

如果超过这个限制API会通过OnRspOrderAction提示：“CTP:下单频率限制”。

回到顶部

◇ 2.查询流控

查询流控是指用户当前Session在做查询的时候每秒内允许的最大请求笔数。

查询流控配置在交易前置组件上，配置项为【QryFreq】。其中API内置了在途查询流控1笔。

自从穿透式监管版本以后，API在连接交易前置时，会去查询到前置的查询流控设置（该设置配置在front_se组件）。假设前置配置了2笔/秒，那么连接该前置的API每秒只能发起2笔查询请求。

但是要注意，不管怎么配置，API都内置了在途流控，在途查询流控为1笔。即，当前这笔查询请求发出后，在未收完所有的查询响应前，不能发起下一笔查询请求。

在过去，查询流控是内置在API里，1笔每秒，在途1笔。

如果超过交易前置配置的查询流控，则会触发OnRspError，并提示：“CTP：查询未就绪，请稍后重试”

如果超过API内置的在途流控，则查询请求的返回值为-2，表示未处理请求超过许可数。

所有ReqQuery开头查询函数不受流控限制，原因是此类函数都是通过交易核心处理的，不通过查询核心。

回到顶部

◇ 3.FTD报文流控

FTD报文流控是指用户当前Session在提交API指令的时候每秒内允许的最大请求笔数。

FTD报文流控配置在交易前置组件上，配置项为【FTDMaxCommFlux】。

FTD报文流控是一种综合性的流控手段，API的所有接口在跟前置交互的时候都是使用FTD协议的报文进行通讯的，因此这就意味着，登录、查询、报单、撤单和报价等等所有请求都在FTD报文流控的限制范围内。

例如如果配置为6，可以简单理解为用户仅能调用6次API请求指令，包括登录、查询、报单撤单等等。

如果超过FTD报文流控，则超过的指令会被缓存到前置，直到下一秒发出。例如用户在一秒内报单10笔，则前6笔会立即发送给核心，而后4笔则会被缓存在前置，到下一秒才发出。因此对于用户程序端的感受就是后4笔报单延迟很大，实则是受到了流控。

注意，FTD报文流控不会有错误信息或错误返回。

回到顶部

◇ 4.前置连接数流控

前置连接数流控是指在本交易前置对同一IP每秒允许的最大API连接请求数。

前置连接数流控配置在交易前置组件上，配置项为【ConnectFreq】。如果不设置就表示不限制流控。

需要注意的是，API连接请求指的是API从init到OnFrontConnected的过程，跟登录无关。可以简单理解为一次init就是一个连接请求。

例如如果配置为20，则一秒内最多有20个session建立跟前置的连接。

如果超过前置连接数流控则会被主动断开连接，触发OnFrontDisconnected。因此用户如果发现自己的程序一连接前置就被断开，则除了版本问题外，有可能是遇到了连接数流控。

想要指定ip不受流控限制的话，可以通过在front_se的bin目录下面新建一个文件名为whiteiplist的文件，每个ip单独一行。

回到顶部

◇ 5.同一用户最大允许在线会话数

同一用户最大允许在线会话数是指同一个用户（UserID）在本交易系统中同时登录在线的最大允许会话数。

同一用户最大允许在线会话数配置在柜台或交易核心中。

注意，这个会话数针对的是本交易系统，而非单一前置。

如果超过同一用户最大允许在线会话，则会通过OnRspUserLogin返回“CTP:用户在线会话超出上限”的错误。

回到顶部

◇ 6.交易所API流控

交易所API流控指通过交易所API发送报单等请求的每秒最大允许数。

交易所API流控的阈值设置在交易所端，由交易所API查询获取，该流控实际控制在交易所API端。

受到交易所流控后会触发OnRtnOrder，报“CTP：交易所每秒发送请求数超过许可数”或者“CTP:交易所未处理请求超过许可数”。


通讯模式

1.通讯模式

2.数据流

3.业务与接口对照

回到顶部

< 前页 回目录 后页 >

交易员API使用建立在TCP协议之上FTD协议与交易托管系统进行通讯，交易托管系统负责投资者的交易业务处理。

◇ 1.通讯模式

FTD 协议中的所有通讯都基于某个通讯模式。通讯模式实际上就是通讯双方协同工作的方式。

FTD涉及的通讯模式共有三种：

  • 对话通讯模式

对话通讯模式是指由会员端主动发起的通讯请求。该请求被交易所端接收和处理，并给予响应。例如报单、查询等。这种通讯模式与普通的客户/服务器模式相同。

  • 私有通讯模式

私有通讯模式是指交易所端主动，向某个特定的会员发出的信息。例如成交回报等。

  • 广播通讯模式（公有流）

广播通讯模式又称公有流，是指交易所端主动，向市场中的所有会员都发出相同的信息。例如公告、市场公共信息等。

通讯模式和网络的连接不一定存在简单的一对一的关系。也就是说，一个网络连接中可能传送多种不同通讯模式的报文，一种通讯模式的报文也可以在多个不同的连接中传送。

无论哪种通讯模式，其通讯过程都如下图所示

回到顶部

◇ 2.数据流

交易托管系统支持对话通讯模式、私有通讯模式、广播通讯模式：

  • 对话通讯模式下支持对话数据流和查询数据流：

对话数据流是一个双向数据流，交易托管系统发送交易请求，交易系统反馈应答。交易系统不维护对话流的状态。系统故障时，对话数据流会重置，通讯途中的数据可能会丢失。

查询数据流是一个双向数据流，交易托管系统发送查询请求，交易系统反馈应答。交易系统不维护查询流的状态。系统故障时，查询数据流会重置，通讯途中的数据可能会丢失。

  • 私有通讯模式下支持私有数据流：

私有流是一个单向数据流，由交易系统发向交易托管系统，用于传送交易员私有的通知和回报信息。私有流是一个可靠的数据流，交易系统维护每个交易托管系统的私有流，在一个交易日内，交易托管系统断线后恢复连接时，可以请求交易系统发送指定序号之后的私有流数据。私有数据流向交易托管系统提供报单状态报告、成交回报更等信息。

  • 广播通讯模式下支持公共数据流：

公共数据流是一个单向数据流，由交易系统发向交易托管系统，用于发送市场公共信息；公共数据流也是一个可靠的数据流，交易系统维护整个系统的公共数据流，在一个交易日内，交易托管系统断线恢复连接时，可以请求交易系统发送指定序号之后的公共数据流数据。

回到顶部

◇ 3.业务与接口对照

业务类型 | 业务 | 请求接口 | 响应接口 | 数据流
登录 | 登录 | CThostFtdcTraderApi:: ReqUserLogin | CThostFtdcTraderSpi:: OnRspUserLogin | 对话流
 | 登出 | CThostFtdcTraderApi:: ReqUserLogout | CThostFtdcTraderSpi:: OnRspUserLogout | 对话流
 | 修改用户口令 | CThostFtdcTraderApi:: ReqUserPasswordUpdate | CThostFtdcTraderSpi:: OnRspUserPasswordUpdate | 对话流
交易 | 报单录入 | CThostFtdcTraderApi:: ReqOrderInsert | CThostFtdcTraderSpi:: OnRspOrderInsert | 对话流
 | 报单操作 | CThostFtdcTraderApi:: ReqOrderAction | CThostFtdcTraderSpi:: OnRspOrderAction | 对话流
 | 报价录入 | CThostFtdcTraderApi:: ReqQuoteInsert | CThostFtdcTraderSpi:: OnRspQuoteInsert | 对话流
 | 报价操作 | CThostFtdcTraderApi:: ReqQuoteAction | CThostFtdcTraderSpi:: OnRspQuoteAction | 对话流
私有回报 | 成交回报 | N/A | CThostFtdcTraderSpi:: OnRtnTrade | 私有流
 | 报单回报 | N/A | CThostFtdcTraderSpi:: OnRtnOrder | 私有流
 | 报单录入错误回报 | N/A | CThostFtdcTraderSpi:: OnErrRtnOrderInsert | 私有流
 | 报单操作错误回报 | N/A | CThostFtdcTraderSpi:: OnErrRtnOrderAction | 私有流
查询 | 报单查询 | CThostFtdcTraderApi:: ReqQryOrder | CThostFtdcTraderSpi:: OnRspQryOrder | 查询流
 | 成交查询 | CThostFtdcTraderApi:: ReqQryTrade | CThostFtdcTraderSpi:: OnRspQryTrade | 查询流
 | 投资者查询 | CThostFtdcTraderApi:: ReqQryInvestor | CThostFtdcTraderSpi:: OnRspQryInvestor | 查询流
 | 投资者持仓查询 | CThostFtdcTraderApi:: ReqQryInvestorPosition | CThostFtdcTraderSpi:: OnRspQryInvestorPosition | 查询流
 | 合约查询 | CThostFtdcTraderApi:: ReqQryInstrument | CThostFtdcTraderSpi:: OnRspQryInstrument | 查询流
通知 | 合约状态 | N/A | CThostFtdcTraderSpi:: OnRtnInstrumentStatus | 公有流

交易接口和私有流接口会有相互关联，如用户报单录入ReqOrderInsert，马上会收到报单响应OnRspOrderInsert，说明交易系统已经收到报单。报单进入交易系统后，如果报单的交易状态发生变化，就会收到报单回报OnRtnOrder。如果报单被撮合(部分)成交，就会收到成交回报OnRtnTrade。其中，一个用户的报单回报和成交回报也会被所属会员下其他的用户接受到。


TAS介绍

1. 报单

2. 成交

3. 持仓

4. 手续费和保证金

5. 盈亏

6.合约行情

7.代码示例

回到顶部

< 前页 回目录 后页 >

本文旨在介绍CTP API中与TAS（Trading at Settlement, TAS 盘中结算价交易机制）业务相关的内容，具体交易细则请参考交易所官方文档。

◇ 1. 报单

接口名称：ReqOrderInsert

  1. 合约（InstrumentID）：填写TAS合约，如对sc1901进行TAS交易，则合约填写sc1911TAS

  2. 价格（LimitPrice）：必须为0。

  3. 类型（OrderPriceType）：只支持限价指令THOST_FTDC_OPT_LimitPrice。

其余字段与标的期货对应字段意义相同（买卖方向、平今平昨、投机套保等字段都需填写）。

TAS开仓，盘中成交后直接计入期货持仓；TAS平仓区分平今/平昨，平对应的期货持仓；平仓的仓位冻结按照标的合约进行冻结。

回到顶部

◇ 2. 成交

接口名称：OnRtnTrade

  1. 交易成交类型(TradeType)：为普通成交THOST_FTDC_TRDT_Common。

  2. 成交价（Price）：对于TAS成交，成交价无意义。

回到顶部

◇ 3. 持仓

接口名称：OnRspQryInvestorPositionDetail

  1. 持仓明细新增字段特殊持仓标志（SpecPosiType）：标识该明细为tas衍生成交。

接口名称：OnRspQryInvestorPosition

  1. 持仓汇总新增字段tas持仓手数（TasPosition）：记录该汇总中TAS开仓的数量。

  2. 持仓汇总新增字段tas持仓成本（TasPositionCost）：记录该汇总中TAS持仓成本。

回到顶部

◇ 4. 手续费和保证金

开仓保证金和手续费冻结都按照标的合约停板价冻结。

实收保证金率和手续费率都按照标的合约计算。

保证金率和手续费率使用标的合约的费率，通过费率查询接口只能查询到标的合约的费率。

回到顶部

◇ 5. 盈亏

计算持仓盈亏的时候，对于(总数量-TAS数量)部分计算持仓盈亏和保证金。对于TAS数量不计算盈亏。

回到顶部

◇ 6.合约行情

合约代码、合约状态、买卖方向、报单量、成交量、日期、时间等字段正常发布。其余字段无意义，均为空。

盘中TAS成交量、成交额不计入标的合约的成交量、成交额。

回到顶部

◇ 7.代码示例

void orderinsert()
{
    CThostFtdcInputOrderField t = { 0 };
    strcpy_s(t.BrokerID, "1007");
    strcpy_s(t.InvestorID, "10000001");
    strcpy_s(t.UserID, "10000001");
    t.Direction = THOST_FTDC_D_Sell;
    t.CombOffsetFlag[0] = THOST_FTDC_OF_Open;
    t.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;
    t.ContingentCondition = THOST_FTDC_CC_Immediately;
    strcpy_s(t.InstrumentID, "sc2006TAS");  //tas合约代码
    t.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;;
    t.LimitPrice = 0;   //价格为0
    t.StopPrice = 0;
    t.OrderPriceType = THOST_FTDC_OPT_LimitPrice;
    t.VolumeCondition = THOST_FTDC_VC_AV;
    t.TimeCondition = THOST_FTDC_TC_GFD;
    t.VolumeTotalOriginal = 10;
    m_ptraderapi->ReqOrderInsert(&t, m_requestid++);
}


条件单规则

1.简介

2.指令介绍

回到顶部

< 前页 回目录

◇ 1.简介

条件单是一个带有触发条件的指令。该触发条件可以以市场上的最新行情为基准，也可以以指定价格为基准。比如：一个投资者有1手IF1910的空头持仓，并希望在市场价低于2200时买入平仓，他就可以使用条件单。这样当行情波动到满足该条件时，该报单就会被自动触发报出，而不需要他本人时刻盯着电脑屏幕去监视市场行情。

申报条件单时，条件单的报单回报中OrderSysID是以字符串“TJBD_”开头的由CTP系统自定义的报单编号，针对该交易所当日唯一；只对成功申报的条件单编号，错单不编号。因为这种情况下的编号由CTP系统自行维护，与交易所无关，仅用于管理本系统内的该条件单。

有效的使用条件单，可以做出限价止损指令（stop-and-limit order）和触及市价指令（market-if-touched order）。

CTP条件单为CTP后台系统自带指令，并非交易所官方支持指令。

回到顶部

◇ 2.指令介绍

报入条件单指令使用ReqOrderInsert函数

其中的核心数据结构是CThostFtdcInputOrderField

在结构体中和普通报单有区别的字段如下：

    ///触发条件
    TThostFtdcContingentConditionType   ContingentCondition;
    ///止损价
    TThostFtdcPriceType StopPrice;

条件单有效的触发条件如下：

    ///最新价大于条件价
    #define THOST_FTDC_CC_LastPriceGreaterThanStopPrice '5'
    ///最新价大于等于条件价
    #define THOST_FTDC_CC_LastPriceGreaterEqualStopPrice '6'
    ///最新价小于条件价
    #define THOST_FTDC_CC_LastPriceLesserThanStopPrice '7'
    ///最新价小于等于条件价
    #define THOST_FTDC_CC_LastPriceLesserEqualStopPrice '8'
    ///卖一价大于条件价
    #define THOST_FTDC_CC_AskPriceGreaterThanStopPrice '9'
    ///卖一价大于等于条件价
    #define THOST_FTDC_CC_AskPriceGreaterEqualStopPrice 'A'
    ///卖一价小于条件价
    #define THOST_FTDC_CC_AskPriceLesserThanStopPrice 'B'
    ///卖一价小于等于条件价
    #define THOST_FTDC_CC_AskPriceLesserEqualStopPrice 'C'
    ///买一价大于条件价
    #define THOST_FTDC_CC_BidPriceGreaterThanStopPrice 'D'
    ///买一价大于等于条件价
    #define THOST_FTDC_CC_BidPriceGreaterEqualStopPrice 'E'
    ///买一价小于条件价
    #define THOST_FTDC_CC_BidPriceLesserThanStopPrice 'F'
    ///买一价小于等于条件价
    #define THOST_FTDC_CC_BidPriceLesserEqualStopPrice 'H'

条件价对应的字段为StopPrice