行情订阅

大约 19 分钟

订阅行情

SubscribeQuote(ISet<String> symbols)
取消方法
CancelSubscribeQuote(ISet<String> symbols)

说明

订阅API,提供了股票行情数据订阅服务,可以实时获取行情的变化信息。 行情订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为基本行情QuoteBasicData对象,最优报价QuoteBBOData对象。

输入参数

参数类型是否必填说明
symbolsISet<String>Yes股票代码列表

股票symbol格式: 如:AAPL, 00700

返回值

字段类型说明
iduintsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

回调接口

void QuoteChange(QuoteBasicData data)void QuoteAskBidChange(QuoteBBOData data)

示例

定义回调接口,订阅成功后,会在该回调类的对应接口中接收到数据。

using System;
using System.Text.Json.Nodes;
using Newtonsoft.Json;
using TigerOpenAPI.Common;
using TigerOpenAPI.Common.Util;
using TigerOpenAPI.Push;
using TigerOpenAPI.Push.Model;
using TigerOpenAPI.Quote.Pb;

namespace Test
{
  public class DefaultApiComposeCallback : IApiComposeCallback
  {
    public DefaultApiComposeCallback()
    {
    }

    void IApiComposeCallback.ConnectionAck()
    {
      ApiLogger.Info("connect success.");
    }

    void IApiComposeCallback.ConnectionAck(int serverSendInterval, int serverReceiveInterval)
    {
      ApiLogger.Info($"connect success. serverSendInterval:{serverSendInterval}," +
        $" serverReceiveInterval:{serverReceiveInterval}");
    }

    void IApiComposeCallback.HearBeat(string heartBeatContent)
    {
      ApiLogger.Info("HearBeat:" + heartBeatContent);
    }

    void IApiComposeCallback.ServerHeartBeatTimeOut(string channelId)
    {
      ApiLogger.Warn("ServerHeartBeatTimeOut:" + channelId);
    }

    void IApiComposeCallback.ConnectionClosed()
    {
      ApiLogger.Info("connection closed.");
    }

    void IApiComposeCallback.ConnectionKickout(int errorCode, string errorMsg)
    {
      ApiLogger.Info($"ConnectionKickout, errorCode:{errorCode}, errorMsg:{errorMsg}");
    }

    void IApiComposeCallback.Error(string errorMsg)
    {
      ApiLogger.Error("receive error:" + errorMsg);
    }

    void IApiComposeCallback.Error(int id, int errorCode, string errorMsg)
    {
      ApiLogger.Error($"receive error, id:{id}, errorCode:{errorCode}, errorMsg:{errorMsg}");
    }


    void ISubscribeApiCallback.GetSubscribedSymbolEnd(SubscribedSymbol subscribedSymbol)
    {
      ApiLogger.Info("GetSubscribedSymbolEnd:"
        + JsonConvert.SerializeObject(subscribedSymbol, TigerClient.JsonSet));
    }

    void ISubscribeApiCallback.SubscribeEnd(int id, string subject, string result)
    {
      ApiLogger.Info($"SubscribeEnd, {subject}, id:{id}, result:{result}");
    }

    void ISubscribeApiCallback.CancelSubscribeEnd(int id, string subject, string result)
    {
      ApiLogger.Info($"CancelSubscribeEnd, {subject}, id:{id}, result:{result}");
    }


    void ISubscribeApiCallback.AssetChange(AssetData data)
    {
      ApiLogger.Info("AssetChange:" + data);
    }

    void ISubscribeApiCallback.PositionChange(PositionData data)
    {
      ApiLogger.Info("PositionChange:" + data);
    }

    void ISubscribeApiCallback.OrderStatusChange(OrderStatusData data)
    {
      ApiLogger.Info("OrderStatusChange:" + data);
    }

    void ISubscribeApiCallback.OrderTransactionChange(OrderTransactionData data)
    {
      ApiLogger.Info("OrderTransactionChange:" + data);
    }


    void ISubscribeApiCallback.QuoteAskBidChange(QuoteBBOData data)
    {
      ApiLogger.Info("QuoteAskBidChange:" + data);
    }

    void ISubscribeApiCallback.QuoteChange(QuoteBasicData data)
    {
      ApiLogger.Info("QuoteChange:" + data);
    }

    void ISubscribeApiCallback.TradeTickChange(TradeTick data)
    {
      ApiLogger.Info("TradeTickChange:"
        + JsonConvert.SerializeObject(data, TigerClient.JsonSet));
    }

    void ISubscribeApiCallback.FullTickChange(TickData data)
    {
      ApiLogger.Info("FullTickChange:" + data);
    }

    void ISubscribeApiCallback.KlineChange(KlineData data)
    {
      ApiLogger.Info("KlineChange:" + data);
    }

    void ISubscribeApiCallback.DepthQuoteChange(QuoteDepthData data)
    {
      ApiLogger.Info("DepthQuoteChange:" + data);
    }

    void ISubscribeApiCallback.FutureAskBidChange(QuoteBBOData data)
    {
      ApiLogger.Info("FutureAskBidChange:" + data);
    }

    void ISubscribeApiCallback.FutureChange(QuoteBasicData data)
    {
      ApiLogger.Info("FutureChange:" + data);
    }

    void ISubscribeApiCallback.OptionAskBidChange(QuoteBBOData data)
    {
      ApiLogger.Info("OptionAskBidChange:" + data);
    }

