行情查询
Go SDK 通过 QuoteClient 提供全部行情接口。以下为完整可运行示例:
package main
import (
"fmt"
"log"
"github.com/tigerfintech/openapi-sdks/go/client"
"github.com/tigerfintech/openapi-sdks/go/config"
"github.com/tigerfintech/openapi-sdks/go/quote"
)
func main() {
cfg, err := config.NewClientConfig(
config.WithPropertiesFile("tiger_openapi_config.properties"),
)
if err != nil {
log.Fatal(err)
}
httpClient := client.NewHttpClient(cfg)
qc := quote.NewQuoteClient(httpClient)
// 获取市场状态
states, err := qc.MarketState("US")
if err != nil {
log.Fatal(err)
}
fmt.Println("美股市场状态:", string(states))
// 获取实时报价
briefs, err := qc.QuoteRealTime([]string{"AAPL", "TSLA"})
if err != nil {
log.Fatal(err)
}
fmt.Println("实时报价:", string(briefs))
// 获取 K 线数据
klines, err := qc.Kline("AAPL", "day")
if err != nil {
log.Fatal(err)
}
fmt.Println("K 线数据:", string(klines))
}基础行情
MarketState 获取市场状态
qc.MarketState(market string)
说明
查询指定市场(美股、港股等)的当前交易状态,包括是否开盘、下次开盘时间等。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| market | string | 是 | 市场代码,如 US(美股)、HK(港股)、CN(A股) |
返回
json.RawMessage
返回市场状态数组,每个元素包含 market、status(trading / closed 等)、openTime 等字段。
示例
states, err := qc.MarketState("US")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(states))数据示例
请求参数:
{ "market": "US" }返回数据:
[
{
"market": "US",
"status": "trading",
"openTime": 1735020600000,
"closeTime": 1735044000000,
"timezone": "America/New_York"
}
]QuoteRealTime 获取实时报价
qc.QuoteRealTime(symbols []string)
说明
批量获取股票的实时快照行情,包括最新价、涨跌幅、成交量等核心字段。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbols | []string | 是 | 股票代码列表,如 ["AAPL", "TSLA"];港股需带后缀,如 ["00700"] |
返回
json.RawMessage
返回行情快照数组,每个元素包含 symbol、latestPrice、preClose、change、changePercentage、volume、amount 等字段。
示例
briefs, err := qc.QuoteRealTime([]string{"AAPL", "TSLA", "00700"})
if err != nil {
log.Fatal(err)
}
fmt.Println(string(briefs))数据示例
请求参数:
{ "symbols": ["AAPL", "TSLA"] }返回数据:
[
{
"symbol": "AAPL",
"market": "US",
"name": "Apple Inc.",
"latestPrice": 227.52,
"preClose": 225.01,
"change": 2.51,
"changePercentage": 1.115,
"volume": 62345678,
"amount": 14189233280.0,
"open": 225.50,
"high": 228.10,
"low": 224.80,
"timestamp": 1735042800000
},
{
"symbol": "TSLA",
"market": "US",
"name": "Tesla Inc.",
"latestPrice": 410.44,
"preClose": 403.84,
"change": 6.60,
"changePercentage": 1.634,
"volume": 98765432,
"amount": 40542123456.0,
"open": 405.00,
"high": 415.20,
"low": 402.30,
"timestamp": 1735042800000
}
]Kline 获取K线数据
qc.Kline(symbol string, period string)
说明
获取指定股票的历史 K 线数据,支持日线、周线、月线及分钟级别。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码,如 "AAPL" |
| period | string | 是 | K 线周期:day / week / month / year / 1min / 5min / 15min / 30min / 60min |
返回
json.RawMessage
返回 K 线数组,每条记录包含 time、open、high、low、close、volume 字段。
示例
// 获取日线
klines, err := qc.Kline("AAPL", "day")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(klines))
// 获取 5 分钟 K 线
klines5min, err := qc.Kline("AAPL", "5min")数据示例
请求参数:
{ "symbols": ["AAPL"], "period": "day" }返回数据:
{
"symbol": "AAPL",
"period": "day",
"items": [
{
"time": 1734912000000,
"open": 222.56,
"high": 225.72,
"low": 222.11,
"close": 225.01,
"volume": 55234100
},
{
"time": 1734998400000,
"open": 225.50,
"high": 228.10,
"low": 224.80,
"close": 227.52,
"volume": 62345678
}
]
}Timeline 获取分时数据
qc.Timeline(symbols []string)
说明
获取当日分时走势数据(逐分钟价格与成交量),用于绘制分时图。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbols | []string | 是 | 股票代码列表 |
返回
json.RawMessage
每个 symbol 返回分时数据数组,包含 time、price、volume、avgPrice 等字段。
示例
timeline, err := qc.Timeline([]string{"AAPL", "TSLA"})
if err != nil {
log.Fatal(err)
}
fmt.Println(string(timeline))数据示例
请求参数:
{ "symbols": ["AAPL"] }返回数据:
{
"symbol": "AAPL",
"items": [
{
"time": 1735020600000,
"price": 225.50,
"volume": 3021456,
"avgPrice": 225.48
},
{
"time": 1735020660000,
"price": 225.80,
"volume": 1234567,
"avgPrice": 225.55
}
]
}TradeTick 获取逐笔成交
qc.TradeTick(symbols []string)
说明
获取最新逐笔成交记录,每一笔成交的价格、数量和方向(买/卖)。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbols | []string | 是 | 股票代码列表 |
返回
json.RawMessage
返回逐笔成交数组,每条包含 time、price、volume、direction 字段。
示例
ticks, err := qc.TradeTick([]string{"AAPL"})
if err != nil {
log.Fatal(err)
}
fmt.Println(string(ticks))数据示例
请求参数:
{ "symbols": ["AAPL"] }返回数据:
{
"symbol": "AAPL",
"items": [
{
"time": 1735042780000,
"price": 227.52,
"volume": 100,
"direction": "BUY"
},
{
"time": 1735042781000,
"price": 227.50,
"volume": 200,
"direction": "SELL"
}
]
}QuoteDepth 获取深度行情
qc.QuoteDepth(symbol string)
说明
获取买卖五档盘口深度数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
返回
json.RawMessage
返回 askList(卖盘)和 bidList(买盘),每档包含 price、volume、orderCount 字段。
示例
depth, err := qc.QuoteDepth("AAPL")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(depth))数据示例
请求参数:
{ "symbol": "AAPL" }返回数据:
{
"symbol": "AAPL",
"askList": [
{ "price": 227.53, "volume": 300, "orderCount": 2 },
{ "price": 227.55, "volume": 500, "orderCount": 4 },
{ "price": 227.58, "volume": 200, "orderCount": 1 },
{ "price": 227.60, "volume": 800, "orderCount": 6 },
{ "price": 227.65, "volume": 1200, "orderCount": 8 }
],
"bidList": [
{ "price": 227.52, "volume": 400, "orderCount": 3 },
{ "price": 227.50, "volume": 600, "orderCount": 5 },
{ "price": 227.48, "volume": 300, "orderCount": 2 },
{ "price": 227.45, "volume": 700, "orderCount": 5 },
{ "price": 227.40, "volume": 1000, "orderCount": 7 }
]
}期权行情
OptionExpiration 获取期权到期日
qc.OptionExpiration(symbol string)
说明
获取指定标的股票的所有期权到期日列表,用于构建期权链查询条件。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 标的股票代码,如 "AAPL" |
返回
json.RawMessage
返回到期日字符串列表,格式为 "YYYY-MM-DD"。
示例
expDates, err := qc.OptionExpiration("AAPL")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(expDates))数据示例
请求参数:
{ "symbols": ["AAPL"] }返回数据:
["2025-01-17", "2025-02-21", "2025-03-21", "2025-06-20", "2025-09-19", "2025-12-19", "2026-01-16"]OptionChain 获取期权链
qc.OptionChain(symbol string, expiry string)
说明
获取指定标的和到期日的完整期权链,包含所有行权价的认购和认沽期权信息。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 标的股票代码 |
| expiry | string | 是 | 到期日,格式 "YYYY-MM-DD",如 "2025-01-17" |
返回
json.RawMessage
返回期权链列表,每条包含 strike、callSymbol、putSymbol、callLatestPrice、putLatestPrice 等字段。
示例
chain, err := qc.OptionChain("AAPL", "2025-01-17")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(chain))数据示例
请求参数:
{ "symbol": "AAPL", "expiry": "2025-01-17" }返回数据:
[
{
"strike": 220.0,
"callSymbol": "AAPL 250117C00220000",
"putSymbol": "AAPL 250117P00220000",
"callLatestPrice": 9.50,
"putLatestPrice": 2.10,
"callImpliedVolatility": 0.285,
"putImpliedVolatility": 0.312
},
{
"strike": 225.0,
"callSymbol": "AAPL 250117C00225000",
"putSymbol": "AAPL 250117P00225000",
"callLatestPrice": 6.20,
"putLatestPrice": 3.80,
"callImpliedVolatility": 0.278,
"putImpliedVolatility": 0.299
}
]OptionBrief 获取期权报价
qc.OptionBrief(identifiers []string)
说明
批量获取期权合约的实时报价,包含 Greeks(Delta、Gamma、Theta、Vega)等数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| identifiers | []string | 是 | 期权合约代码列表,美股格式:"AAPL 250117C00150000"(注意双空格) |
返回
json.RawMessage
返回期权报价列表,包含 latestPrice、impliedVolatility、delta、gamma、theta、vega 等字段。
示例
optBriefs, err := qc.OptionBrief([]string{"AAPL 250117C00150000"})
if err != nil {
log.Fatal(err)
}
fmt.Println(string(optBriefs))数据示例
请求参数:
{ "identifiers": ["AAPL 250117C00220000"] }返回数据:
[
{
"identifier": "AAPL 250117C00220000",
"latestPrice": 9.50,
"preClose": 9.10,
"change": 0.40,
"impliedVolatility": 0.285,
"delta": 0.612,
"gamma": 0.028,
"theta": -0.085,
"vega": 0.156,
"openInterest": 12540,
"volume": 3820
}
]OptionKline 获取期权K线
qc.OptionKline(identifier string, period string)
说明
获取指定期权合约的历史 K 线数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| identifier | string | 是 | 期权合约代码 |
| period | string | 是 | K 线周期,同股票 K 线,如 "day"、"1min" |
返回
json.RawMessage
返回 K 线数组,字段同股票 K 线。
示例
optKline, err := qc.OptionKline("AAPL 250117C00150000", "day")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(optKline))数据示例
请求参数:
{ "identifier": "AAPL 250117C00220000", "period": "day" }返回数据:
{
"identifier": "AAPL 250117C00220000",
"period": "day",
"items": [
{
"time": 1734912000000,
"open": 8.80,
"high": 9.60,
"low": 8.70,
"close": 9.10,
"volume": 2100
},
{
"time": 1734998400000,
"open": 9.10,
"high": 9.80,
"low": 9.00,
"close": 9.50,
"volume": 3820
}
]
}期货行情
FutureExchange 获取期货交易所列表
qc.FutureExchange()
说明
获取平台支持的所有期货交易所列表。
参数
无参数。
返回
json.RawMessage
返回交易所列表,每个元素包含 exchange(如 "CME"、"HKEX")及交易所名称。
示例
exchanges, err := qc.FutureExchange()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(exchanges))数据示例
返回数据:
[
{ "exchange": "CME", "name": "Chicago Mercantile Exchange" },
{ "exchange": "CBOT", "name": "Chicago Board of Trade" },
{ "exchange": "NYMEX", "name": "New York Mercantile Exchange" },
{ "exchange": "HKEX", "name": "Hong Kong Exchanges and Clearing" }
]FutureContracts 获取期货合约列表
qc.FutureContracts(exchange string)
说明
获取指定交易所下所有可交易期货合约列表。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| exchange | string | 是 | 交易所代码,如 "CME"、"HKEX" |
返回
json.RawMessage
返回期货合约列表,包含 symbol、name、contractMultiplier、currency 等字段。
示例
contracts, err := qc.FutureContracts("CME")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(contracts))数据示例
请求参数:
{ "exchange": "CME" }返回数据:
[
{
"symbol": "ES",
"name": "E-mini S&P 500",
"contractMultiplier": 50,
"currency": "USD",
"minTick": 0.25,
"exchange": "CME"
},
{
"symbol": "NQ",
"name": "E-mini NASDAQ-100",
"contractMultiplier": 20,
"currency": "USD",
"minTick": 0.25,
"exchange": "CME"
}
]FutureRealTimeQuote 获取期货实时报价
qc.FutureRealTimeQuote(symbols []string)
说明
批量获取期货合约的实时行情数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbols | []string | 是 | 期货合约代码列表,如 ["ES2506", "NQ2506"] |
返回
json.RawMessage
返回期货行情列表,包含 symbol、latestPrice、change、volume、openInterest 等字段。
示例
futQuotes, err := qc.FutureRealTimeQuote([]string{"ES2506", "NQ2506"})
if err != nil {
log.Fatal(err)
}
fmt.Println(string(futQuotes))数据示例
请求参数:
{ "symbols": ["ES2506", "NQ2506"] }返回数据:
[
{
"symbol": "ES2506",
"latestPrice": 5920.50,
"preClose": 5895.25,
"change": 25.25,
"changePercentage": 0.428,
"volume": 1234567,
"openInterest": 2345678,
"open": 5900.00,
"high": 5935.00,
"low": 5895.00,
"timestamp": 1735042800000
}
]FutureKline 获取期货K线
qc.FutureKline(symbol string, period string)
说明
获取期货合约的历史 K 线数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 期货合约代码,如 "ES2506" |
| period | string | 是 | K 线周期:day / week / 1min / 5min / 15min / 30min / 60min |
返回
json.RawMessage
返回 K 线数组,字段同股票 K 线。
示例
futKline, err := qc.FutureKline("ES2506", "day")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(futKline))数据示例
请求参数:
{ "symbol": "ES2506", "period": "day" }返回数据:
{
"symbol": "ES2506",
"period": "day",
"items": [
{
"time": 1734912000000,
"open": 5870.00,
"high": 5900.00,
"low": 5860.00,
"close": 5895.25,
"volume": 1023456
},
{
"time": 1734998400000,
"open": 5900.00,
"high": 5935.00,
"low": 5895.00,
"close": 5920.50,
"volume": 1234567
}
]
}基本面数据
FinancialDaily 获取财务日报
qc.FinancialDaily(symbol string)
说明
获取股票的每日财务指标数据,如市盈率(PE)、市净率(PB)、股息率等。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
返回
json.RawMessage
返回财务日报列表,包含 date、pe、pb、eps、dividendYield 等字段。
示例
daily, err := qc.FinancialDaily("AAPL")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(daily))数据示例
请求参数:
{ "symbol": "AAPL" }返回数据:
[
{
"date": "2024-12-24",
"pe": 38.5,
"pb": 58.2,
"eps": 6.52,
"dividendYield": 0.0044,
"marketCap": 3420000000000
}
]FinancialReport 获取财务报告
qc.FinancialReport(symbol string)
说明
获取股票的季度/年度财务报告数据,包含利润表、资产负债表、现金流量表等核心数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
返回
json.RawMessage
返回财务报告列表,包含 revenue、netIncome、totalAssets、totalLiabilities、cashFlow 等字段。
示例
report, err := qc.FinancialReport("AAPL")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(report))数据示例
请求参数:
{ "symbol": "AAPL" }返回数据:
[
{
"period": "2024Q4",
"periodType": "quarterly",
"revenue": 124300000000,
"netIncome": 36330000000,
"totalAssets": 352583000000,
"totalLiabilities": 308030000000,
"cashFlow": 29943000000,
"eps": 2.40
}
]CorporateAction 获取公司行动
qc.CorporateAction(symbol string)
说明
获取股票的公司行动记录,包括分红、股票拆分(拆股/合股)、配股等事件。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
返回
json.RawMessage
返回公司行动列表,每条包含 actionType(dividend / split 等)、exDate、amount、ratio 等字段。
示例
actions, err := qc.CorporateAction("AAPL")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(actions))数据示例
请求参数:
{ "symbol": "AAPL" }返回数据:
[
{
"actionType": "dividend",
"exDate": "2024-11-08",
"payDate": "2024-11-14",
"amount": 0.25,
"currency": "USD"
},
{
"actionType": "split",
"exDate": "2020-08-31",
"ratio": 4.0,
"description": "4:1 股票拆分"
}
]资金流向
CapitalFlow 获取资金流向
qc.CapitalFlow(symbol string)
说明
获取股票的资金流向数据,区分大单/中单/小单的流入流出情况,帮助判断主力资金动向。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
返回
json.RawMessage
返回资金流向数据,包含 inflow、outflow、netInflow、largeOrderInflow、smallOrderOutflow 等字段。
示例
flow, err := qc.CapitalFlow("AAPL")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(flow))数据示例
请求参数:
{ "symbol": "AAPL" }返回数据:
{
"symbol": "AAPL",
"inflow": 8234567890,
"outflow": 7123456789,
"netInflow": 1111111101,
"largeOrderInflow": 5123456789,
"largeOrderOutflow": 4012345678,
"mediumOrderInflow": 2012345678,
"smallOrderInflow": 1098765432,
"timestamp": 1735042800000
}CapitalDistribution 获取资金分布
qc.CapitalDistribution(symbol string)
说明
获取股票当前资金分布快照,按散户/机构/大户等维度展示持仓比例。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
返回
json.RawMessage
返回资金分布数据,包含各类投资者的 buyRatio、sellRatio、holdRatio 等字段。
示例
dist, err := qc.CapitalDistribution("AAPL")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(dist))数据示例
请求参数:
{ "symbol": "AAPL" }返回数据:
{
"symbol": "AAPL",
"retailBuyRatio": 0.18,
"retailSellRatio": 0.15,
"institutionBuyRatio": 0.42,
"institutionSellRatio": 0.38,
"largeholderBuyRatio": 0.40,
"largeholderSellRatio": 0.47,
"timestamp": 1735042800000
}选股器
MarketScanner 选股器
qc.MarketScanner(params map[string]interface{})
说明
根据自定义条件筛选符合要求的股票,支持按市值、涨跌幅、成交量、技术指标等多维度过滤。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| params | map[string]interface | 是 | 筛选条件,包含 market(市场)、filter(过滤条件数组)等字段 |
filter 数组中每个元素:
| 字段 | 类型 | 描述 |
|---|---|---|
| fieldName | string | 筛选字段名,如 "marketCap"、"changePercentage" |
| filterMin | float64 | 最小值(可选) |
| filterMax | float64 | 最大值(可选) |
返回
json.RawMessage
返回符合条件的股票列表。
示例
scanResult, err := qc.MarketScanner(map[string]interface{}{
"market": "US",
"filter": []map[string]interface{}{
{"fieldName": "marketCap", "filterMin": 1000000000},
{"fieldName": "changePercentage", "filterMin": 2.0},
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(string(scanResult))数据示例
请求参数:
{
"market": "US",
"filter": [
{ "fieldName": "marketCap", "filterMin": 1000000000 },
{ "fieldName": "changePercentage", "filterMin": 2.0 }
]
}返回数据:
[
{
"symbol": "AAPL",
"name": "Apple Inc.",
"latestPrice": 227.52,
"changePercentage": 1.115,
"marketCap": 3420000000000,
"volume": 62345678
},
{
"symbol": "NVDA",
"name": "NVIDIA Corporation",
"latestPrice": 138.85,
"changePercentage": 3.240,
"marketCap": 3390000000000,
"volume": 185432100
}
]GrabQuotePermission 获取行情权限
qc.GrabQuotePermission()
说明
查询当前账户开通的行情权限列表,确认是否有权限访问实时行情数据。
参数
无参数。
返回
json.RawMessage
返回已开通的行情权限列表。
示例
perm, err := qc.GrabQuotePermission()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(perm))数据示例
返回数据:
["US_BASIC", "HK_BASIC", "US_REALTIME"]Updated 8 days ago
