通用
抢占行情权限
对应的请求类:TigerRequest(QuoteApiService.GRAB_QUOTE_PERMISSION)
说明
抢占行情权限,在多个设备共享一个账号时,只有主设备上会返回行情信息。所以每次切换设备时需执行行情权限抢占,将当前设备设置为主设备。若不切换设备则无需调用。
启动时默认执行一次抢占行情权限,如需配置启动时不执行抢占行情,可在构造QuoteClient实例前配置AutoGrabPermission = false
TigerConfig config = new TigerConfig()
{
ConfigFilePath = "/data0/tiger_config",
AutoGrabPermission = false // (optional) default is true
};
QuoteClient quoteClient = new QuoteClient(config);
参数
无
返回
字段名称 | 类型 | 说明 |
---|---|---|
name | string | 权限名称,具体权限取值参见下方说明 |
expireAt | long | 过期时间,时间戳格式,如为-1,表示无限制 |
name字段对应的权限名称枚举值说明:
name字段取值 | 说明 |
---|---|
hkStockQuoteLv2 | 港股Lv2权限,大陆IP赠送免费的港股API行情,无法单独购买,大陆地区用户免费赠送 |
hkStockQuoteLv2Global | 港股Lv2权限,提供实时报价数据,10档买卖盘口,逐笔成交明细以及经纪队列,非大陆用户需购买 |
usQuoteBasic | 美股Lv1行情,购买API行情后,可以在API中获取交易所上市证券(包括美股正股和 ETF,不包括美股期货和美股期权)在内的Lv1实时行情信息 |
usStockQuoteLv2Totalview | 美股Lv2行情,购买API行情后,可以在API中获取交易所上市证券(包括美股正股和 ETF,不包括美股期货和美股期权)在内的行情信息 |
usOptionQuote | 美股期权Lv1,数据基于OPRA,展示基于16家交易所报价的最新价和最优买卖一档数据 |
CMEFuturesQuoteLv2 | 芝加哥商品交易所Lv2权限,购买芝加哥商品交易所Lv2行情数据后,您可以通过API获取在CME交易的期货的实时市场数据。CME交易的期货品类包含纳斯达克、标普500指数期货以及汇率期货等。 |
CBOTFuturesQuoteLv2 | 芝加哥期货交易所Lv2权限,购买芝加哥期货交易所Lv2行情数据后,您可以通过API获取在CBOT交易的期货的实时市场数据,CBOT交易的期货品类包含道琼斯指数期货、农产品和利率期货等。 |
CBOEFuturesQuoteLv2 | 芝加哥期权交易所Lv2权限,购买后可通过API获取在芝加哥期权交易所交易的期货的L2实时行情数据 |
NYMEXFuturesQuoteLv2 | 纽约商业交易所Lv2权限,购买纽约商业交易所Lv2行情数据后,您可以通过API获取在NYMEX交易的期货的实时市场数据。NYMEX交易的期货品类包含美原油、天然气等能源期货。 |
COMEXFuturesQuoteLv2 | 纽约商品交易所Lv2权限,购买纽约商品交易所Lv2行情数据后,您可以通过API获取在COMEX交易的期货的实时市场数据。COMEX交易的期货品类包含黄金、白银等金属期货等。 |
HKEXFuturesQuoteLv2 | 香港交易所Lv2权限,香港期货交易所Lv2行情权限包含香港期货L2与香港期权L2行情数据(大陆用户可免费获取期权L2行情,无需单独购买) |
SGXFuturesQuoteLv2 | 新加坡交易所Lv2权限,购买后可通过API获取在新加坡期货交易所交易的期货的L2行情数据 |
OSEFuturesQuoteLv2 | 大阪交易所Lv2权限,购买后可通过API获取在日本大阪期货交易所交易的期货的L2实时行情数据 |
EUREXFuturesQuoteLv2 | 欧洲交易所Lv2权限,购买后可通过API获取在欧洲交易所交易的期货的L2实时行情数据 |
示例
static async Task<QuotePermissionResponse?> GrabQuotePermissionAsync(QuoteClient quoteClient)
{
TigerRequest<QuotePermissionResponse> request = new TigerRequest<QuotePermissionResponse>()
{
ApiMethodName = QuoteApiService.GRAB_QUOTE_PERMISSION
};
return await quoteClient.ExecuteAsync(request);
}
返回示例
{
"data":[
{
"name":"hkStockQuoteLv2",
"expireAt":1698767999000
},
{
"name":"usStockQuote",
"expireAt":1698767999000
},
{
"name":"usStockQuoteLv2Arca",
"expireAt":1698767999000
},
{
"name":"usStockQuoteLv2Totalview",
"expireAt":1698767999000
},
{
"name":"usOptionQuote",
"expireAt":1698767999000
}
],
"code":0,
"message":"success",
"timestamp":1677741384290,
"sign":"vN6hnR0kCj3ZHpM+e0AlE744PrpcxjqDPMF+VSpHAqARWwDiq8wTmJOQjcd3O2USoKRrnXuhSChQfN6pP/A9HylTP7UC5mzKdi1vkxx9YYIZ/852/WfPV0BdkJ4nOw72gsqpvDI7e5tYHDX5UrTXsn6A8au1XK2oG9cb8m2fwCw="
}
获取行情权限列表
对应的请求类:TigerRequest(QuoteApiService.GET_QUOTE_PERMISSION)
说明
返回行情权限列表,如果获取到的是空,可能是被另一个设备抢占了权限。
参数
无
返回
字段名称 | 类型 | 说明 |
---|---|---|
name | string | 权限名称 |
expireAt | long | 过期时间,时间戳格式,如为-1,表示无限制 |
示例
static async Task<QuotePermissionResponse?> GetQuotePermissionAsync(QuoteClient quoteClient)
{
TigerRequest<QuotePermissionResponse> request = new TigerRequest<QuotePermissionResponse>()
{
ApiMethodName = QuoteApiService.GET_QUOTE_PERMISSION
};
return await quoteClient.ExecuteAsync(request);
}
返回示例
{
"data":[
{
"name":"usStockQuote",
"expireAt":1698767999000
},
{
"name":"usStockQuoteLv2Arca",
"expireAt":1698767999000
},
{
"name":"usStockQuoteLv2Totalview",
"expireAt":1698767999000
},
{
"name":"hkStockQuoteLv2",
"expireAt":1698767999000
},
{
"name":"usOptionQuote",
"expireAt":1698767999000
},
{
"name":"hkStockQuoteLv2",
"expireAt":-1
}
],
"code":0,
"message":"success",
"timestamp":1677742241908,
"sign":"jrG1K0mls0eIXHVuBX4SqWzJ1fsLR8VEm9PNRzOrVghkACMpAClZXm4Tz7Oa6vu9JCliGkfbQtdYqLBZNt9L79b5DCBE724l+409YjtR5HxukIQENWcAuRJYRhF/F5j9Gw/SgjnMpi8Fsbm0HRVMKy8pd4UJGRrfzdUAXzRuJ0o="
}
刷新token
对应的请求类:TigerRequest(QuoteApiService.USER_TOKEN_REFRESH)
说明
只有香港牌照TBHK需要使用token(用户牌照可以登录开发者信息页面查看)。
刷新token接口,只有本地token有效才能刷新成功,如果token已失效,需要到开发者信息注册页面刷新token后导出到本地文件tiger_openapi_token.properties后使用。
token有效期为15天,sdk默认行为:每5天刷新一次token,刷新成功后会同时更新本地tiger_openapi_token.properties文件,并更新内存中ClientConfig的token值,可配置自动刷新周期的天数(RefreshTokenIntervalDays)和具体时间(RefreshTokenTime)。如需自行刷新token,请配置tigerConfig.AutoRefreshToken = false,并自行刷新token
参数
无,每次请求sdk会把token自动添加到http请求头部'Authorization'中,服务端会对token进行校验。
返回
字段名称 | 类型 | 说明 |
---|---|---|
tigerId | string | tigerId |
license | string | 牌照信息 |
token | string | token字符串 |
createTime | long | 创建时间 |
expiredTime | long | 过期时间 |
示例
static async Task<UserTokenResponse?> RefreshUserTokenAsync(QuoteClient quoteClient, TigerConfig config)
{
TigerRequest<UserTokenResponse> request = new TigerRequest<UserTokenResponse>()
{
ApiMethodName = QuoteApiService.USER_TOKEN_REFRESH
};
UserTokenResponse? response = await quoteClient.ExecuteAsync(request);
if (response is not null && response.IsSuccess())
{
List<IRefreshTokenCallback> callbackList = TokenManager.GetInstance().GetCallbackList();
foreach (IRefreshTokenCallback callback in callbackList)
{
try
{
Console.WriteLine(callback.GetType() + " tokenChange() is called");
callback.TokenChange(config, config.Token, response.Data);
}
catch (Exception e)
{
ApiLogger.Error(e, callback.GetType() + " tokenChange() is called fail");
}
}
}
return response;
}
返回示例
{
"data":{
"tigerId":"20151141",
"license":"TBHK",
"token":"MTY3Nzc0NTk3NzMzMiwxNjc5MDQxOTc3MzMyCJ/FLxjALbWg0cVW3R4bHg==",
"createTime":1677745977332,
"expiredTime":1679041977332
},
"code":0,
"message":"success",
"timestamp":1677745977338,
"sign":"mKX3qja7VHt/p9h698TcEc/jToQmPDTraHYqDCDc+CaIjnILHJbQn0ZD2sGmhfo6oZivZFIeGgle5Z0he6rIfip439LfLgtDg2RdajeyebJF6Qjy4vH7nrX8gTrfa2SjdnYSf0NHUzvBCbTCnPXtQKgiz74hzkmHuthWdnEBuJU="
}
获取历史行情额度
对应的请求类:TigerRequest(QuoteApiService.KLINE_QUOTA)
说明
查询按照本用户的等级已使用和剩余的symbol个数,包括股票,期货,期权对应股票(同一股票的不同期权,只占用一个symbol)
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
with_details | bool | No | 是否返回已请求的symbol详情,默认不返回 |
返回
TigerOpenAPI.Quote.Response.KlineQuotaResponse
source
返回数据可通过KlineQuotaResponse.Data
属性访问,返回QuotaItem
对象列表,其中TigerOpenAPI.Quote.Response.QuotaItem
属性如下:
字段 | 类型 | 说明 |
---|---|---|
used | int | 已使用数量 |
remain | int | 剩余数量 |
method | string | api接口(kline:股票K线; future_kline:期货K线; option_kline:期权K线; history_timeline:股票历史分时 |
details | List<string> | 已使用的标的列表 |
示例
static async Task<KlineQuotaResponse?> GetKlineQuotaAsync(QuoteClient quoteClient)
{
TigerRequest<KlineQuotaResponse> request = new TigerRequest<KlineQuotaResponse>()
{
ApiMethodName = QuoteApiService.KLINE_QUOTA,
ModelValue = new KlineQuotaModel() { WithDetails = true }
};
return await quoteClient.ExecuteAsync(request);
}
返回示例
{
"data":[
{
"remain":1998,
"used":2,
"method":"kline",
"details":[
"AAPL",
"CCEP"
]
},
{
"remain":197,
"used":3,
"method":"future_kline",
"details":[
"XC2307",
"ES2306",
"JPY2306"
]
},
{
"remain":1999,
"used":1,
"method":"option_kline",
"details":[
"AAPL"
]
},
{
"remain":2000,
"used":0,
"method":"history_timeline",
"details":[
]
}
],
"code":0,
"message":"success",
"timestamp":1687329229764,
"sign":"Z9Xdhfqr87AFb7uWozzWosRT9s902+KN3Se64hct2MWz1tuugv8feK+DkZpPD8597GlTqWvabtl/RqYGWL7zQSWxYkclnER1OxBDGjq/Lu0zZEWpjAiCsfi5w93FlkSPn6iA9gvy44KSLVVBY0nWQaVyGAnOyQ1+8FYfuFeek+Y="
}