    void ISubscribeApiCallback.OptionChange(QuoteBasicData data)
    {
      ApiLogger.Info("OptionChange:" + data);
    }

    void ISubscribeApiCallback.StockTopPush(StockTopData data)
    {
      ApiLogger.Info("StockTopPush, market:" + data.Market);
      foreach (StockTopData.Types.TopData topData in data.TopData)
      {
        ApiLogger.Info("StockTopPush, targetName:" + topData.TargetName
            + ", topList:" + topData);
      }
    }

    void ISubscribeApiCallback.OptionTopPush(OptionTopData data)
    {
      ApiLogger.Info("OptionTopPush, market:" + data.Market);
      foreach (OptionTopData.Types.TopData topData in data.TopData)
      {
        ApiLogger.Info("OptionTopPush, targetName:" + topData.TargetName
            + ", topList:" + topData);
      }
    }
  }
}

进行订阅

using System;
using Newtonsoft.Json;
using TigerOpenAPI.Common;
using TigerOpenAPI.Common.Enum;
using TigerOpenAPI.Common.Util;
using TigerOpenAPI.Config;
using TigerOpenAPI.Model;
using TigerOpenAPI.Push;
using TigerOpenAPI.Quote;
using TigerOpenAPI.Quote.Model;

namespace Test
{
  public class SubscribeDemo
  {
    private static TigerConfig config;

    static SubscribeDemo()
    {
      TigerConfig.LogDir = "/data0/logs/tiger-openapi-cs";
      config = new TigerConfig()
      {
        // 从开发者信息页面导出的配置文件tiger_openapi_config.properties、tiger_openapi_token.properties存放路径
        ConfigFilePath = "/data0/tiger_config",
        FailRetryCounts = 2, // (optional) range:[1, 5],  default is 2
        Language = Language.en_US,   // (optional) default is en_US
        TimeZone = CustomTimeZone.HK_ZONE  // (optional) default is HK_ZONE
      };
    }

    static async Task Main(string[] args)
    {
      IApiComposeCallback callback = new DefaultApiComposeCallback();
      PushClient client = PushClient.GetInstance().Config(config)
        .ApiComposeCallback(callback);
      ApiLogger.Info($"======================{client.GetUrl()}");

      // 建立连接
      client.Connect();

      ISet<string> symbols = new HashSet<string>();
      symbols.Add("AAPL");
      symbols.Add("TSLA");
      // 订阅股票行情
      ApiLogger.Info($"SubscribeQuote:{client.SubscribeQuote(symbols)}");

      //订阅深度数据(只支持股票)
      ApiLogger.Info($"SubscribeDepthQuote:{client.SubscribeDepthQuote(symbols)}");

      //查询订阅详情
      client.GetSubscribedSymbols();

      //等待接收数据
      TimeUnit.SECONDS.sleep(60000);
      //取消订阅
      ApiLogger.Info($"CancelSubscribeQuote:{client.CancelSubscribeQuote(symbols)}");
      ApiLogger.Info($"CancelSubscribeDepthQuote:{client.CancelSubscribeDepthQuote(symbols)}");
      //取消全部标的(股票,期权,期货)的行情订阅
      client.CancelSubscribeQuote();
      //取消全部标的(股票,期货)的深度行情订阅
      client.CancelSubscribeDepthQuote();
      //取消全部标的(股票,期货)的逐笔行情订阅
      client.CancelSubscribeTradeTick();

      //注意:主动断开连接时会清除所有的订阅数据
      //client.disconnect();
    }
  }
}

返回数据

股票行情回调数据全部字段参考:行情推送数据

CAUTION

股票行情回调数据有两种类型:基本行情QuoteBasicData,最优报价QuoteBBOData,两种类型数据返回的字段不一样 。

港股股票行情数据示例:

{"symbol":"00700","type":"BASIC","timestamp":"1684824663658","serverTimestamp":"1684824663671","avgPrice":341.161,"latestPrice":336,"latestPriceTimestamp":"1684824663602","latestTime":"05-23 14:51:03","preClose":340.2,"volume":"10464466","amount":3569992579,"open":345.2,"high":345.6,"low":336,"marketStatus":"Trading","mi":{"p":336,"a":341.161,"t":"1684824660000","v":"2800","o":336,"h":336.2,"l":336}}

港股盘口最优买卖价行情数据示例:

{"symbol":"00700","type":"BBO","timestamp":"1684824663658","askPrice":336.2,"askSize":"8100","askTimestamp":"1684824663294","bidPrice":336,"bidSize":"29100","bidTimestamp":"1684824663492"}

美股股票行情数据示例:

{"symbol":"AAPL","type":"BASIC","timestamp":"1684767294253","serverTimestamp":"1684767294267","avgPrice":174.15846,"latestPrice":173.71,"latestPriceTimestamp":"1684767294083","latestTime":"05-22 10:54:54 EDT","preClose":175.16,"volume":"14144955","amount":2462689816.7102866,"open":173.98,"high":174.71,"low":173.45,"marketStatus":"Trading","mi":{"p":173.71,"a":174.15846,"t":"1684767240000","v":"103691","o":173.8,"h":173.83,"l":173.67}}

美股股票盘口数据示例:

{"symbol":"AAPL","type":"BBO","timestamp":"1684767294303","askPrice":173.72,"askSize":"1000","askTimestamp":"1684767294130","bidPrice":173.7,"bidSize":"1400","bidTimestamp":"1684767294130"}

美股股票盘前交易数据示例:

