IApiComposeCallback 继承 ISubscribeApiCallback,实现类必须实现下面全部签名。行情、账户和订阅回调传递签名中声明的模型对象;连接和心跳回调传递原始参数或不传参数。
using TigerOpenAPI.Push;
using TigerOpenAPI.Push.Model;
using TigerOpenAPI.Quote.Pb;
sealed class PushCallback : IApiComposeCallback
{
public void OrderStatusChange(OrderStatusData data) { }
public void OrderTransactionChange(OrderTransactionData data) { }
public void PositionChange(PositionData data) { }
public void AssetChange(AssetData data) { }
public void TradeTickChange(TradeTick data) { }
public void FullTickChange(TickData data) { }
public void QuoteChange(QuoteBasicData data) { }
public void QuoteAskBidChange(QuoteBBOData data) { }
public void OptionChange(QuoteBasicData data) { }
public void OptionAskBidChange(QuoteBBOData data) { }
public void FutureChange(QuoteBasicData data) { }
public void FutureAskBidChange(QuoteBBOData data) { }
public void DepthQuoteChange(QuoteDepthData data) { }
public void KlineChange(KlineData data) { }
public void StockTopPush(StockTopData data) { }
public void OptionTopPush(OptionTopData data) { }
public void SubscribeEnd(int id, string subject, string result) { }
public void CancelSubscribeEnd(int id, string subject, string result) { }
public void GetSubscribedSymbolEnd(SubscribedSymbol subscribedSymbol) { }
public void Error(string errorMsg) { }
public void Error(int id, int errorCode, string errorMsg) { }
public void ConnectionClosed() { }
public void ConnectionKickout(int errorCode, string errorMsg) { }
public void ConnectionAck() { }
public void ConnectionAck(int serverSendInterval, int serverReceiveInterval) { }
public void HearBeat(string heartBeatContent) { }
public void ServerHeartBeatTimeOut(string channelId) { }
}
QuoteChange/OptionChange/FutureChange 接收 QuoteBasicData,买卖一档分别进入对应 *AskBidChange。逐笔在 UseFullTick=true 时进入 FullTickChange(TickData),否则进入 TradeTickChange(TradeTick)。回调线程上避免阻塞;将耗时处理投递到应用自己的队列。
每个回调直接接收其签名所列的具体数据对象,没有统一的外层对象。订阅和退订命令的 uint 返回值可与 SubscribeEnd、CancelSubscribeEnd 中的 id 关联;result 是 JSON 字符串,应读取其中的 code 字段,只有 code == 0 才表示业务成功。GetSubscribedSymbolEnd 只接收 SubscribedSymbol,不包含请求 ID,因此 GetSubscribedSymbols() 的返回值不能与该回调关联。
以下表格列出回调对象的字段及含义。
| 回调 | 参数 | 类型 | 说明 |
|---|
ConnectionClosed() | 无 | - | 连接已关闭,无 payload |
ConnectionKickout(int errorCode, string errorMsg) | errorCode / errorMsg | int / string | 同一 Tiger ID 的新连接替换当前连接时的错误码和说明 |
ConnectionAck() | 无 | - | 收到连接确认,无 payload |
ConnectionAck(int serverSendInterval, int serverReceiveInterval) | serverSendInterval / serverReceiveInterval | int / int | SDK 用于配置连接心跳的发送和接收间隔,单位均为毫秒 |
HearBeat(string heartBeatContent) | heartBeatContent | string | 服务端心跳内容 |
ServerHeartBeatTimeOut(string channelId) | channelId | string | 心跳超时的连接标识 |
| 字段 | C# 类型 | 说明 |
|---|
Account | string | 账户 |
Currency | string | 币种 |
SegType | string | 证券类别 |
AvailableFunds / ExcessLiquidity / NetLiquidation / EquityWithLoan / BuyingPower / CashBalance / GrossPositionValue / InitMarginReq / MaintMarginReq | double | 可用资金、流动性、净清算值、融资权益、购买力、现金、持仓总值及保证金字段 |
Timestamp | ulong | 时间戳 |
| 字段 | C# 类型 | 说明 |
|---|
Account / Symbol / Expiry / Strike / Right / Identifier / Market / Currency / SegType / SecType / Name | string | 账户、合约、市场和标的文本字段;Expiry、Strike、Right 用于期权 |
Multiplier | uint | 合约乘数 |
Position | long | 总持仓 |
PositionScale | int | 持仓精度 |
AverageCost / LatestPrice / MarketValue / UnrealizedPnl | double | 成本、最新价、市值和未实现盈亏 |
Timestamp | ulong | 时间戳 |
Saleable | long | A 股可卖数量 |
| 字段 | C# 类型 | 说明 |
|---|
Id | long | 订单 ID |
Account / Symbol / Expiry / Strike / Right / Identifier / Action / Market / Currency / SegType / SecType / OrderType / Status / ReplaceStatus / CancelStatus / Name / Source / ErrorMsg / AttrDesc / UserMark / TimeInForce | string | 订单、合约、状态和文本字段 |
Multiplier | uint | 合约乘数 |
IsLong / OutsideRth / CanModify / CanCancel / Liquidation | bool | 多头、盘前盘后、可修改、可取消和强平标志 |
TotalQuantity / FilledQuantity | long | 委托数量和成交数量 |
TotalQuantityScale / FilledQuantityScale | int | 数量精度 |
AvgFillPrice / LimitPrice / StopPrice / RealizedPnl / TotalCashAmount / FilledCashAmount / Gst | double | 价格、已实现盈亏、金额和 GST |
CommissionAndFee | float | 佣金和费用 |
OpenTime / Timestamp / UpdateTime / LatestTime | ulong | 下单、推送、订单信息更新和订单状态更新时间戳 |
AttrList | RepeatedField<string> | 订单属性列表 |
| 字段 | C# 类型 | 说明 |
|---|
Id / OrderId | long | 成交 ID / 订单 ID |
Account / Symbol / Identifier / Action / Market / Currency / SegType / SecType | string | 账户、合约和市场文本字段 |
Multiplier | uint | 合约乘数 |
FilledPrice | double | 成交价 |
FilledQuantity | long | 成交数量 |
CreateTime / UpdateTime / TransactTime / Timestamp | ulong | 创建、更新、成交和推送时间戳 |
| 字段 | C# 类型 | 说明 |
|---|
Symbol | string | 标的代码 |
Type | SocketCommon.Types.QuoteType | 报价类型 |
Timestamp | ulong | 推送时间戳 |
ServerTimestamp | ulong | 服务端时间戳 |
AvgPrice / LatestPrice / PreClose / Amount / Open / High / Low | double | 基础行情价格和成交额字段 |
LatestPriceTimestamp | ulong | 最新价时间戳 |
LatestTime / HourTradingTag / MarketStatus | string | 时间、盘前盘后标志和市场状态 |
Volume | long | 成交量 |
VolumeDecimal | double | 小数成交量 |
CumVolume | long | 累计成交量,不能替代当前时段成交量 |
CumAmount | double | 累计成交额,不能替代当前时段成交额 |
Session | string | 期权时段:GTH / CURB |
Identifier | string | 期权标识 |
OpenInt | long | 期权未平仓量 |
TradeTime | ulong | 期货最新成交时间 |
PreSettlement | double | 期货前结算价 |
MinTick | float | 期货最小变动价位 |
Mi | QuoteData.Types.Minute | 分钟数据;其字段见下表 |
| 字段 | C# 类型 | 说明 |
|---|
P | double | 分钟最新价 |
A | double | 分钟均价 |
T | ulong | 分钟时间戳 |
V | long | 分钟成交量 |
O / H / L | double | 分钟开盘价、最高价、最低价 |
| 字段 | C# 类型 | 说明 |
|---|
Symbol | string | 标的代码 |
Type | SocketCommon.Types.QuoteType | 报价类型 |
Timestamp | ulong | 推送时间戳 |
AskPrice / BidPrice | double | 最优卖价 / 买价 |
AskSize / BidSize | long | 最优卖量 / 买量 |
AskTimestamp / BidTimestamp | ulong | 最优卖 / 买时间戳 |
| 字段 | C# 类型 | 说明 |
|---|
Symbol / QuoteLevel | string | 标的代码 / 行情等级 |
SecType | SecType | 证券类型 |
Timestamp | long | 推送时间戳 |
Ticks | List<Tick> | 逐笔列表 |
Ticks[].Sn / Ticks[].Volume / Ticks[].Time | long | 序号、成交量、成交时间 |
Ticks[].Price | double | 成交价 |
Ticks[].TickType / Cond / PartCode / PartName | string | 方向、已解码条件、参与者代码和名称 |
| 字段 | C# 类型 | 说明 |
|---|
Symbol / Source | string | 标的代码 / 数据源 |
Timestamp | long | 推送时间戳 |
Ticks | RepeatedField<TickData.Types.Tick> | 完整逐笔列表 |
Ticks[].Sn / Time | long | 序号 / 成交时间 |
Ticks[].Price | float | 成交价 |
Ticks[].Volume | int | 成交量 |
Ticks[].Type / Cond / PartCode | string | 方向、原始条件代码和参与者代码 |
| 字段 | C# 类型 | 说明 |
|---|
Symbol | string | 标的代码 |
Timestamp | ulong | 推送时间戳 |
Ask / Bid | QuoteDepthData.Types.OrderBook | 卖 / 买盘 |
Ask.Price / Bid.Price | RepeatedField<double> | 各档价格 |
Ask.Volume / Bid.Volume / Ask.Time / Bid.Time | RepeatedField<long> | 各档数量和期权交易所时间 |
Ask.OrderCount / Bid.OrderCount | RepeatedField<uint> | 各档订单数 |
Ask.Exchange / Bid.Exchange | RepeatedField<string> | 期权交易所 |
| 字段 | C# 类型 | 说明 |
|---|
Time / Volume | long | K 线时间 / 成交量 |
Open / High / Low / Close / Avg | float | 价格字段 |
Count | int | 成交笔数 |
Symbol | string | 标的代码 |
Amount | double | 成交额 |
ServerTimestamp | ulong | 服务端时间戳 |
| 字段 | C# 类型 | 说明 |
|---|
Market | string | 市场 |
Timestamp | long | 推送时间戳 |
TopData | RepeatedField<StockTopData.Types.TopData> | 榜单列表 |
TopData[].TargetName | string | 指标名称 |
TopData[].Item | RepeatedField<StockTopData.Types.StockItem> | 指标项 |
TopData[].Item[].Symbol | string | 标的代码 |
TopData[].Item[].LatestPrice | double | 最新价 |
TopData[].Item[].TargetValue | double | 指标值 |
| 字段 | C# 类型 | 说明 |
|---|
Market | string | 市场 |
Timestamp | long | 推送时间戳 |
TopData | RepeatedField<OptionTopData.Types.TopData> | 榜单列表 |
TopData[].TargetName | string | 指标名称 |
TopData[].BigOrder | RepeatedField<OptionTopData.Types.BigOrder> | 大单列表 |
TopData[].Item | RepeatedField<OptionTopData.Types.OptionItem> | 指标项 |
TopData[].BigOrder[].Symbol / Expiry / Strike / Right / Dir | string | 大单合约及方向 |
TopData[].BigOrder[].Volume | double | 大单数量 |
TopData[].BigOrder[].Price | double | 大单价格 |
TopData[].BigOrder[].Amount | double | 大单金额 |
TopData[].BigOrder[].TradeTime | long | 大单成交时间 |
TopData[].Item[].Symbol / Expiry / Strike / Right | string | 期权合约 |
TopData[].Item[].TotalAmount | double | 汇总金额 |
TopData[].Item[].TotalVolume | double | 汇总成交量 |
TopData[].Item[].TotalOpenInt | double | 汇总未平仓量 |
TopData[].Item[].VolumeToOpenInt | double | 成交量与未平仓量之比 |
TopData[].Item[].LatestPrice | double | 最新价 |
TopData[].Item[].UpdateTime | long | 更新时间 |
| 字段 | C# 类型 | 说明 |
|---|
Limit / Used / AskBidLimit / AskBidUsed / TradeTickLimit / TradeTickUsed / KlineLimit / KlineUsed | int | 对应主题的订阅额度和已用数量 |
SubscribedSymbols / SubscribedAskBidSymbols / SubscribedTradeTickSymbols / SubscribedMarketQuote / SubscribedKlineSymbols | ISet<string> | 已订阅的行情、深度、逐笔、全市场和 K 线主题 |
| 参数 | C# 类型 | 说明 |
|---|
id | int | 请求 ID;与命令返回的 uint 按相同 32 位位模式关联 |
subject | string | SDK 从响应 DataType 转换得到的主题名称 |
result | string | 服务端结果 JSON;其结构未由 C# 模型定义,至少解析 code,仅 code == 0 表示成功 |
| 参数 | C# 类型 | 说明 |
|---|
errorMsg | string | 错误消息 |
id | int | 仅带 ID 重载;仅在带请求 ID 的错误回调中提供,可与命令返回的 uint 请求 ID 关联 |
errorCode | int | 仅带 ID 重载;同上 |