行情订阅
订阅行情
SubscribeQuote(ISet<String> symbols)
取消方法CancelSubscribeQuote(ISet<String> symbols)
说明
订阅API,提供了股票行情数据订阅服务,可以实时获取行情的变化信息。 行情订阅推送接口是异步接口,通过实现IApiComposeCallback接口可以获得异步请求结果。 回调接口返回结果类型为基本行情QuoteBasicData
对象,最优报价QuoteBBOData
对象。
输入参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbols | ISet<String> | Yes | 股票代码列表 |
股票symbol格式: 如:AAPL
, 00700
返回值
字段 | 类型 | 说明 |
---|---|---|
id | uint | sdk订阅请求时本地生成的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
对象。
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbols | ISet<String> | Yes | 期权代码列表 |
期权symbol格式:期权symbol支持2种格式。 一种是symbol名称+到期日+行权价格+方向,以空格分隔。如:(AAPL 20190329 182.5 PUT)。 另一种为identifier,查询期权行情时返回该字段。如:(SPY 190508C00290000)
返回值
字段 | 类型 | 说明 |
---|---|---|
id | uint | sdk订阅请求时本地生成的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
对象。
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbols | ISet<String> | Yes | 期货代码列表 |
返回值
字段 | 类型 | 说明 |
---|---|---|
id | uint | sdk订阅请求时本地生成的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
对象。
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbols | ISet<String> | Yes | 股票、期权、期货代码列表 |
返回值
字段 | 类型 | 说明 |
---|---|---|
id | uint | sdk订阅请求时本地生成的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)
返回数据
数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
symbol | string | 股票标的 |
timestamp | long | 深度数据时间 |
ask | List<OrderBook> | 卖盘数据 |
bid | List<OrderBook> | 买盘数据 |
OrderBook的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
price | double | 每档价格 |
volume | long | 挂单量 |
orderCount | int | 订单数(只有港股股票有值) |
exchange | string | 期权数据源(只有期权有值),如果price或volume为0,表示这个数据源的报价已失效。枚举值详见: 期权交易所 |
time | long | 期权交易所挂单时间戳(只有期权有值) |
回调结果示例
// 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
对象。
支持美国和香港市场股票、期货标的订阅
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbols | ISet<String> | Yes | 股票、期货代码列表 |
返回值
字段 | 类型 | 说明 |
---|---|---|
id | uint | sdk订阅请求时本地生成的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数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
symbol | string | 股票标的、期货标的 |
secType | SecType | STK/FUT |
quoteLevel | string | 数据来自的行情权限级别(对于美股,usQuoteBasic的逐笔数据量比usStockQuote的要少);期货没有级别区分 |
timestamp | long | 数据时间戳 |
ticks | List<Tick> | 逐笔成交数据集合 |
ticks的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
sn | long | 逐笔序号 |
volume | long | 成交量 |
tickType | string | *表示不变,+表示涨,-表示跌(期货逐笔没有) |
price | double | 成交价 |
time | long | 交易时间戳 |
cond | string | 每笔数据的成交条件列表,如果数组为空表示当前批量的每笔都为自动对盘成交(期货逐笔没有) |
partCode | string | 每笔交易的交易所code(仅美股股票) |
partName | string | 每笔交易的交易所名(仅美股股票) |
回调结果示例
// 美股
{"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)两个指标的榜单数据
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
market | Market | Yes | 市场,支持US, HK |
indicators | ISet<Indicator> | No | 股票榜单指标,默认为全部指标,参考枚举StockRankingIndicator的值(changeRate:当天涨幅; changeRate5Min:5分钟涨幅; turnoverRate:换手率; amount:当日成交额; volume:当日成交量; amplitude:当日振幅) |
返回值
字段 | 类型 | 说明 |
---|---|---|
id | string | sdk订阅请求时本地生成的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数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
market | string | 市场:US/HK |
timestamp | long | 时间戳 |
topData | List<TopData> | 各指标榜单数据列表 |
TopData的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
targetName | string | 指标名(changeRate, changeRate5Min, turnoverRate, amount, volume, amplitude) |
item | List<StockItem> | 该指标维度下的榜单数据列表 |
StockItem的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
symbol | string | 标的 |
latestPrice | double | 最新价 |
targetValue | double | 对应指标值 |
回调结果示例
{
"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所有指标。
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
market | Market | Yes | 市场,支持US |
indicators | ISet<Indicator> | No | 期权榜单指标,默认为全部指标,参考枚举OptionRankingIndicator的值(bigOrder:异动大单, volume:当日累计成交量, amount:当日累计成交额, openInt:未平仓量) |
返回值
字段 | 类型 | 说明 |
---|---|---|
id | string | sdk订阅请求时本地生成的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数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
market | string | 市场:US |
timestamp | long | 时间戳 |
topData | List<TopData> | 各指标榜单数据列表 |
TopData的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
targetName | string | 指标名(bigOrder, volume, amount, openInt) |
bigOrder | List<BigOrder> | 异动大单指标(bigOrder)数据列表 |
item | List<OptionItem> | 该指标维度下的榜单数据列表 |
BigOrder的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
symbol | string | 股票、ETF标的 |
expiry | string | 过期日,格式:yyyyMMdd |
strike | string | 行权价 |
right | string | CALL/PUT |
dir | string | 买卖方向:BUY/SELL/NONE |
volume | double | 成交量 |
price | double | 成交价 |
amount | double | 成交额 |
tradeTime | long | 成交时间戳 |
OptionItem的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
symbol | string | 股票、ETF标的 |
expiry | string | 过期日,格式:yyyyMMdd |
strike | string | 行权价 |
right | string | CALL/PUT |
totalAmount | double | 成交额 |
totalVolume | double | 成交量 |
totalOpenInt | double | 未平仓量 |
volumeToOpenInt | double | 成交量/未平仓量 |
latestPrice | double | 最新价 |
updateTime | long | 指标数据更新时间戳 |
回调结果示例
{
"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
对象。
支持美国和香港市场股票的订阅
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbols | ISet<String> | Yes | 股票代码列表 |
返回值
字段 | 类型 | 说明 |
---|---|---|
id | uint | sdk订阅请求时本地生成的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数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
symbol | string | 股票标的 |
timestamp | long | 数据时间戳 |
ticks | List<Tick> | 逐笔成交数据集合 |
ticks的数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
sn | long | 逐笔序号 |
time | long | 交易时间戳 |
price | float | 成交价 |
volume | long | 成交量 |
type | string | *表示中性,+表示主动买入,-表示主动卖出 |
cond | string | 每笔数据的成交条件列表,如果数组为空表示当前批量的每笔都为自动对盘成交,可能为null |
partCode | string | 每笔交易的交易所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
对象。
支持美国和香港市场股票的订阅
请求参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
symbols | ISet<String> | Yes | 股票代码列表 |
返回值
字段 | 类型 | 说明 |
---|---|---|
id | uint | sdk订阅请求时本地生成的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数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
time | long | 分钟时间戳 |
open | float | 开始价 |
high | float | 最高价 |
low | float | 最低价 |
close | float | 最终价 |
avg | float | 平均价 |
volume | long | 成交量 |
count | int | 成交笔数 |
symbol | string | 股票标的 |
amount | double | 成交金额 |
serverTimestamp | long | 服务器推送时间戳 |
回调结果示例
{ "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));
}
回调数据结构如下:
字段 | 类型 | 说明 |
---|---|---|
limit | int | 订阅行情标的(股票、期权、期货)限制最大数 |
used | int | 已订阅行情标的(股票、期权、期货)数 |
subscribedSymbols | array | 已订阅行情标的(股票、期权、期货)标的 |
askBidLimit | int | 订阅深度行情股票限制最大数 |
askBidUsed | int | 已订阅深度行情股票数 |
subscribedAskBidSymbols | array | 已订阅深度行情股票标的 |
tradeTickLimit | int | 订阅逐笔成交股票限制最大数 |
tradeTickUsed | int | 已订阅逐笔成交股票数 |
subscribedTradeTickSymbols | array | 已订阅逐笔成交股票标的 |
回调结果示例
{
"askBidLimit":10,
"askBidUsed":0,
"limit":20,
"subscribedAskBidSymbols":[
],
"subscribedSymbols":[
],
"subscribedTradeTickSymbols":[
"PDD",
"AMD",
"SPY",
"01810"
],
"tradeTickLimit":20,
"tradeTickUsed":4,
"used":0
}