CAUTION

美股盘前盘后的字段和盘中不一样

{"symbol":"AAPL","type":"BASIC","timestamp":"1684753867189","serverTimestamp":"1684753867197","latestPrice":173.55,"latestPriceTimestamp":"1684753867189","latestTime":"07:11 EDT","preClose":175.16,"volume":"395061","amount":68630257.3399999,"hourTradingTag":"PreMarket","mi":{"p":173.55,"a":173.72179,"t":"1684753860000","v":"7106","o":173.58,"h":173.58,"l":173.55}}

订阅期权行情

SubscribeOption(ISet<String> symbols)
取消方法
CancelSubscribeOption(ISet<String> symbols)

说明

订阅期权行情(只支持美国市场期权)。 行情订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为基本行情QuoteBasicData对象,最优报价QuoteBBOData对象。

请求参数

参数类型是否必填说明
symbolsISet<String>Yes期权代码列表

期权symbol格式:期权symbol支持2种格式。 一种是symbol名称+到期日+行权价格+方向,以空格分隔。如:(AAPL 20190329 182.5 PUT)。 另一种为identifier,查询期权行情时返回该字段。如:(SPY 190508C00290000)

返回值

字段类型说明
iduintsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

订阅示例

ISet<string> symbols = new HashSet<string>();
//期权的一种订阅方式
symbols.add("AAPL 20230317 150.0 CALL");
//期权另外一种订阅方式
symbols.add("SPY   190508C00290000");

client.SubscribeOption(symbols);

//Wait to receive the data
TimeUnit.SECONDS.sleep(120000);
// Cancel subscription
client.CancelSubscribeOption(symbols);

对应回调接口

void OptionChange(QuoteBasicData data)void OptionAskBidChange(QuoteBBOData data)

返回数据

美股期权交易数据示例:

{"symbol":"AAPL 20230317 150.0 CALL","type":"BASIC","timestamp":"1676994444927","latestPrice":4.83,"latestPriceTimestamp":"1676994444927","latestTime":"","preClose":6.21,"volume":"3181","amount":939117.0060634613,"open":4.85,"high":5.6,"low":4.64,"identifier":"AAPL  230317C00150000","openInt":"82677"}

美股期权盘口数据示例:

{"symbol":"AAPL 20230317 150.0 CALL","type":"BBO","timestamp":"1676994393156","askPrice":4.85,"askSize":"11","askTimestamp":"1676994393156","bidPrice":4.8,"bidSize":"992","bidTimestamp":"1676994390931"}

订阅期货行情

SubscribeFuture(ISet<String> symbols)
取消方法
CancelSubscribeFuture(ISet<String> symbols)

说明

订阅期货行情。 行情订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为基本行情QuoteBasicData对象,最优报价QuoteBBOData对象。

请求参数

参数类型是否必填说明
symbolsISet<String>Yes期货代码列表

返回值

字段类型说明
iduintsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

示例

ISet<string> symbols = new HashSet<string>();
//期货订阅
symbols.add("ESmain");
symbols.add("ES2306");

client.SubscribeFuture(symbols);

//Wait to receive the data
TimeUnit.SECONDS.sleep(120000);
// Cancel subscription
client.CancelSubscribeFuture(symbols);

对应回调接口void FutureChange(QuoteBasicData data)void FutureAskBidChange(QuoteBBOData data)

返回示例

期货行情数据示例:

{"symbol":"ESmain","type":"BASIC","timestamp":"1684767707106","avgPrice":4206.201,"latestPrice":4206.5,"latestPriceTimestamp":"1684767706000","latestTime":"05-22 10:01:46 -0500","preClose":4204.75,"volume":"605805","open":4189,"high":4221.75,"low":4186.5,"marketStatus":"Trading","tradeTime":"1684767706000","preSettlement":4204.75,"minTick":0.25,"mi":{"p":4206.25,"a":4206.201,"t":"1684767660000","v":"2447","o":4207.5,"h":4207.5,"l":4205.25}}

期货盘口数据示例:

{"symbol":"ESmain","type":"BBO","timestamp":"1684767707106","askPrice":4206.75,"askSize":"112","askTimestamp":"1684767707106","bidPrice":4206.5,"bidSize":"53","bidTimestamp":"1684767707106"}

订阅深度行情

SubscribeDepthQuote(ISet<String> symbols)
取消方法
CancelSubscribeDepthQuote(ISet<String> symbols)

说明

订阅多档深度行情。只支持美股和港股的股票,美股期权和期货。美股深度行情推送频率为300ms,港股深度行情推送频率为2s,返回最高40档的买卖盘挂单数据(港股只有10档)。 行情订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为QuoteDepthData对象。

请求参数

参数类型是否必填说明
symbolsISet<String>Yes股票、期权、期货代码列表

返回值

字段类型说明
iduintsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

示例

ISet<string> symbols = new HashSet<string>();
//深度行情订阅
symbols.add("AAPL");
symbols.add("ESmain");
symbols.add("AAPL 20240209 180.0 CALL");

client.SubscribeDepthQuote(symbols);

//Wait to receive the data
TimeUnit.SECONDS.sleep(120000);
// Cancel subscription
client.CancelSubscribeDepthQuote(symbols);

回调接口

void DepthQuoteChange(QuoteDepthData data)

返回数据

数据结构如下:

字段类型说明
symbolstring股票标的
timestamplong深度数据时间
askList<OrderBook>卖盘数据
bidList<OrderBook>买盘数据

