实时推送
C# SDK 通过 PushClient 提供 WebSocket 长连接的实时推送功能,支持行情订阅和账户事件推送,内置自动重连和心跳保活机制。
PushClient 为单例模式,通过回调接口 IApiComposeCallback 处理各类推送消息。以下为完整可运行示例:
using TigerOpenAPI.Common;
using TigerOpenAPI.Push;
using TigerOpenAPI.Push.Model;
TigerConfig config = new TigerConfig()
{
ConfigFilePath = "/path/to/tiger_openapi_config.properties"
};
// 实现回调接口
class MyCallback : IApiComposeCallback
{
public void QuoteCallback(IList<QuoteBasicData> items)
{
foreach (var item in items)
{
Console.WriteLine($"行情推送: {item.Symbol} 最新价: {item.LatestPrice}");
}
}
public void OrderCallback(IList<OrderData> items)
{
foreach (var item in items)
{
Console.WriteLine($"订单推送: {item.Symbol} 状态: {item.Status}");
}
}
public void AssetCallback(IList<AssetData> items)
{
Console.WriteLine("资产变更推送");
}
public void PositionCallback(IList<PositionData> items)
{
Console.WriteLine("持仓变更推送");
}
public void Connected()
{
Console.WriteLine("WebSocket 已连接");
}
public void Disconnected()
{
Console.WriteLine("WebSocket 已断开");
}
public void Error(string errorMsg)
{
Console.WriteLine($"推送错误: {errorMsg}");
}
}
// 获取 PushClient 实例并配置
PushClient pushClient = PushClient.GetInstance()
.Config(config)
.ApiComposeCallback(new MyCallback());
// 建立连接
pushClient.Connect();
// 订阅行情
pushClient.SubscribeQuote(new List<string> { "AAPL", "TSLA" });
// 订阅账户事件
pushClient.SubscribeAsset();
pushClient.SubscribeOrder();
pushClient.SubscribePosition();连接管理
Connect 建立连接
说明
建立 WebSocket 长连接。连接成功后会触发 Connected() 回调。支持自动重连,断线后会自动重新连接。
示例
PushClient pushClient = PushClient.GetInstance()
.Config(config)
.ApiComposeCallback(new MyCallback());
pushClient.Connect();Disconnect 断开连接
说明
主动断开 WebSocket 连接。断开后会触发 Disconnected() 回调。
示例
pushClient.Disconnect();行情订阅
SubscribeQuote 订阅行情
说明
订阅指定股票的实时行情推送。订阅成功后,当股票价格、成交量等数据发生变化时,会触发 QuoteCallback 回调。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbols | List<string> | 是 | 股票代码列表,如 ["AAPL", "TSLA"];港股如 ["00700"] |
示例
// 订阅美股行情
pushClient.SubscribeQuote(new List<string> { "AAPL", "TSLA", "MSFT" });
// 订阅港股行情
pushClient.SubscribeQuote(new List<string> { "00700" });推送数据字段
QuoteBasicData 包含以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
| Symbol | string | 股票代码 |
| LatestPrice | double | 最新价 |
| PreClose | double | 昨收价 |
| Change | double | 涨跌额 |
| ChangePercentage | double | 涨跌幅(%) |
| Volume | long | 成交量 |
| Timestamp | long | 数据时间戳(毫秒) |
CancelSubscribeQuote 取消订阅行情
说明
取消指定股票的行情推送订阅。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbols | List<string> | 是 | 要取消订阅的股票代码列表 |
示例
pushClient.CancelSubscribeQuote(new List<string> { "TSLA" });账户事件订阅
SubscribeAsset 订阅资产变更
说明
订阅账户资产变更推送。当账户净值、保证金、可用资金等发生变化时,触发 AssetCallback 回调。
示例
pushClient.SubscribeAsset();推送数据字段
AssetData 包含以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
| Account | string | 账户 ID |
| NetLiquidation | double | 账户净值 |
| CashBalance | double | 现金余额 |
| BuyingPower | double | 可用买入金额 |
| UnrealizedPnl | double | 未实现盈亏 |
| Timestamp | long | 数据时间戳(毫秒) |
SubscribeOrder 订阅订单变更
说明
订阅账户订单状态变更推送。当订单状态发生变化(如成交、撤销等)时,触发 OrderCallback 回调。
示例
pushClient.SubscribeOrder();推送数据字段
OrderData 包含以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
| Id | long | 订单 ID |
| Symbol | string | 合约代码 |
| Action | string | 买卖方向:BUY / SELL |
| Status | string | 订单状态 |
| TotalQuantity | double | 委托数量 |
| FilledQuantity | double | 已成交数量 |
| AvgFillPrice | double | 平均成交价 |
| Timestamp | long | 数据时间戳(毫秒) |
SubscribePosition 订阅持仓变更
说明
订阅账户持仓变更推送。当持仓数量、成本价等发生变化时,触发 PositionCallback 回调。
示例
pushClient.SubscribePosition();推送数据字段
PositionData 包含以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
| Account | string | 账户 ID |
| Symbol | string | 合约代码 |
| Quantity | double | 持仓数量 |
| AverageCost | double | 平均成本价 |
| MarketValue | double | 市值 |
| UnrealizedPnl | double | 未实现盈亏 |
| Timestamp | long | 数据时间戳(毫秒) |
回调接口说明
IApiComposeCallback 接口
实现此接口以处理各类推送消息:
class MyCallback : IApiComposeCallback
{
// 行情推送回调
public void QuoteCallback(IList<QuoteBasicData> items) { }
// 深度行情推送回调
public void QuoteDepthCallback(IList<QuoteDepthData> items) { }
// 逐笔成交推送回调
public void TradeTickCallback(IList<TradeTickData> items) { }
// 订单状态推送回调
public void OrderCallback(IList<OrderData> items) { }
// 资产变更推送回调
public void AssetCallback(IList<AssetData> items) { }
// 持仓变更推送回调
public void PositionCallback(IList<PositionData> items) { }
// 连接成功回调
public void Connected() { }
// 断开连接回调
public void Disconnected() { }
// 错误回调
public void Error(string errorMsg) { }
}Updated 6 days ago
