CQdpFtdcTraderSpi接口
CQdpFtdcTraderSpi实现了事件通知接口。用户必需派生CQdpFtdcTraderSpi接口,编写事件处理方法来处理感兴趣的事件 。
OnFrontConnected方法
当客户端与QDP系统建立起通信连接时(还未登录前),该方法被调用。
函数原形:
void OnFrontConnected();
本方法在完成初始化后调用,可以在其中完成用户登录任务。
OnFrontDisconnected方法
当客户端与QDP系统通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。自动重 连地址,可能是原来注册的地址,也可能是系统支持的其它可用的通信地址,它由程序自动选择。
函数原形:
void OnFrontDisconnected(int nReason);
参数:
nReason: 连接断开原因
0x1001: 网络读失败
0x1002: 网络写失败
0x2001: 接收心跳超时
0x2002: 发送心跳失败
0x2003: 收到错误报文
OnHeartBeatWarning方法
心跳超时警告。当长时间未收到报文时,该方法被调用。
函数原形:
void OnHeartBeatWarning(int nTimeLapse);
参数:
nTimeLapse: 距离上次接收报文的时间
OnPackageStart方法
报文回调开始通知。当API收到一个报文后,首先调用本方法,然后是各数据域的回调,最后是报文回调结束通知。
函数原形:
void OnPackageStart(int nTopicID, int nSequenceNo);
参数:
nTopicID: 主题代码(如私有流、公共流、行情流等)
nSequenceNo: 报文序号
OnPackageEnd方法
报文回调结束通知。当API收到一个报文后,首先调用报文回调开始通知,然后是各数据域的回调,最后调用本方法。
函数原形:
void OnPackageStart(int nTopicID, int nSequenceNo);
参数:
nTopicID: 主题代码(如私有流、公共流、行情流等)
nSequenceNo: 报文序号
OnRspError方法
针对用户请求的出错通知。
函数原形:
void OnRspError(CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
参数:
pRspInfo: 返回用户响应信息的地址。
响应信息CQdpFtdcRspInfoField说明,下面的pRspInfo响应消息结构与此相同。
字段名称 | 字段类型 | 返回字段是否有值 | 字段说明 |
---|---|---|---|
ErrorID | Int | 是 | 错误代码 |
ErrorMsg | Char(81) | 是 | 错误信息 |
nRequestID: 返回用户操作请求的ID,该ID 由用户在操作请求时指定。
bIsLast: 指示该次返回是否为针对nRequestID的最后一次返回。
OnRspUserLogin方法
当客户端发出登录请求之后,QDP返回响应时,该方法会被调用,通知客户端登录是否成功。
函数原形:
void OnRspUserLogin(CQdpFtdcRspUserLoginField *pRspUserLogin, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
参数:
pRspUserLogin: 返回用户登录信息的地址。
用户登录应答信息CQdpFtdcRspUserLoginField说明
字段名称 | 字段类型 | 返回字段是否有值 | 字段说明 |
---|---|---|---|
TradingDay | Char(9) | 是 | 交易日 |
BrokerID | Char(11) | 是 | 经纪公司编号 |
UserID | Char(16) | 是 | 登录账号 |
LoginTime | Char(9) | 是 | 登录时间,格式hh:mm:ss |
MaxOrderLocalID | Char(23) | 否 | 用户最大本地报单号,登录成功时返回的都是空值 |
TradingSystemName | Char(61) | 否 | 交易系统名称 |
DataCenterID | Int | 否 | 保留字段,目前没什么用 |
PrivateFlowSize | Int | 有 | 用户私有流当前长度 |
UserFlowSize | Int | 有 | 保留字段,目前没什么用 |
DataCenterID | Int | 否 | 保留字段,目前没什么用 |
SessionID | Int | 有 | 当前连接的会话编号 |
FrontID | Int | 有 | 当前连接的前置编号 |
pRspInfo: 返回用户响应信息的地址。特别注意在有连续的成功的响应数据时,中间有可能返回NULL,但第一次不会,以下同。错误代码为0时,表示操作成功,以下同。
响应信息CQdpFtdcRspInfoField说明,详见OnRspError方法。
nRequestID: 返回用户登录请求的ID,该ID 由用户在登录时指定。
bIsLast: 指示该次返回是否为针对nRequestID的最后一次返回。
OnRspUserLogout方法
当客户端发出退出请求之后,QDP返回响应时,该方法会被调用,通知客户端退出是否成功。
函数原形:
void OnRspUserLogout(CQdpFtdcRspUserLogoutField *pRspUserLogout, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
参数:
pRspUserLogout: 返回用户退出信息的地址。
用户登出应答信息CQdpFtdcRspUserLogoutField说明
字段名称 | 字段类型 | 返回字段是否有值 | 字段说明 |
---|---|---|---|
BrokerID | Char(11) | 是 | 经纪公司编号 |
UserID | Char(16) | 是 | 登录账号 |
LogoutReason | Int | 是 | Session退出原因 |
pRspInfo: 返回用户响应信息的地址。
响应信息CQdpFtdcRspInfoField说明,详见OnRspError方法。
nRequestID: 返回用户登出请求的ID,该ID 由用户在登出时指定。
bIsLast: 指示该次返回是否为针对nRequestID的最后一次返回。
OnRspUserPasswordUpdate方法
用户密码修改应答。当客户端发出用户密码修改指令后,QDP返回响应时,该方法会被调用。
函数原形:
void OnRspUserPasswordUpdate(CQdpFtdcUserPasswordUpdateField *pUserPasswordUpdate, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
参数:
pUserPasswordUpdate: 指向用户密码修改结构的地址,包含了用户密码修改请求的输入数据。
用户密码修改应答信息CQdpFtdcUserPasswordUpdateField说明
字段名称 | 字段类型 | 返回字段是否有值 | 字段说明 |
---|---|---|---|
BrokerID | Char(11) | 是 | 经纪公司编号 |
UserID | Char(16) | 是 | 登录账号 |
OldPassword | Char(41) | 是 | 旧密码 |
NewPassword | Char(41) | 是 | 新密码 |
pRspInfo: 返回用户响应信息的地址。
响应信息CQdpFtdcRspInfoField说明,详见OnRspError方法。
nRequestID: 返回用户密码修改请求的ID,该ID由用户在密码修改时指定。
bIsLast: 指示该次返回是否为针对nRequestID的最后一次返回。
OnRspOrderInsert方法
报单录入应答。当客户端发出过报单录入指令后,QDP返回响应时,该方法会被调用。
函数原形:
void OnRspOrderInsert(CQdpFtdcInputOrderField *pInputOrder, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
参数:
pInputOrder: 指向报单录入结构的地址,包含了提交报单录入时的输入数据,和后台返回的报单编号。
用户报单应答信息CQdpFtdcInputOrderField说明
字段名称 | 字段类型 | 返回字段 是否有值 | 字段说明 |
---|---|---|---|
BrokerID | Char(11) | 是 | 经纪公司编号 |
ExchangeID | Char(11) | 是 | 交易所代码 |
OrderSysID | Char(31) | 是 | 交易所报单号(报单成功交易所会返回) |
InvestorID | Char(19) | 是 | 投资者代码 |
UserID | Char(16) | 是 | 登录账号 |
InstrumentID | Char(31) | 是 | 合约代码 |
UserOrderLocalID | Int | 是 | 用户本地报单号 |
OrderPriceType | Char(1) | 是 | 报单类型 |
Direction | Char(1) | 是 | 买卖方向 |
OffsetFlag | Char(1) | 是 | 开平仓标识 |
HedgeFlag | Char(1) | 是 | 投机套保标志 |
LimitPrice | Double | 是 | 价格 |
Volume | Int | 是 | 数量 |
TimeCondition | Char(1) | 是 | 报单有效期类型 |
GTDDate | Char(9) | 否 | GTD日期 |
VolumeCondition | Char(1) | 是 | 成交量类型 |
MinVolume | Int | 否 | 最小成交量 |
StopPrice | Double | 否 | 止损价 |
ForceCloseReason | Char(1) | 是 | 强平原因 |
IsAutoSuspend | Int | 否 | 自动挂起标志 |
BusinessUnit | Char(21) | 否 | 业务单元 |
UserCustom | Char(65) | 否 | 用户自定义域 |
BranchID | Char(7) | 否 | 营业部代码 |
RecNum | Int | 否 | 记录编号 |
BusinessType | Char(1) | 否 | 业务 类别 |
pRspInfo: 返回用户响应信息的地址。
响应信息CQdpFtdcRspInfoField说明,详见OnRspError方法。
nRequestID: 返回报单录入操作请求的ID,该ID由用户在报单录入时指定。
bIsLast: 指示该次返回是否为针对nRequestID的最后一次返回。
OnRspOrderAction方法
报单操作应答。报单操作包括报单的撤销、报单的挂起(暂不支持)、报单的激活(暂不支持)、报单的修改(暂不支持)。当客户端发出过报单操作指令后,QDP返回响应时,该方法会被调用。
函数原形:
void OnRspOrderAction(CQdpFtdcOrderActionField *pOrderAction, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
参数:
pOrderAction: 指向报单操作结构的地址,包含了提交报单操作的输入数据,和后台返回的报单编号。
用户撤单应答信息CQdpFtdcOrderActionField说明
字段名称 | 字段类型 | 返回字段是否有值 | 字段说明 |
---|---|---|---|
ExchangeID | Char(11) | 是 | 交易所代码 |
OrderSysID | Char(31) | 是 | 交易所报单号 |
BrokerID | Char(11) | 是 | 经纪公司编号 |
InvestorID | Char(19) | 是 | 投资者编号 |
UserID | Char(16) | 是 | 登录账号 |
InstrumentID | Char(31) | 否 | 合约代码 |
UserOrderActionLocalID | Int | 是 | 此次撤单操作的用户本地报单号,和报单请求的UserOrderLocalID一样递增 |
UserOrderLocalID | Int | 是 | 用户本地报单号(撤单操作是QDP的报单,否则该字段没有值) |
ActionFlag | Char(1) | 是 | 报单操作标志,撤单正常填写QDP_FTDC_AF_Delete |
LimitPrice | Double | 否 | 价格 |
VolumeChange | Int | 否 | 数量变化 |
RecNum | Int | 否 | 记录编号 |
FrontID | Int | 否 | 前置编号 |
SessionID | Int | 否 | 会话编号 |
pRspInfo: 返回用户响应信息的地址。
响应信息CQdpFtdcRspInfoField说明,详见OnRspError方法。
nRequestID: 返回用户报单操作请求的ID,该ID由用户在报单操作时指定。
bIsLast: 指示该次返回是否为针对nRequestID的最后一次返回。
OnRtnFlowMessageCancel方法
数据流回退通知(暂未启用)。
函数原形:
void OnRtnFlowMessageCancel(CQdpFtdcFlowMessageCancelField *pFlowMessageCancel);
参数:
pFlowMessageCancel: 数据流回退。
数据流回退通知信息CQdpFtdcFlowMessageCancelField说明
字段名称 | 字段类型 | 返回字段是否有值 | 字段说明 |
---|---|---|---|
SequenceSeries | Int | 是 | 序列系列号 |
TradingDay | Char(9) | 是 | 交易日 |
DataCenterID | Int | 否 | 数据中心代码 |
StartSequenceNo | Int | 是 | 回退起始序列号 |
EndSequenceNo | Int | 是 | 回退结束序列号 |
OnRtnTrade方法
成交回报。当发生成交时QDP会通知客户端,该方法会被调用。
函数原形:
void OnRtnTrade(CQdpFtdcTradeField *pTrade);
参数:
pTrade: 指向成交信息结构的地址。
成交信息CQdpFtdcTradeField说明
字段名称 | 字段类型 | 返回字段是否有值 | 字段说明 |
---|---|---|---|
TradingDay | Char(9) | 是 | 委托日期,为交易日,不是当前的自然日 |
BrokerID | Char(11) | 是 | 经纪公司编号 |
ExchangeID | Char(11) | 是 | 交易所代码 |
ParticipantID | Char(11) | 是 | 会员号 |
SeatID | Char(13) | 是 | 席位号 |
InvestorID | Char(19) | 是 | 投资者代码 |
UserID | Char(16) | 是 | 登录账号 |
TradeID | Char(21) | 是 | 成交编号 |
OrderSysID | Char(31) | 是 | 交易所报单号 |
InstrumentID | Char(31) | 是 | 合约代码 |
UserOrderLocalID | Int | 是 | 用户本地报单号 |
Direction | Char(1) | 是 | 买卖方向 |
OffsetFlag | Char(1) | 是 | 开平仓标识 |
HedgeFlag | Char(1) | 是 | 投机套保标志 |
TradePrice | Double | 是 | 成交价格 |
TradeVolume | Int | 是 | 成交数量 |
TradeTime | Char(9) | 是 | 成交时间,该时间由交易所提供 |