OrderBook的数据结构如下:

字段类型说明
pricedouble每档价格
volumelong挂单量
orderCountint订单数(只有港股股票有值)
exchangestring期权数据源(只有期权有值),如果price或volume为0,表示这个数据源的报价已失效。枚举值详见: 期权交易所
timelong期权交易所挂单时间戳(只有期权有值)

回调结果示例

// US Market
{"symbol":"AAPL","timestamp":"1676993368405","ask":{"price":[149.69,149.69,149.69,149.69,149.69,149.69,149.7,149.7,149.7,149.7,149.7,149.7,149.7,149.7,149.7,149.7,149.71,149.71,149.71,149.71,149.71,149.71,149.71,149.71,149.72,149.72,149.72,149.72,149.72,149.72,149.72,149.72,149.72,149.72,149.73,149.73,149.73,149.73,149.73,149.73],"volume":["100","100","23","200","100","100","200","100","100","100","82","100","100","200","25","100","185","100","100","82","87","25","100","100","100","100","76","200","100","100","16","87","100","100","100","100","200","100","76","100"]},"bid":{"price":[149.68,149.68,149.68,149.68,149.67,149.67,149.67,149.67,149.67,149.67,149.67,149.67,149.66,149.66,149.66,149.66,149.66,149.66,149.66,149.66,149.66,149.66,149.66,149.66,149.66,149.65,149.65,149.65,149.65,149.65,149.65,149.65,149.65,149.65,149.65,149.64,149.64,149.64,149.64,149.64],"volume":["84","87","100","100","100","49","100","100","87","200","100","100","100","100","100","20","1","4","1","200","100","87","25","100","200","200","100","1","25","87","100","100","100","25","100","100","100","1","87","100"]}}

// HK Market
{"symbol":"00700","timestamp":"1670465696884","ask":{"price":[311.4,311.6,311.8,312.0,312.2,312.4,312.6,312.8,313.0,313.2],"volume":["15600","5700","16600","33800","61100","14800","28300","28400","61100","39200"],"orderCount":[16,13,19,79,39,29,66,56,160,27]},"bid":{"price":[311.2,311.0,310.8,310.6,310.4,310.2,310.0,309.8,309.6,309.4],"volume":["2300","8300","18000","8800","7700","8500","26700","11700","13700","22600"],"orderCount":[10,15,18,9,6,11,17,30,10,5]}}

订阅逐笔成交数据

SubscribeTradeTick(ISet<String> symbols)
取消方法
CancelSubscribeTradeTick(ISet<String> symbols)

说明

订阅股票的逐笔成交数据,逐笔推送间隔为200ms,采用快照方式推送,每次推送最新的50条逐笔记录。 逐笔成交订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为TradeTick对象。

支持美国和香港市场股票、期货标的订阅

请求参数

参数类型是否必填说明
symbolsISet<String>Yes股票、期货代码列表

返回值

字段类型说明
iduintsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

订阅示例

ISet<string> symbols = new HashSet<string>();
//逐笔成交股票标的订阅
symbols.add("AAPL");
symbols.add("00700");
symbols.add("ESmain");

client.SubscribeTradeTick(symbols);

//Wait to receive the data
TimeUnit.SECONDS.sleep(120000);
// Cancel subscription
client.CancelSubscribeTradeTick(symbols);

对应回调接口

void TradeTickChange(TradeTick data)

TradeTick数据结构如下:

字段类型说明
symbolstring股票标的、期货标的
secTypeSecTypeSTK/FUT
quoteLevelstring数据来自的行情权限级别(对于美股,usQuoteBasic的逐笔数据量比usStockQuote的要少);期货没有级别区分
timestamplong数据时间戳
ticksList<Tick>逐笔成交数据集合

ticks的数据结构如下:

字段类型说明
snlong逐笔序号
volumelong成交量
tickTypestring*表示不变,+表示涨,-表示跌(期货逐笔没有)
pricedouble成交价
timelong交易时间戳
condstring每笔数据的成交条件列表,如果数组为空表示当前批量的每笔都为自动对盘成交(期货逐笔没有)
partCodestring每笔交易的交易所code(仅美股股票)
partNamestring每笔交易的交易所名(仅美股股票)

回调结果示例

// 美股
{"symbol":"AAPL","secType":"STK","quoteLevel":"usQuoteBasic","timestamp":1676993925700,"ticks":[{"sn":116202,"volume":50,"tickType":"*","price":149.665,"time":1676993924289,"cond":"US_REGULAR_SALE"},{"sn":116203,"volume":1,"tickType":"*","price":149.68,"time":1676993924459,"cond":"US_REGULAR_SALE"},{"sn":116204,"volume":1,"tickType":"*","price":149.67,"time":1676993925200,"cond":"US_REGULAR_SALE"},{"sn":116205,"volume":5,"tickType":"*","price":149.6652,"time":1676993925410,"cond":"US_REGULAR_SALE"}]}

// 港股
{"symbol":"00700","secType":"STK","quoteLevel":"hkStockQuoteLv2","timestamp":1669345639970,"ticks":[{"sn":35115,"volume":300,"tickType":"+","price":269.2,"time":1669345639496,"cond":"HK_AUTOMATCH_NORMAL"},{"sn":35116,"volume":200,"tickType":"+","price":269.2,"time":1669345639610,"cond":"HK_AUTOMATCH_NORMAL"}]}

