行情查询

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)

说明

查询指定市场(美股、港股等)的当前交易状态,包括是否开盘、下次开盘时间等。

参数

参数名类型是否必填描述
marketstring市场代码,如 US(美股)、HK(港股)、CN(A股)

返回

json.RawMessage

返回市场状态数组,每个元素包含 marketstatustrading / 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

返回行情快照数组,每个元素包含 symbollatestPricepreClosechangechangePercentagevolumeamount 等字段。

示例

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 线数据,支持日线、周线、月线及分钟级别。

参数

参数名类型是否必填描述
symbolstring股票代码,如 "AAPL"
periodstringK 线周期:day / week / month / year / 1min / 5min / 15min / 30min / 60min

返回

json.RawMessage

返回 K 线数组,每条记录包含 timeopenhighlowclosevolume 字段。

示例

// 获取日线
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 返回分时数据数组,包含 timepricevolumeavgPrice 等字段。

示例

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

返回逐笔成交数组,每条包含 timepricevolumedirection 字段。

示例

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)

说明

获取买卖五档盘口深度数据。

参数

参数名类型是否必填描述
symbolstring股票代码

返回

json.RawMessage

返回 askList(卖盘)和 bidList(买盘),每档包含 pricevolumeorderCount 字段。

示例

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)

说明

获取指定标的股票的所有期权到期日列表,用于构建期权链查询条件。

参数

参数名类型是否必填描述
symbolstring标的股票代码,如 "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)

说明

获取指定标的和到期日的完整期权链,包含所有行权价的认购和认沽期权信息。

参数

参数名类型是否必填描述
symbolstring标的股票代码
expirystring到期日,格式 "YYYY-MM-DD",如 "2025-01-17"

返回

json.RawMessage

返回期权链列表,每条包含 strikecallSymbolputSymbolcallLatestPriceputLatestPrice 等字段。

示例

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

返回期权报价列表,包含 latestPriceimpliedVolatilitydeltagammathetavega 等字段。

示例

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 线数据。

参数

参数名类型是否必填描述
identifierstring期权合约代码
periodstringK 线周期,同股票 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)

说明

获取指定交易所下所有可交易期货合约列表。

参数

参数名类型是否必填描述
exchangestring交易所代码,如 "CME""HKEX"

返回

json.RawMessage

返回期货合约列表,包含 symbolnamecontractMultipliercurrency 等字段。

示例

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

返回期货行情列表,包含 symbollatestPricechangevolumeopenInterest 等字段。

示例

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 线数据。

参数

参数名类型是否必填描述
symbolstring期货合约代码,如 "ES2506"
periodstringK 线周期: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)、股息率等。

参数

参数名类型是否必填描述
symbolstring股票代码

返回

json.RawMessage

返回财务日报列表,包含 datepepbepsdividendYield 等字段。

示例

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)

说明

获取股票的季度/年度财务报告数据,包含利润表、资产负债表、现金流量表等核心数据。

参数

参数名类型是否必填描述
symbolstring股票代码

返回

json.RawMessage

返回财务报告列表,包含 revenuenetIncometotalAssetstotalLiabilitiescashFlow 等字段。

示例

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)

说明

获取股票的公司行动记录,包括分红、股票拆分(拆股/合股)、配股等事件。

参数

参数名类型是否必填描述
symbolstring股票代码

返回

json.RawMessage

返回公司行动列表,每条包含 actionTypedividend / split 等)、exDateamountratio 等字段。

示例

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)

说明

获取股票的资金流向数据,区分大单/中单/小单的流入流出情况,帮助判断主力资金动向。

参数

参数名类型是否必填描述
symbolstring股票代码

返回

json.RawMessage

返回资金流向数据,包含 inflowoutflownetInflowlargeOrderInflowsmallOrderOutflow 等字段。

示例

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)

说明

获取股票当前资金分布快照,按散户/机构/大户等维度展示持仓比例。

参数

参数名类型是否必填描述
symbolstring股票代码

返回

json.RawMessage

返回资金分布数据,包含各类投资者的 buyRatiosellRatioholdRatio 等字段。

示例

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

说明

根据自定义条件筛选符合要求的股票,支持按市值、涨跌幅、成交量、技术指标等多维度过滤。

参数

参数名类型是否必填描述
paramsmap[string]interface筛选条件,包含 market(市场)、filter(过滤条件数组)等字段

filter 数组中每个元素:

字段类型描述
fieldNamestring筛选字段名,如 "marketCap""changePercentage"
filterMinfloat64最小值(可选)
filterMaxfloat64最大值(可选)

返回

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"]