实时推送

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 回调。

参数

参数名类型是否必填描述
symbolsList<string>股票代码列表,如 ["AAPL", "TSLA"];港股如 ["00700"]

示例

// 订阅美股行情
pushClient.SubscribeQuote(new List<string> { "AAPL", "TSLA", "MSFT" });

// 订阅港股行情
pushClient.SubscribeQuote(new List<string> { "00700" });

推送数据字段

QuoteBasicData 包含以下字段:

字段类型描述
Symbolstring股票代码
LatestPricedouble最新价
PreClosedouble昨收价
Changedouble涨跌额
ChangePercentagedouble涨跌幅(%)
Volumelong成交量
Timestamplong数据时间戳(毫秒)

CancelSubscribeQuote 取消订阅行情

说明

取消指定股票的行情推送订阅。

参数

参数名类型是否必填描述
symbolsList<string>要取消订阅的股票代码列表

示例

pushClient.CancelSubscribeQuote(new List<string> { "TSLA" });

账户事件订阅

SubscribeAsset 订阅资产变更

说明

订阅账户资产变更推送。当账户净值、保证金、可用资金等发生变化时,触发 AssetCallback 回调。

示例

pushClient.SubscribeAsset();

推送数据字段

AssetData 包含以下字段:

字段类型描述
Accountstring账户 ID
NetLiquidationdouble账户净值
CashBalancedouble现金余额
BuyingPowerdouble可用买入金额
UnrealizedPnldouble未实现盈亏
Timestamplong数据时间戳(毫秒)

SubscribeOrder 订阅订单变更

说明

订阅账户订单状态变更推送。当订单状态发生变化(如成交、撤销等)时,触发 OrderCallback 回调。

示例

pushClient.SubscribeOrder();

推送数据字段

OrderData 包含以下字段:

字段类型描述
Idlong订单 ID
Symbolstring合约代码
Actionstring买卖方向:BUY / SELL
Statusstring订单状态
TotalQuantitydouble委托数量
FilledQuantitydouble已成交数量
AvgFillPricedouble平均成交价
Timestamplong数据时间戳(毫秒)

SubscribePosition 订阅持仓变更

说明

订阅账户持仓变更推送。当持仓数量、成本价等发生变化时,触发 PositionCallback 回调。

示例

pushClient.SubscribePosition();

推送数据字段

PositionData 包含以下字段:

字段类型描述
Accountstring账户 ID
Symbolstring合约代码
Quantitydouble持仓数量
AverageCostdouble平均成本价
MarketValuedouble市值
UnrealizedPnldouble未实现盈亏
Timestamplong数据时间戳(毫秒)

回调接口说明

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) { }
}