// Futures trade tick
{"symbol":"HSImain","secType":"FUT","timestamp":1669345640575,"ticks":[{"sn":261560,"volume":1,"price":17465.0,"time":1669345639000},{"sn":261561,"volume":1,"price":17465.0,"time":1669345639000},{"sn":261562,"volume":1,"price":17465.0,"time":1669345639000},{"sn":261563,"volume":1,"price":17465.0,"time":1669345639000}]}

订阅股票行情榜单数据

SubscribeStockTop(Market market, ISet<Indicator> indicators)
取消方法
CancelSubscribeStockTop(Market market, ISet<Indicator> indicators)

说明

订阅股票的行情榜单数据,非交易时间不推送,推送间隔为30s,每次推送订阅指标Top30的标的数据。 推送接口是异步回调,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为StockTopData对象。各指标数据按指标值倒排序。

支持美国和香港市场股票指标的订阅,盘中数据榜单有StockRankingIndicator所有指标,美股盘前盘后只有涨幅(changeRate)和5分钟涨幅(changeRate5Min)两个指标的榜单数据

请求参数

参数类型是否必填说明
marketMarketYes市场,支持US, HK
indicatorsISet<Indicator>No股票榜单指标,默认为全部指标,参考枚举StockRankingIndicator的值(changeRate:当天涨幅; changeRate5Min:5分钟涨幅; turnoverRate:换手率; amount:当日成交额; volume:当日成交量; amplitude:当日振幅)

返回值

字段类型说明
idstringsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

订阅示例

Market market = Market.US;
ISet<Indicator> indicators = new HashSet<Indicator>();
indicators.Add(StockRankingIndicator.Amplitude);
indicators.Add(StockRankingIndicator.TurnoverRate);
//订阅市场股票榜单所有指标
client.SubscribeStockTop(market)

//Wait to receive the data
Thread.Sleep(TimeSpan.FromSeconds(1200));
// Cancel subscription of ’amplitude‘ and 'turnoverRate'
client.CancelSubscribeStockTop(market, indicators);
// Cancel all indicators's subscription
client.CancelSubscribeStockTop(market);

对应回调接口

void StockTopPush(StockTopData data)

StockTopData数据结构如下:

字段类型说明
marketstring市场:US/HK
timestamplong时间戳
topDataList<TopData>各指标榜单数据列表

TopData的数据结构如下:

字段类型说明
targetNamestring指标名(changeRate, changeRate5Min, turnoverRate, amount, volume, amplitude)
itemList<StockItem>该指标维度下的榜单数据列表

StockItem的数据结构如下:

字段类型说明
symbolstring标的
latestPricedouble最新价
targetValuedouble对应指标值

回调结果示例

{
    "market":"US",
    "timestamp":"1687278300595",
    "topData":[
        {
            "targetName":"changeRate",
            "item":[
                {
                    "symbol":"VCIG",
                    "latestPrice":9.3627,
                    "targetValue":2.308375
                },
                {
                    "symbol":"DICE",
                    "latestPrice":46.49,
                    "targetValue":0.373412
                },
                {
                    "symbol":"GYRO",
                    "latestPrice":12.4802,
                    "targetValue":0.280021
                },
                {
                    "symbol":"SPCE",
                    "latestPrice":5.7519,
                    "targetValue":0.216047
                },
                {
                    "symbol":"MGOL",
                    "latestPrice":2.5005,
                    "targetValue":0.190714
                }
                // ......
            ]
        },
        {
            "targetName":"turnoverRate",
            "item":[
                {
                    "symbol":"VCIG",
                    "latestPrice":9.3627,
                    "targetValue":36.208107
                },
                {
                    "symbol":"NUWE",
                    "latestPrice":3.03,
                    "targetValue":7.611091
                },
                {
                    "symbol":"BOF",
                    "latestPrice":4.67,
                    "targetValue":6.410152
                },
                {
                    "symbol":"RTL",
                    "latestPrice":7.04,
                    "targetValue":3.29593
                },
                {
                    "symbol":"DFLI",
                    "latestPrice":1.45,
                    "targetValue":2.224986
                }
                // ......
            ]
        },
        {
            "targetName":"amount",
            "item":[
                {
                    "symbol":"NVDA",
                    "latestPrice":431.245,
                    "targetValue":639469059.345
                },
                {
                    "symbol":"QQQ",
                    "latestPrice":365.32,
                    "targetValue":407949960.433
                },
                {
                    "symbol":"SPY",
                    "latestPrice":436.38,
                    "targetValue":402747009.348
                },
                {
                    "symbol":"AMD",
                    "latestPrice":118.3376,
                    "targetValue":224640977.406
                },
                {
                    "symbol":"RACE",
                    "latestPrice":305.745,
                    "targetValue":200281616.599
                }
                // ......
            ]
        },
        {
            "targetName":"volume",
            "item":[
                {
                    "symbol":"VCIG",
                    "latestPrice":9.3627,
                    "targetValue":77989039
                },
                {
                    "symbol":"TSLA",
                    "latestPrice":265.73,
                    "targetValue":72095435
                },
                {
                    "symbol":"SQQQ",
                    "latestPrice":19.84,
                    "targetValue":58098894
                },
                {
                    "symbol":"PLTR",
                    "latestPrice":15.74,
                    "targetValue":52396039
                },
                {
                    "symbol":"SPCE",
                    "latestPrice":5.7519,
                    "targetValue":51996141
                }
                // ......
            ]
        },
        {
            "targetName":"amplitude",
            "item":[
                {
                    "symbol":"VCIG",
                    "latestPrice":9.3627,
                    "targetValue":2.738516
                },
                {
                    "symbol":"HKIT",
                    "latestPrice":6.2411,
                    "targetValue":0.603175
                },
                {
                    "symbol":"BOF",
                    "latestPrice":4.67,
                    "targetValue":0.428894
                },
                {
                    "symbol":"ICAD",
                    "latestPrice":1.29,
                    "targetValue":0.376068
                },
                {
                    "symbol":"ATIP",
                    "latestPrice":11.3501,
                    "targetValue":0.366667
                }
                // ......
            ]
        },
        {
            "targetName":"changeRate5Min",
            "item":[
                {
                    "symbol":"CADL",
                    "latestPrice":1.36,
                    "targetValue":0.065693
                },
                {
                    "symbol":"WKLY",
                    "latestPrice":46.72,
                    "targetValue":0.039549
                },
                {
                    "symbol":"NSPR",
                    "latestPrice":2.7829,
                    "targetValue":0.031513
                },
                {
                    "symbol":"STIX",
                    "latestPrice":2.18,
                    "targetValue":0.029557
                },
                {
                    "symbol":"ELTX",
                    "latestPrice":12.41,
                    "targetValue":0.025431
                }
                // ......
            ]
        }
    ]
}

