行情查询
Go SDK 通过 QuoteClient 提供全部行情接口,所有方法都返回强类型结构体(在 model 包中定义),无需手动 json.Unmarshal。
完整可运行示例:
package main
import (
"fmt"
"log"
"github.com/tigerfintech/openapi-go-sdk/client"
"github.com/tigerfintech/openapi-go-sdk/config"
"github.com/tigerfintech/openapi-go-sdk/quote"
)
func main() {
cfg, err := config.NewClientConfig()
if err != nil {
log.Fatal(err)
}
// 使用行情专用 HTTP 客户端(自动使用行情服务器地址)
qc := quote.NewQuoteClient(client.NewQuoteHttpClient(cfg))
// 市场状态
states, err := qc.GetMarketState("US")
if err != nil {
log.Fatal(err)
}
for _, s := range states {
fmt.Printf("%s status=%s openTime=%s\n", s.Market, s.MarketStatus, s.OpenTime)
}
// 实时报价
briefs, err := qc.GetBrief(model.BriefRequest{Symbols: []string{"AAPL", "TSLA"}})
if err != nil {
log.Fatal(err)
}
for _, b := range briefs {
fmt.Printf("%s latestPrice=%.2f change=%.2f\n", b.Symbol, b.LatestPrice, b.Change)
}
// K 线
klines, err := qc.GetKline("AAPL", "day")
if err != nil {
log.Fatal(err)
}
if len(klines) > 0 {
fmt.Printf("%s bars=%d\n", klines[0].Symbol, len(klines[0].Items))
}
}基础行情
GetMarketState 获取市场状态
qc.GetMarketState(market string) ([]model.MarketState, error)
说明
查询指定市场的当前交易状态。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| market | string | 是 | 市场代码:US / HK / CN / SG |
返回
[]model.MarketState
| 字段 | 类型 | 描述 |
|---|---|---|
| Market | string | 市场代码 |
| MarketStatus | string | 市场状态文本,如 "Trading" / "Not Yet Opened" |
| Status | string | 状态枚举,如 NOT_YET_OPEN / TRADING |
| OpenTime | string | 下次开盘时间文本 |
示例
states, err := qc.GetMarketState("US")
if err != nil {
log.Fatal(err)
}
for _, s := range states {
fmt.Printf("%s %s %s\n", s.Market, s.MarketStatus, s.OpenTime)
}GetBrief 获取实时报价
qc.GetBrief(req model.BriefRequest) ([]model.Brief, error)
v0.3.0 Breaking:由位置参数
symbols []string改为 Request 结构体。
说明
批量获取股票的实时快照行情。
请求 model.BriefRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| IncludeHourTrading | *bool | 否 | 是否包含盘前盘后 |
| SecType | string | 否 | 证券类型,STK / OPT 等 |
| Lang | string | 否 | 语言,zh_CN / zh_TW / en_US |
返回
[]model.Brief
| 字段 | 类型 | 描述 |
|---|---|---|
| Symbol | string | 代码 |
| LatestPrice | float64 | 最新价 |
| PreClose | float64 | 昨收 |
| Open / High / Low / Close | float64 | 开 / 高 / 低 / 收 |
| Change / ChangeRate | float64 | 涨跌额 / 涨跌幅 |
| Volume | int64 | 成交量 |
| BidPrice / AskPrice | float64 | 买一 / 卖一价 |
| BidSize / AskSize | int64 | 买一 / 卖一量 |
| LatestTime | int64 | 最新成交时间(毫秒时间戳) |
| Status | string | 交易状态 |
示例
briefs, err := qc.GetBrief(model.BriefRequest{
Symbols: []string{"AAPL", "TSLA", "00700"},
})
if err != nil {
log.Fatal(err)
}
for _, b := range briefs {
fmt.Printf("%s %.2f (%.2f%%)\n", b.Symbol, b.LatestPrice, b.ChangeRate*100)
}GetKline 获取 K 线数据
qc.GetKline(symbol, period string) ([]model.Kline, error)
说明
获取指定股票的历史 K 线数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
| period | string | 是 | K 线周期:day / week / month / year / 1min / 5min / 15min / 30min / 60min |
返回
[]model.Kline
每条 Kline 包含 Symbol、Period 与 Items []KlineItem;每个 KlineItem 包含 Time / Open / High / Low / Close / Volume / Amount。
示例
klines, err := qc.GetKline("AAPL", "day")
if err != nil {
log.Fatal(err)
}
if len(klines) > 0 {
for _, k := range klines[0].Items[:5] {
fmt.Printf("%d O=%.2f H=%.2f L=%.2f C=%.2f V=%d\n", k.Time, k.Open, k.High, k.Low, k.Close, k.Volume)
}
}GetTimeline 获取分时数据
qc.GetTimeline(symbols []string) ([]model.Timeline, error)
说明
获取当日分时走势数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbols | []string | 是 | 股票代码列表 |
返回
[]model.Timeline
每个 Timeline 含 Symbol / Period / PreClose / Intraday / PreHours / AfterHours。后三个是 *TimelineBucket,内含 Items []TimelineItem(Time / Price / Volume / AvgPrice)。
示例
tl, err := qc.GetTimeline([]string{"AAPL"})
if err != nil {
log.Fatal(err)
}
if len(tl) > 0 && tl[0].Intraday != nil {
fmt.Printf("intraday points=%d\n", len(tl[0].Intraday.Items))
}GetTradeTick 获取逐笔成交
qc.GetTradeTick(req model.TradeTickRequest) ([]model.TradeTick, error)
v0.3.0 Breaking:由位置参数
symbols []string改为 Request 结构体。
说明
获取最新逐笔成交记录。
请求 model.TradeTickRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| BeginIndex | int | 否 | 起始序号 |
| EndIndex | int | 否 | 结束序号 |
| Limit | int | 否 | 返回条数上限 |
| Lang | string | 否 | 语言 |
返回
[]model.TradeTick
每个 TradeTick 含 Symbol / BeginIndex / EndIndex / Items []TradeTickItem。TradeTickItem 含 Time / Price / Volume / Type。
示例
ticks, err := qc.GetTradeTick(model.TradeTickRequest{Symbols: []string{"AAPL"}})
if err != nil {
log.Fatal(err)
}
if len(ticks) > 0 {
for _, t := range ticks[0].Items[:5] {
fmt.Printf("%d price=%.2f vol=%d type=%s\n", t.Time, t.Price, t.Volume, t.Type)
}
}GetQuoteDepth 获取深度行情
qc.GetQuoteDepth(req model.DepthQuoteRequest) ([]model.Depth, error)
v0.3.0 Breaking:由位置参数
(symbols, market)改为 Request 结构体,且symbols支持批量。
说明
获取盘口深度数据。仅支持 US / HK 市场。
请求 model.DepthQuoteRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| Market | string | 否 | 市场:US / HK |
| TradeSession | string | 否 | 交易时段 |
| Lang | string | 否 | 语言 |
返回
[]model.Depth
每个 Depth 含 Symbol / Asks / Bids。每档 DepthLevel 含 Price / Count / Volume。
示例
depths, err := qc.GetQuoteDepth(model.DepthQuoteRequest{
Symbols: []string{"AAPL"},
Market: "US",
})
if err != nil {
log.Fatal(err)
}
if len(depths) > 0 {
fmt.Printf("asks=%d bids=%d\n", len(depths[0].Asks), len(depths[0].Bids))
}期权行情
GetOptionExpiration 获取期权到期日
qc.GetOptionExpiration(symbol string) ([]model.OptionExpiration, error)
说明
获取标的的所有期权到期日列表。
返回
[]model.OptionExpiration
| 字段 | 类型 | 描述 |
|---|---|---|
| Symbol | string | 标的代码 |
| Dates | []string | 到期日列表(YYYY-MM-DD) |
| Timestamps | []int64 | 到期日毫秒时间戳列表 |
| OptionSymbols | []string | 期权标的代码列表 |
示例
exps, err := qc.GetOptionExpiration("AAPL")
if err != nil {
log.Fatal(err)
}
if len(exps) > 0 {
fmt.Printf("%s dates=%d first=%s\n", exps[0].Symbol, len(exps[0].Dates), exps[0].Dates[0])
}GetOptionChain 获取期权链
qc.GetOptionChain(symbol, expiry string) ([]model.OptionChain, error)
说明
获取指定标的和到期日的完整期权链。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 标的代码 |
| expiry | string | 是 | 到期日,格式 YYYY-MM-DD |
返回
[]model.OptionChain
每个 OptionChain 含 Symbol / Expiry / Items []OptionChainRow。每个 OptionChainRow 含 Put / Call(*OptionLeg,含 Identifier / Strike / Right / BidPrice / AskPrice / LatestPrice / Delta / Gamma / Theta / Vega / ImpliedVol 等)。
示例
chain, err := qc.GetOptionChain("AAPL", "2026-06-19")
if err != nil {
log.Fatal(err)
}
if len(chain) > 0 {
for _, row := range chain[0].Items {
if row.Call != nil {
fmt.Printf("strike=%s call=%.2f IV=%.3f\n", row.Call.Strike, row.Call.LatestPrice, row.Call.ImpliedVol)
}
}
}GetOptionBrief 获取期权报价
qc.GetOptionBrief(identifiers []string) ([]model.Brief, error)
说明
批量获取期权合约的实时报价。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| identifiers | []string | 是 | 期权标识列表,美股格式:"AAPL 260619C00200000"(注意双空格) |
返回
[]model.Brief(与股票行情复用同一结构,额外带 Expiry / Strike / Right / OpenInterest 等期权字段)
示例
briefs, err := qc.GetOptionBrief([]string{"AAPL 260619C00200000"})
if err != nil {
log.Fatal(err)
}
for _, b := range briefs {
fmt.Printf("%s latest=%.2f oi=%d\n", b.Symbol, b.LatestPrice, b.OpenInterest)
}GetOptionKline 获取期权 K 线
qc.GetOptionKline(identifier, period string) ([]model.Kline, error)
说明
获取指定期权合约的历史 K 线数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| identifier | string | 是 | 期权标识 |
| period | string | 是 | K 线周期,同股票 K 线 |
返回
[]model.Kline(结构同 GetKline)
示例
ks, err := qc.GetOptionKline("AAPL 260619C00200000", "day")
if err != nil {
log.Fatal(err)
}
if len(ks) > 0 {
fmt.Printf("bars=%d\n", len(ks[0].Items))
}期货行情
GetFutureExchange 获取期货交易所列表
qc.GetFutureExchange() ([]model.FutureExchange, error)
说明
获取平台支持的所有期货交易所列表。
返回
[]model.FutureExchange
| 字段 | 类型 | 描述 |
|---|---|---|
| Code | string | 交易所代码,如 CME / HKEX |
| Name | string | 交易所名称 |
| ZoneID | string | 时区,如 America/Chicago |
示例
exs, err := qc.GetFutureExchange()
if err != nil {
log.Fatal(err)
}
for _, e := range exs {
fmt.Printf("%s %s (%s)\n", e.Code, e.Name, e.ZoneID)
}GetFutureContracts 获取期货合约列表
qc.GetFutureContracts(exchange string) ([]model.FutureContractInfo, error)
说明
获取指定交易所下所有可交易的期货合约列表。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| exchange | string | 是 | 交易所代码,如 CME |
返回
[]model.FutureContractInfo
| 字段 | 类型 | 描述 |
|---|---|---|
| ContractCode | string | 合约代码,如 MEUR2609 |
| Type | string | 品种代码,如 MEUR |
| Name | string | 合约名称 |
| ContractMonth | string | 交割月 |
| LastTradingDate | string | 最后交易日 |
| Multiplier | float64 | 合约乘数 |
| MinTick | float64 | 最小价格变动 |
| Currency | string | 货币 |
| Exchange | string | 交易所 |
| Continuous / Trade | bool | 是否连续合约 / 是否可交易 |
示例
cs, err := qc.GetFutureContracts("CME")
if err != nil {
log.Fatal(err)
}
fmt.Printf("contracts=%d first=%s\n", len(cs), cs[0].ContractCode)GetFutureRealTimeQuote 获取期货实时报价
qc.GetFutureRealTimeQuote(req model.FutureBriefRequest) ([]model.FutureQuote, error)
v0.3.0 Breaking:由位置参数
contractCodes []string改为 Request 结构体。
说明
批量获取期货合约的实时行情数据。
请求 model.FutureBriefRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ContractCodes | []string | 是 | 期货合约代码列表,如 ["CL2609", "ES2506"] |
| Lang | string | 否 | 语言 |
返回
[]model.FutureQuote
| 字段 | 类型 | 描述 |
|---|---|---|
| ContractCode | string | 合约代码 |
| LatestPrice / LatestSize / LatestTime | float64/int64 | 最新成交 |
| BidPrice / AskPrice / BidSize / AskSize | float64/int64 | 买卖一档 |
| OpenInterest / OpenInterestChange | int64 | 未平仓合约量 / 变化 |
| Open / High / Low / Settlement / AvgPrice | float64 | 价格 |
| Volume | int64 | 成交量 |
示例
q, err := qc.GetFutureRealTimeQuote(model.FutureBriefRequest{
ContractCodes: []string{"CL2609"},
})
if err != nil {
log.Fatal(err)
}
for _, f := range q {
fmt.Printf("%s latest=%.4f oi=%d\n", f.ContractCode, f.LatestPrice, f.OpenInterest)
}GetFutureKline 获取期货 K 线
qc.GetFutureKline(req model.FutureKlineRequest) ([]model.FutureKline, error)
说明
获取期货合约的历史 K 线数据。参数多,使用 Request 结构体。
请求 model.FutureKlineRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ContractCodes | []string | 是 | 合约代码列表 |
| Period | string | 是 | 周期:day / week / 1min / 5min / 15min / 30min / 60min |
| BeginTime | int64 | 否 | 起始毫秒时间戳;0 或 -1 表示不限制 |
| EndTime | int64 | 否 | 结束毫秒时间戳;0 或 -1 表示不限制 |
| Limit | int | 否 | 返回条数上限 |
| PageToken | string | 否 | 分页 token |
返回
[]model.FutureKline
每条 FutureKline 含 Items []FutureKlineItem(含 Time / Open / Close / High / Low / Volume / OpenInterest / Settlement)与 NextPageToken。
示例
ks, err := qc.GetFutureKline(model.FutureKlineRequest{
ContractCodes: []string{"CL2609"},
Period: "day",
BeginTime: -1,
EndTime: -1,
})
if err != nil {
log.Fatal(err)
}
if len(ks) > 0 {
fmt.Printf("bars=%d\n", len(ks[0].Items))
}基本面数据
GetFinancialDaily 获取日级财务数据
qc.GetFinancialDaily(req model.FinancialDailyRequest) ([]model.FinancialDailyItem, error)
说明
获取股票的每日财务指标数据(如流通股数等)。
请求 model.FinancialDailyRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| Market | string | 是 | 市场:US / HK / CN |
| Fields | []string | 是 | 查询字段,如 ["shares_outstanding"] |
| BeginDate | string | 是 | 起始日期 YYYY-MM-DD |
| EndDate | string | 是 | 结束日期 YYYY-MM-DD |
返回
[]model.FinancialDailyItem(Symbol / Field / Date / Value)
示例
items, err := qc.GetFinancialDaily(model.FinancialDailyRequest{
Symbols: []string{"AAPL"},
Market: "US",
Fields: []string{"shares_outstanding"},
BeginDate: "2025-01-01",
EndDate: "2025-01-31",
})资金流向
GetCapitalFlow 获取资金流向
qc.GetCapitalFlow(symbol, market, period string) (*model.CapitalFlow, error)
说明
获取股票的资金流向时序数据。
参数
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| symbol | string | 是 | 股票代码 |
| market | string | 是 | 市场 |
| period | string | 是 | 周期:intraday / day / week / month / year / quarter |
返回
*model.CapitalFlow(Symbol / Period / Items []CapitalFlowItem;CapitalFlowItem 含 Time / Timestamp / NetInflow)
示例
cf, err := qc.GetCapitalFlow("AAPL", "US", "day")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s period=%s rows=%d\n", cf.Symbol, cf.Period, len(cf.Items))GetCapitalDistribution 获取资金分布
qc.GetCapitalDistribution(symbol, market string) (*model.CapitalDistribution, error)
说明
获取股票当前资金分布快照。
返回
*model.CapitalDistribution
| 字段 | 类型 | 描述 |
|---|---|---|
| Symbol | string | 代码 |
| NetInflow | float64 | 净流入 |
| InAll / InBig / InMid / InSmall | float64 | 总流入 / 大 / 中 / 小单流入 |
| OutAll / OutBig / OutMid / OutSmall | float64 | 总流出 / 大 / 中 / 小单流出 |
示例
cd, err := qc.GetCapitalDistribution("AAPL", "US")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s netInflow=%.2f\n", cd.Symbol, cd.NetInflow)选股器
MarketScanner 选股器
qc.MarketScanner(req model.MarketScannerRequest) (*model.ScannerResult, error)
说明
根据自定义条件筛选股票。
请求 model.MarketScannerRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Market | string | 是 | 市场 |
| Page | int | 否 | 页码(从 0 开始) |
| PageSize | int | 否 | 每页数量 |
| CursorID | string | 否 | 分页游标 |
| BaseFilterList | []map[string]interface | 否 | 基础字段过滤 |
| AccumulateFilterList | []map[string]interface | 否 | 累积字段过滤 |
| FinancialFilterList | []map[string]interface | 否 | 财务字段过滤 |
| MultiTagsFilterList | []map[string]interface | 否 | 多标签过滤 |
| SortFieldData | map[string]interface | 否 | 排序字段 |
返回
*model.ScannerResult(Page / TotalPage / TotalCount / PageSize / CursorID / Items []ScannerResultItem)
每个 ScannerResultItem 含 Symbol / Market 以及 BaseDataList / AccumulateDataList / FinancialDataList / MultiTagDataList 四类字段数据。
示例
res, err := qc.MarketScanner(model.MarketScannerRequest{
Market: "US",
Page: 0,
PageSize: 10,
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("page=%d/%d total=%d items=%d\n", res.Page, res.TotalPage, res.TotalCount, len(res.Items))GrabQuotePermission 获取行情权限
qc.GrabQuotePermission() ([]model.QuotePermission, error)
说明
查询当前账户开通的行情权限列表。
返回
[]model.QuotePermission(Name / ExpireAt)
示例
perms, err := qc.GrabQuotePermission()
if err != nil {
log.Fatal(err)
}
for _, p := range perms {
fmt.Printf("%s expireAt=%d\n", p.Name, p.ExpireAt)
}GetMarketScannerTags 获取选股扫描器标签
qc.GetMarketScannerTags(req model.MarketScannerTagsRequest) (*model.MarketScannerTags, error)
说明
查询选股扫描器(MarketScanner)可用的 multi_tags 字段及枚举值。
请求:Market / MultiTagsFields []string / Lang。
返回
*model.MarketScannerTags(TagFields / Tags []MarketScannerTag;MarketScannerTag 含 Field / Name / Values)
股票基础 (v0.3.0 新增)
GetSymbols 获取市场全部代码
qc.GetSymbols(req model.SymbolsRequest) ([]string, error)
说明
获取指定市场的全部合约代码列表(仅 symbol)。
请求 model.SymbolsRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Market | string | 否 | 市场:US / HK / CN / SG |
| SecType | string | 否 | 证券类型 |
| IncludeOtc | bool | 否 | 是否包含 OTC |
| Lang | string | 否 | 语言 |
返回
[]string symbol 列表。
示例
symbols, err := qc.GetSymbols(model.SymbolsRequest{Market: "US"})
if err != nil {
log.Fatal(err)
}
fmt.Printf("total=%d first=%s\n", len(symbols), symbols[0])GetSymbolNames 获取代码 + 名称
qc.GetSymbolNames(req model.SymbolsRequest) ([]model.SymbolName, error)
说明
获取指定市场的合约代码及中英文名称。
返回
[]model.SymbolName(Symbol / Name / Market)
示例
items, err := qc.GetSymbolNames(model.SymbolsRequest{Market: "US"})
if err != nil {
log.Fatal(err)
}
for _, it := range items[:5] {
fmt.Printf("%s %s\n", it.Symbol, it.Name)
}GetTradeMetas 获取交易元数据
qc.GetTradeMetas(req model.TradeMetasRequest) ([]model.TradeMeta, error)
说明
获取合约的交易元数据(最小变动价位、每手股数、是否可融可空等)。
请求 model.TradeMetasRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| Lang | string | 否 | 语言 |
返回
[]model.TradeMeta(Symbol / LotSize / MinTick / SpreadScale / ShortableFlag / MarginableFlag)
示例
metas, err := qc.GetTradeMetas(model.TradeMetasRequest{Symbols: []string{"AAPL", "00700"}})
if err != nil {
log.Fatal(err)
}
for _, m := range metas {
fmt.Printf("%s lot=%d minTick=%.4f\n", m.Symbol, m.LotSize, m.MinTick)
}GetStockDelayBriefs 获取延迟行情
qc.GetStockDelayBriefs(req model.StockDelayBriefsRequest) ([]model.Brief, error)
说明
获取延迟行情快照(结构与实时 GetBrief 相同)。
请求 model.StockDelayBriefsRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| SecType | string | 否 | 证券类型 |
| Lang | string | 否 | 语言 |
示例
briefs, err := qc.GetStockDelayBriefs(model.StockDelayBriefsRequest{
Symbols: []string{"AAPL"},
})GetBars 获取 K 线(完整版)
qc.GetBars(req model.BarsRequest) ([]model.Kline, error)
说明
比 GetKline 更完整的 K 线接口,支持时间范围、分页、前复权/后复权、盘前盘后等。
字段命名约定:
BeginTime/EndTime为毫秒时间戳(wirebegin_time/end_time)。
请求 model.BarsRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| Period | string | 否 | 周期:day / week / month / year / 1min / 5min / 15min / 30min / 60min |
| Right | string | 否 | 复权类型:br / nr 等 |
| BeginTime | int64 | 否 | 起始毫秒时间戳 |
| EndTime | int64 | 否 | 结束毫秒时间戳 |
| Limit | int | 否 | 返回条数上限 |
| BeginIndex | int | 否 | 起始索引(与时间范围二选一) |
| EndIndex | int | 否 | 结束索引 |
| PageToken | string | 否 | 分页 token |
| TradeSession | string | 否 | 交易时段 |
| Date | string | 否 | 指定日期 |
| WithFundamental | *bool | 否 | 是否带基本面 |
| SecType | string | 否 | 证券类型 |
| Lang | string | 否 | 语言 |
返回
[]model.Kline(结构同 GetKline)
示例
bars, err := qc.GetBars(model.BarsRequest{
Symbols: []string{"AAPL"},
Period: "day",
Limit: 100,
})
if err != nil {
log.Fatal(err)
}
if len(bars) > 0 {
fmt.Printf("bars=%d\n", len(bars[0].Items))
}GetBarsByPage 客户端分页 K 线
qc.GetBarsByPage(req model.BarsByPageRequest) ([]model.KlineItem, error)
说明
客户端分页包装:循环调用 GetBars 直到拉取到指定数量的 K 线,按时间升序返回合并结果。
请求 model.BarsByPageRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbol | string | 是 | 股票代码(单个) |
| Period | string | 是 | 周期 |
| BeginTime | int64 | 否 | 起始毫秒时间戳 |
| EndTime | int64 | 否 | 结束毫秒时间戳 |
| TotalSize | int | 否 | 想获取的总条数,默认 1000 |
| PageSize | int | 否 | 每页条数,默认 200 |
| Right | string | 否 | 复权 |
| TradeSession | string | 否 | 交易时段 |
| Lang | string | 否 | 语言 |
返回
[]model.KlineItem(已扁平化)
示例
items, err := qc.GetBarsByPage(model.BarsByPageRequest{
Symbol: "AAPL",
Period: "day",
TotalSize: 500,
PageSize: 200,
})
fmt.Printf("got %d bars\n", len(items))GetTimelineHistory 获取历史分时
qc.GetTimelineHistory(req model.TimelineHistoryRequest) ([]model.Timeline, error)
说明
获取历史某一交易日的分时数据。
请求 model.TimelineHistoryRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| Date | string | 否 | 日期,格式 yyyy-MM-dd |
| Right | string | 否 | 复权 |
| TradeSession | string | 否 | 交易时段 |
| Lang | string | 否 | 语言 |
返回
[]model.Timeline(结构同 GetTimeline)
示例
tl, err := qc.GetTimelineHistory(model.TimelineHistoryRequest{
Symbols: []string{"AAPL"},
Date: "2025-09-01",
})GetTradeRank 获取成交排行
qc.GetTradeRank(req model.TradeRankRequest) ([]model.TradeRankItem, error)
说明
查询指定市场的成交额/成交量排行榜。
请求 model.TradeRankRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Market | string | 是 | 市场 |
| Lang | string | 否 | 语言 |
返回
[]model.TradeRankItem(Symbol / Name / LatestPr / Change / ChangeRate / Volume / Amount)
示例
rank, err := qc.GetTradeRank(model.TradeRankRequest{Market: "HK"})
for _, r := range rank[:10] {
fmt.Printf("%s %s amount=%.0f\n", r.Symbol, r.Name, r.Amount)
}GetShortInterest 获取空头利益
qc.GetShortInterest(req model.ShortInterestRequest) ([]model.ShortInterest, error)
说明
获取美股空头持仓(short interest)数据。
请求 model.ShortInterestRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 股票代码列表 |
| Lang | string | 否 | 语言 |
返回
[]model.ShortInterest(Symbol / SettlementDate / ShortInterest / AvgDailyVolume / DaysToCover / PercentOfFloat / ShortInterestPrevious / PercentChange)
示例
si, err := qc.GetShortInterest(model.ShortInterestRequest{Symbols: []string{"TSLA"}})GetStockBroker 获取港股经纪商队列
qc.GetStockBroker(req model.StockBrokerRequest) (*model.StockBroker, error)
说明
获取港股指定股票的经纪商盘口队列(需港股 Level2 牌照)。
请求 model.StockBrokerRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbol | string | 是 | 股票代码(单个) |
| Limit | int | 否 | 每档最大经纪商数 |
| SecType | string | 否 | 证券类型 |
| Lang | string | 否 | 语言 |
返回
*model.StockBroker(Symbol / LevelAskList / LevelBidList;每档 StockBrokerItem 含 Level / Price / Brokers []BrokerDetail)
示例
sb, err := qc.GetStockBroker(model.StockBrokerRequest{Symbol: "00700", Limit: 40})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s askLevels=%d bidLevels=%d\n", sb.Symbol, len(sb.LevelAskList), len(sb.LevelBidList))GetStockIndustry 获取股票所属行业
qc.GetStockIndustry(req model.StockIndustryRequest) ([]model.StockIndustry, error)
说明
查询股票所属的 GICS 行业分类。
请求 model.StockIndustryRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbol | string | 是 | 股票代码 |
| Market | string | 否 | 市场 |
| SecType | string | 否 | 证券类型 |
| Lang | string | 否 | 语言 |
返回
[]model.StockIndustry(Symbol / GSector / GGroup / GInd / GSubInd / Level)
示例
si, err := qc.GetStockIndustry(model.StockIndustryRequest{Symbol: "AAPL", Market: "US"})GetQuotePermission 查询行情权限(带日期范围)
qc.GetQuotePermission(req model.QuotePermissionRequest) ([]model.QuotePermission, error)
说明
查询账户行情权限。与无参的 GrabQuotePermission 不同:此方法支持传入日期范围,返回历史有效的权限明细。
请求 model.QuotePermissionRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| BeginDate | string | 否 | 起始日期 yyyyMMdd |
| EndDate | string | 否 | 结束日期 yyyyMMdd |
| Lang | string | 否 | 语言 |
示例
perms, err := qc.GetQuotePermission(model.QuotePermissionRequest{
BeginDate: "20250101",
EndDate: "20251231",
})GetKlineQuota 查询 K 线调用配额
qc.GetKlineQuota(req model.KlineQuotaRequest) ([]model.KlineQuota, error)
说明
查询 K 线接口剩余调用配额。
请求 model.KlineQuotaRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| WithDetails | bool | 否 | 是否返回每个 symbol 的明细 |
| Lang | string | 否 | 语言 |
返回
[]model.KlineQuota(Method / Used / Quota / Detail;每个 KlineQuotaDetail 含 Symbol / Market / UsedBars / QuotaBars / LastAccess)
示例
quota, err := qc.GetKlineQuota(model.KlineQuotaRequest{WithDetails: true})
for _, q := range quota {
fmt.Printf("%s used=%d/%d\n", q.Method, q.Used, q.Quota)
}期权行情 (v0.3.0 新增)
所有期权扩展方法均复用 OptionQueryItem 嵌套结构,用于精确定位单份期权合约:
type OptionQueryItem struct {
Symbol string
Expiry int64 // ms timestamp
Strike string
Right string // CALL / PUT
Period string // 仅 K 线/分时用到
BeginTime int64
EndTime int64
Limit int
BeginIndex int
EndIndex int
PageToken string
}GetOptionBars 获取期权 K 线
qc.GetOptionBars(req model.OptionBarsRequest) ([]model.Kline, error)
请求 model.OptionBarsRequest:OptionQuery []OptionQueryItem / Market / Lang。
示例
bars, err := qc.GetOptionBars(model.OptionBarsRequest{
OptionQuery: []model.OptionQueryItem{{
Symbol: "AAPL", Expiry: 1750291200000, Strike: "200", Right: "CALL", Period: "day",
}},
Market: "US",
})GetOptionTradeTicks 获取期权逐笔
qc.GetOptionTradeTicks(req model.OptionTradeTicksRequest) ([]model.TradeTick, error)
请求:Contracts []OptionQueryItem / Lang。
示例
ticks, err := qc.GetOptionTradeTicks(model.OptionTradeTicksRequest{
Contracts: []model.OptionQueryItem{{Symbol: "AAPL", Expiry: 1750291200000, Strike: "200", Right: "CALL"}},
})GetOptionTimeline 获取期权分时
qc.GetOptionTimeline(req model.OptionTimelineRequest) ([]model.Timeline, error)
请求:OptionQuery []OptionQueryItem / Market / Lang。
GetOptionDepth 获取期权盘口
qc.GetOptionDepth(req model.OptionDepthRequest) ([]model.Depth, error)
请求:OptionBasic []OptionQueryItem / Market / Lang。
GetOptionSymbols 获取期权代码列表
qc.GetOptionSymbols(req model.OptionSymbolsRequest) ([]model.OptionSymbol, error)
请求 model.OptionSymbolsRequest:Market / Lang。
返回
[]model.OptionSymbol(Symbol / Market / NameCN / NameEN)
示例
syms, err := qc.GetOptionSymbols(model.OptionSymbolsRequest{Market: "US"})GetOptionAnalysis 获取期权波动率分析
qc.GetOptionAnalysis(req model.OptionAnalysisRequest) ([]model.OptionAnalysis, error)
请求 model.OptionAnalysisRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 标的代码 |
| Market | string | 否 | 市场 |
| Period | string | 否 | 历史波动率周期 |
| RequireVolatilityList | bool | 否 | 是否返回历史波动率时序 |
| Lang | string | 否 | 语言 |
返回
[]model.OptionAnalysis(Symbol / HistoricalVol30D / HistoricalVol60D / HistoricalVol90D / ImpliedVol / VolatilityList)
示例
res, err := qc.GetOptionAnalysis(model.OptionAnalysisRequest{
Symbols: []string{"AAPL"},
Market: "US",
})期货行情 (v0.3.0 新增)
GetFutureContract 按合约代码查合约
qc.GetFutureContract(req model.FutureContractSingleRequest) ([]model.FutureContractInfo, error)
请求 model.FutureContractSingleRequest:ContractCode / Type / Lang。
示例
cs, err := qc.GetFutureContract(model.FutureContractSingleRequest{ContractCode: "CL2609"})GetAllFutureContracts 按品种查全部合约
qc.GetAllFutureContracts(req model.AllFutureContractsRequest) ([]model.FutureContractInfo, error)
请求 model.AllFutureContractsRequest:Type / Exchange / Lang。
示例
cs, err := qc.GetAllFutureContracts(model.AllFutureContractsRequest{Type: "CL"})GetCurrentFutureContract 查当前主力合约
qc.GetCurrentFutureContract(req model.FutureContractSingleRequest) (*model.FutureContractInfo, error)
示例
c, err := qc.GetCurrentFutureContract(model.FutureContractSingleRequest{Type: "CL"})
fmt.Printf("current main: %s\n", c.ContractCode)GetFutureContinuousContracts 连续合约
qc.GetFutureContinuousContracts(req model.FutureContinuousContractsRequest) ([]model.FutureContractInfo, error)
请求:Type / Lang。
GetFutureHistoryMainContract 主力合约历史
qc.GetFutureHistoryMainContract(req model.FutureHistoryMainContractRequest) ([]model.FutureMainContractHistory, error)
请求 model.FutureHistoryMainContractRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ContractCodes | []string | 是 | 合约代码列表 |
| BeginTime | int64 | 否 | 起始毫秒时间戳 |
| EndTime | int64 | 否 | 结束毫秒时间戳 |
| Lang | string | 否 | 语言 |
返回
[]model.FutureMainContractHistory(ContractCode / Symbol / BeginDate / EndDate)
GetFutureBars 获取期货 K 线(索引分页版)
qc.GetFutureBars(req model.FutureBarsRequest) ([]model.FutureKline, error)
请求 model.FutureBarsRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ContractCodes | []string | 否 | 合约代码列表 |
| ContractCode | string | 否 | 单个合约代码 |
| Period | string | 是 | 周期 |
| BeginTime | int64 | 否 | 起始毫秒时间戳 |
| EndTime | int64 | 否 | 结束毫秒时间戳 |
| BeginIndex / EndIndex | int | 否 | 索引分页 |
| Limit | int | 否 | 返回条数上限 |
| PageToken | string | 否 | 分页 token |
| Lang | string | 否 | 语言 |
示例
bars, err := qc.GetFutureBars(model.FutureBarsRequest{
ContractCodes: []string{"CL2609"},
Period: "day",
Limit: 200,
})GetFutureBarsByPage 客户端分页期货 K 线
qc.GetFutureBarsByPage(req model.FutureBarsByPageRequest) ([]model.FutureKlineItem, error)
请求 model.FutureBarsByPageRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ContractCode | string | 是 | 合约代码 |
| Period | string | 是 | 周期 |
| BeginTime | int64 | 否 | 起始毫秒时间戳 |
| EndTime | int64 | 否 | 结束毫秒时间戳 |
| TotalSize | int | 否 | 想获取的总条数 |
| PageSize | int | 否 | 每页条数 |
| Lang | string | 否 | 语言 |
GetFutureTradeTicks 获取期货逐笔
qc.GetFutureTradeTicks(req model.FutureTradeTicksRequest) ([]model.FutureTradeTickItem, error)
请求 model.FutureTradeTicksRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ContractCode | string | 是 | 合约代码 |
| BeginIndex / EndIndex | int | 否 | 索引分页 |
| Limit | int | 否 | 返回条数上限 |
| Lang | string | 否 | 语言 |
返回
[]model.FutureTradeTickItem(ContractCode / Index / Time / Price / Volume / Direction)
GetFutureDepth 获取期货盘口
qc.GetFutureDepth(req model.FutureDepthRequest) ([]model.FutureDepth, error)
请求:ContractCodes []string / Lang。
返回
[]model.FutureDepth(ContractCode / Timestamp / Asks / Bids)
GetFutureTradingTimes 获取期货交易时段
qc.GetFutureTradingTimes(req model.FutureTradingTimesRequest) (*model.FutureTradingTime, error)
请求 model.FutureTradingTimesRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ContractCode | string | 是 | 合约代码 |
| TradingDate | string | 否 | 交易日 |
| Lang | string | 否 | 语言 |
返回
*model.FutureTradingTime(ContractCode / BizDate / Zone / TradingTimes []FutureTradingSegment;FutureTradingSegment 含 Start / End / Type)
基金 (v0.3.0 新增)
GetFundSymbols 获取基金代码列表
qc.GetFundSymbols(req model.FundSymbolsRequest) ([]string, error)
请求:Lang。
GetFundContracts 获取基金合约资料
qc.GetFundContracts(req model.FundContractsRequest) ([]model.FundContractInfo, error)
请求:Symbols []string / Lang。
返回
[]model.FundContractInfo(Symbol / Name / Currency / FundType / Inception / NetAssetVal / ExpenseRatio)
GetFundQuote 获取基金实时净值
qc.GetFundQuote(req model.FundQuoteRequest) ([]model.FundQuote, error)
请求:Symbols []string / Lang。
返回
[]model.FundQuote(Symbol / LatestNav / Change / ChangeRate / Date)
示例
q, err := qc.GetFundQuote(model.FundQuoteRequest{Symbols: []string{"SPY"}})GetFundHistoryQuote 获取基金历史净值
qc.GetFundHistoryQuote(req model.FundHistoryQuoteRequest) ([]model.FundHistoryQuote, error)
请求 model.FundHistoryQuoteRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbols | []string | 是 | 基金代码列表 |
| BeginTime | int64 | 否 | 起始毫秒时间戳 |
| EndTime | int64 | 否 | 结束毫秒时间戳 |
| Limit | int | 否 | 返回条数上限 |
| Lang | string | 否 | 语言 |
返回
[]model.FundHistoryQuote(Symbol / Date / Nav)
窝轮 (v0.3.0 新增)
GetWarrantBriefs 获取窝轮报价
qc.GetWarrantBriefs(req model.WarrantBriefsRequest) ([]model.WarrantBrief, error)
请求:Symbols []string / Lang。
返回
[]model.WarrantBrief(Symbol / Name / LatestPrice / Change / ChangeRate / Volume / Amount / Underlying / Issuer / ExpiryDate / StrikePrice / WarrantType)
GetWarrantFilter 窝轮筛选
qc.GetWarrantFilter(req model.WarrantFilterRequest) (*model.WarrantFilterResult, error)
请求 model.WarrantFilterRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Symbol | string | 是 | 标的代码 |
| Page / PageSize | int | 否 | 分页 |
| SortFieldName / SortDir | string | 否 | 排序 |
| IssuerName | string | 否 | 发行商过滤 |
| ExpireYm | string | 否 | 到期年月过滤(yyyyMM) |
| Lang | string | 否 | 语言 |
返回
*model.WarrantFilterResult(Total / Items / PageSize / Page)
行业 (v0.3.0 新增)
GetIndustryList 获取行业列表
qc.GetIndustryList(req model.IndustryListRequest) ([]model.IndustryItem, error)
请求 model.IndustryListRequest:IndustryLevel / Lang。
返回
[]model.IndustryItem(ID / Name / Level)
GetIndustryStocks 获取行业下股票
qc.GetIndustryStocks(req model.IndustryStocksRequest) ([]model.IndustryStock, error)
请求 model.IndustryStocksRequest:IndustryID / Market / Lang。
返回
[]model.IndustryStock(Symbol / Name / IndustryID / Change / ChangeRate)
财务与日历 (v0.3.0 新增)
GetFinancialCurrency 获取财报币种
qc.GetFinancialCurrency(req model.FinancialCurrencyRequest) ([]model.FinancialCurrency, error)
请求:Symbols []string / Market / Lang。
返回
[]model.FinancialCurrency(Symbol / Market / Currency)
GetFinancialExchangeRate 获取汇率
qc.GetFinancialExchangeRate(req model.FinancialExchangeRateRequest) ([]model.ExchangeRate, error)
请求 model.FinancialExchangeRateRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| CurrencyList | []string | 是 | 币种列表,如 ["USD", "HKD"] |
| BeginDate | string | 否 | 起始日期 yyyyMMdd |
| EndDate | string | 否 | 结束日期 yyyyMMdd |
| Timezone | string | 否 | 时区 |
| Lang | string | 否 | 语言 |
注意:
BeginDate/EndDate的格式是yyyyMMdd(没有短横线),与 K 线的毫秒时间戳不同。
返回
[]model.ExchangeRate(Currency / Date / Rate / BaseCurrency)
示例
rates, err := qc.GetFinancialExchangeRate(model.FinancialExchangeRateRequest{
CurrencyList: []string{"HKD", "EUR"},
BeginDate: "20250101",
EndDate: "20250131",
})GetTradingCalendar 获取交易日历
qc.GetTradingCalendar(req model.TradingCalendarRequest) ([]model.TradingCalendarItem, error)
请求 model.TradingCalendarRequest
| 字段 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Market | string | 是 | 市场 |
| BeginDate | string | 否 | 起始日期 yyyy-MM-dd |
| EndDate | string | 否 | 结束日期 yyyy-MM-dd |
| Lang | string | 否 | 语言 |
返回
[]model.TradingCalendarItem(Market / Date / IsTrading / SessionType)
示例
cal, err := qc.GetTradingCalendar(model.TradingCalendarRequest{
Market: "US",
BeginDate: "2025-01-01",
EndDate: "2025-12-31",
})Updated 17 days ago