订阅期权行情榜单数据

SubscribeOptionTop(Market market, ISet<Indicator> indicators)
取消方法
CancelSubscribeOptionTop(Market market, ISet<Indicator> indicators)

说明

订阅期权的行情榜单数据,非交易时间不推送,推送间隔为30s,每次推送订阅指标Top50的标的数据。 推送接口是异步回调,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为OptionTopData对象。其中异动大单为单笔成交量大于1000,按成交时间倒排序的数据,其他指标数据为交易日累计指标值的倒序数据。

支持美国市场期权指标的订阅,盘中数据榜单有OptionRankingIndicator所有指标。

请求参数

参数类型是否必填说明
marketMarketYes市场,支持US
indicatorsISet<Indicator>No期权榜单指标,默认为全部指标,参考枚举OptionRankingIndicator的值(bigOrder:异动大单, volume:当日累计成交量, amount:当日累计成交额, openInt:未平仓量)

返回值

字段类型说明
idstringsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

订阅示例

Market market = Market.US;
ISet<Indicator> indicators = new HashSet<Indicator>();
indicators.Add(OptionRankingIndicator.Amount);
indicators.Add(OptionRankingIndicator.OpenInt);
//订阅期权所有指标
client.SubscribeOptionTop(market)

//Wait to receive the data
Thread.Sleep(TimeSpan.FromSeconds(1200));
// Cancel subscription of ’amount‘ and 'openInt'
client.CancelSubscribeOptionTop(market, indicators);
// Cancel all indicators's subscription
client.CancelSubscribeOptionTop(market);

对应回调接口

void OptionTopPush(OptionTopData data)

OptionTopData数据结构如下:

字段类型说明
marketstring市场:US
timestamplong时间戳
topDataList<TopData>各指标榜单数据列表

TopData的数据结构如下:

字段类型说明
targetNamestring指标名(bigOrder, volume, amount, openInt)
bigOrderList<BigOrder>异动大单指标(bigOrder)数据列表
itemList<OptionItem>该指标维度下的榜单数据列表

BigOrder的数据结构如下:

字段类型说明
symbolstring股票、ETF标的
expirystring过期日,格式:yyyyMMdd
strikestring行权价
rightstringCALL/PUT
dirstring买卖方向:BUY/SELL/NONE
volumedouble成交量
pricedouble成交价
amountdouble成交额
tradeTimelong成交时间戳

OptionItem的数据结构如下:

字段类型说明
symbolstring股票、ETF标的
expirystring过期日,格式:yyyyMMdd
strikestring行权价
rightstringCALL/PUT
totalAmountdouble成交额
totalVolumedouble成交量
totalOpenIntdouble未平仓量
volumeToOpenIntdouble成交量/未平仓量
latestPricedouble最新价
updateTimelong指标数据更新时间戳

回调结果示例

{
    "market":"US",
    "timestamp":"1687278750057",
    "topData":[
        {
            "targetName":"volume",
            "item":[
                {
                    "symbol":"SPY",
                    "expiry":"20230620",
                    "strike":"435.0",
                    "right":"PUT",
                    "totalAmount":5623370,
                    "totalVolume":239696,
                    "totalOpenInt":16377,
                    "volumeToOpenInt":0.014064,
                    "latestPrice":0.07,
                    "updateTime":"1687278845240"
                },
                {
                    "symbol":"SPY",
                    "expiry":"20230620",
                    "strike":"436.0",
                    "right":"PUT",
                    "totalAmount":8795321,
                    "totalVolume":233445,
                    "totalOpenInt":13403,
                    "volumeToOpenInt":0.013697,
                    "latestPrice":0.2,
                    "updateTime":"1687278795127"
                },
                {
                    "symbol":"SPY",
                    "expiry":"20230620",
                    "strike":"438.0",
                    "right":"CALL",
                    "totalAmount":4834527,
                    "totalVolume":212219,
                    "totalOpenInt":961,
                    "volumeToOpenInt":0.012452,
                    "latestPrice":0.3,
                    "updateTime":"1687278790123"
                },
                {
                    "symbol":"SPY",
                    "expiry":"20230620",
                    "strike":"437.0",
                    "right":"PUT",
                    "totalAmount":11348973,
                    "totalVolume":200958,
                    "totalOpenInt":13973,
                    "volumeToOpenInt":0.011791,
                    "latestPrice":0.49,
                    "updateTime":"1687278795127"
                },
                {
                    "symbol":"SPY",
                    "expiry":"20230620",
                    "strike":"436.0",
                    "right":"CALL",
                    "totalAmount":9323080,
                    "totalVolume":189574,
                    "totalOpenInt":238,
                    "volumeToOpenInt":0.011123,
                    "latestPrice":1.42,
                    "updateTime":"1687278795127"
                }
                // ......
            ]
        },
        {
            "targetName":"amount",
            "item":[
                {
                    "symbol":"TSLA",
                    "expiry":"20230721",
                    "strike":"5.0",
                    "right":"CALL",
                    "totalAmount":85957053,
                    "totalVolume":4881,
                    "totalOpenInt":18,
                    "volumeToOpenInt":0.000618,
                    "latestPrice":263.28,
                    "updateTime":"1687278710026"
                },
                {
                    "symbol":"TSLA",
                    "expiry":"20230721",
                    "strike":"500.0",
                    "right":"PUT",
                    "totalAmount":77230234,
                    "totalVolume":5049,
                    "volumeToOpenInt":0.00064,
                    "latestPrice":231.68,
                    "updateTime":"1687278710026"
                },
                {
                    "symbol":"TSLA",
                    "expiry":"20230623",
                    "strike":"265.0",
                    "right":"CALL",
                    "totalAmount":31774072,
                    "totalVolume":72064,
                    "totalOpenInt":12928,
                    "volumeToOpenInt":0.009128,
                    "latestPrice":8.55,
                    "updateTime":"1687278840237"
                },
                {
                    "symbol":"TSLA",
                    "expiry":"20230623",
                    "strike":"270.0",
                    "right":"CALL",
                    "totalAmount":21701753,
                    "totalVolume":69172,
                    "totalOpenInt":14302,
                    "volumeToOpenInt":0.008761,
                    "latestPrice":6.15,
                    "updateTime":"1687278845240"
                },
                {
                    "symbol":"SPY",
                    "expiry":"20230721",
                    "strike":"420.0",
                    "right":"CALL",
                    "totalAmount":21633683,
                    "totalVolume":11108,
                    "totalOpenInt":46931,
                    "volumeToOpenInt":0.000652,
                    "latestPrice":20.9,
                    "updateTime":"1687278800214"
                }
                // ......
            ]
        },
        {
            "targetName":"openInt",
            "item":[
                {
                    "symbol":"AMC",
                    "expiry":"20230721",
                    "strike":"10.0",
                    "right":"CALL",
                    "totalAmount":4954,
                    "totalVolume":847,
                    "totalOpenInt":340843,
                    "volumeToOpenInt":0.000248,
                    "latestPrice":0.09,
                    "updateTime":"1687277769115"
                },
                {
                    "symbol":"AMC",
                    "expiry":"20230721",
                    "strike":"10.0",
                    "right":"PUT",
                    "totalVolume":1,
                    "totalOpenInt":321814,
                    "latestPrice":6.2,
                    "updateTime":"1687276853278"
                },
                {
                    "symbol":"AMC",
                    "expiry":"20230721",
                    "strike":"4.0",
                    "right":"PUT",
                    "totalAmount":271188,
                    "totalVolume":4568,
                    "totalOpenInt":242101,
                    "volumeToOpenInt":0.00134,
                    "latestPrice":0.83,
                    "updateTime":"1687278630111"
                },
                {
                    "symbol":"ATVI",
                    "expiry":"20240119",
                    "strike":"85.0",
                    "right":"PUT",
                    "totalAmount":3500,
                    "totalVolume":26,
                    "totalOpenInt":230702,
                    "volumeToOpenInt":0.000016,
                    "latestPrice":7.62,
                    "updateTime":"1687277689616"
                },
                {
                    "symbol":"EEM",
                    "expiry":"20231215",
                    "strike":"47.0",
                    "right":"CALL",
                    "totalAmount":610,
                    "totalVolume":35,
                    "totalOpenInt":183054,
                    "volumeToOpenInt":0.000007,
                    "latestPrice":0.15,
                    "updateTime":"1687277518874"
                }
                // ......
            ]
        },
        {
            "targetName":"bigOrder",
            "bigOrder":[
                {
                    "symbol":"EOSE",
                    "expiry":"20230721",
                    "strike":"4.0",
                    "right":"CALL",
                    "dir":"Buy",
                    "volume":10000,
                    "price":0.3,
                    "amount":300000,
                    "tradeTime":"1687278525704"
                },
                {
                    "symbol":"CSCO",
                    "expiry":"20250117",
                    "strike":"45.0",
                    "right":"PUT",
                    "dir":"Sell",
                    "volume":1200,
                    "price":2.64,
                    "amount":316800,
                    "tradeTime":"1687278259382"
                },
                {
                    "symbol":"TSLA",
                    "expiry":"20240119",
                    "strike":"190.0",
                    "right":"PUT",
                    "dir":"None",
                    "volume":1851,
                    "price":11.45,
                    "amount":2119395,
                    "tradeTime":"1687277970685"
                },
                {
                    "symbol":"TSLA",
                    "expiry":"20240119",
                    "strike":"425.0",
                    "right":"CALL",
                    "dir":"None",
                    "volume":1851,
                    "price":11.75,
                    "amount":2174925,
                    "tradeTime":"1687277970679"
                },
                {
                    "symbol":"GOOG",
                    "expiry":"20230721",
                    "strike":"120.0",
                    "right":"CALL",
                    "dir":"Sell",
                    "volume":1000,
                    "price":5.87,
                    "amount":587000,
                    "tradeTime":"1687277435533"
                }
                // ......
            ]
        }
    ]
}

订阅全量逐笔成交数据

SubscribeTradeTick(ISet<String> symbols)
取消方法
CancelSubscribeTradeTick(ISet<String> symbols)

说明

订阅股票的全量逐笔成交数据。需要找管理员申请开通权限,区分之前的快照逐笔数据,需要在开通权限后,本地配置UseFullTick = true; 逐笔成交订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为TickData对象。

支持美国和香港市场股票的订阅

请求参数

参数类型是否必填说明
symbolsISet<String>Yes股票代码列表

返回值

字段类型说明
iduintsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

订阅示例

ISet<string> symbols = new HashSet<string>();
//逐笔成交股票标的订阅
symbols.add("AAPL");
symbols.add("00700");

client.SubscribeTradeTick(symbols);

//Wait to receive the data
TimeUnit.SECONDS.sleep(120000);
// Cancel subscription
client.CancelSubscribeTradeTick(symbols);

对应回调接口

void FullTickChange(TickData data)

TickData数据结构如下:

字段类型说明
symbolstring股票标的
timestamplong数据时间戳
ticksList<Tick>逐笔成交数据集合

ticks的数据结构如下:

字段类型说明
snlong逐笔序号
timelong交易时间戳
pricefloat成交价
volumelong成交量
typestring*表示中性,+表示主动买入,-表示主动卖出
condstring每笔数据的成交条件列表,如果数组为空表示当前批量的每笔都为自动对盘成交,可能为null
partCodestring每笔交易的交易所code(仅美股股票),可能为null

回调结果示例

{"symbol":"AAPL","ticks":[{"sn":"239962","time":"1712761836887","price":167.72,"volume":1,"type":"+"},{"sn":"239963","time":"1712761836887","price":167.72,"volume":1,"type":"+"},{"sn":"239964","time":"1712761836887","price":167.72,"volume":1,"type":"+"}],"timestamp":"1712761837063","source":"NLS"}

订阅分钟K线数据

SubscribeKline(ISet<String> symbols)
取消方法
CancelSubscribeKline(ISet<String> symbols)

说明

订阅股票的分钟K线数据,需要找管理员申请开通权限。 分钟K线订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为KlineData对象。

支持美国和香港市场股票的订阅

请求参数

参数类型是否必填说明
symbolsISet<String>Yes股票代码列表

返回值

字段类型说明
iduintsdk订阅请求时本地生成的ID,序列递增。在SubscribeEnd(int id, string subject, string result)回调方法中返回请求id和订阅是否成功的结果

订阅示例

ISet<string> symbols = new HashSet<string>();
//分钟K线股票标的订阅
symbols.add("AAPL");
symbols.add("00700");

client.SubscribeKline(symbols);

//Wait to receive the data
TimeUnit.SECONDS.sleep(120000);
// Cancel subscription
client.CancelSubscribeKline(symbols);

对应回调接口

void KlineChange(KlineData data)

KlineData数据结构如下:

字段类型说明
timelong分钟时间戳
openfloat开始价
highfloat最高价
lowfloat最低价
closefloat最终价
avgfloat平均价
volumelong成交量
countint成交笔数
symbolstring股票标的
amountdouble成交金额
serverTimestamplong服务器推送时间戳

回调结果示例

{ "time": "1712734200000", "open": 313.8, "high": 314.2, "low": 313.8, "close": 314.2, "avg": 311.78256, "volume": "31800", "count": 70, "symbol": "00700", "amount": 9827320, "serverTimestamp": "1712734243040" }

查询已订阅的标的

GetSubscribedSymbols()

说明

查询已经订阅过的标的信息

请求参数

订阅示例

client.GetSubscribedSymbols();

对应回调接口

public void GetSubscribedSymbolEnd(SubscribedSymbol subscribedSymbol) {
    ApiLogger.Info("GetSubscribedSymbolEnd:"
        + JsonConvert.SerializeObject(subscribedSymbol));
}

回调数据结构如下:

字段类型说明
limitint订阅行情标的(股票、期权、期货)限制最大数
usedint已订阅行情标的(股票、期权、期货)数
subscribedSymbolsarray已订阅行情标的(股票、期权、期货)标的
askBidLimitint订阅深度行情股票限制最大数
askBidUsedint已订阅深度行情股票数
subscribedAskBidSymbolsarray已订阅深度行情股票标的
tradeTickLimitint订阅逐笔成交股票限制最大数
tradeTickUsedint已订阅逐笔成交股票数
subscribedTradeTickSymbolsarray已订阅逐笔成交股票标的

回调结果示例

{
    "askBidLimit":10,
    "askBidUsed":0,
    "limit":20,
    "subscribedAskBidSymbols":[

    ],
    "subscribedSymbols":[

    ],
    "subscribedTradeTickSymbols":[
        "PDD",
        "AMD",
        "SPY",
        "01810"
    ],
    "tradeTickLimit":20,
    "tradeTickUsed":4,
    "used":0
}
上次编辑于: