gotdx

package module
v0.0.0-...-ee77a41 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2026 License: MIT Imports: 29 Imported by: 3

README

gotdx

通达信行情协议的 Go 客户端,覆盖主行情、扩展市场、MAC 板块/统一行情、F10/文件接口,以及一个可直接运行的 Web Viewer。

快速开始 · 能力概览 · 示例 · Web Viewer · API 速览 · 测试 · 协议文档

Markets MAC Web Viewer

gotdx 把通达信协议里常用的查询能力整理成更偏 Go 的调用方式。你可以直接查主行情和扩展市场的快照、K 线、分时、逐笔,也可以继续往下钻到 F10、财务、板块文件、扩展表格和 MAC 板块协议;如果只是想先看接口返回长什么样,仓库里还带了一个可以直接打开的网页查看器。

为什么用 gotdx

  • 一个 Client 同时管理主站和扩展市场,适合做统一监控和跨市场抓取。
  • 提供两套入口:高阶统一接口 Stock* / Ex* / MAC* / Goods*,以及面向协议细节的底层 Get* / ExGet*。
  • 地址池、超时、重试都可配,适合对接不稳定的真实行情站点。
  • 内置主站、扩展、MAC、券商 host/IP 列表(主站 51 / 券商 23 / 扩展 16 / MAC 3 / MAC 扩展 18 / ICFQS 12,共 107 个唯一 IP),并支持 TCP 测速选最快节点;主站与券商池在官方公开清单、本地通达信 connect.cfg 基础上合并了 pytdx、injoyai/tdx 社区列表,经 500ms 并发拨号验证剔除失效节点后收录;MAC 扩展池按 MAC 协议握手实测收录 16 个扩展行情站(与 Ex 扩展池共享 7727 节点,协议握手不同)。
  • 自带 30+ 个示例,覆盖从列表、快照、K 线、分时到 F10、板块、扩展表格。
  • 自带 cmd/webviewer,不写代码也能直接调方法、填参数、看返回字段。
  • 协议实现、示例和 Web Viewer 已整理为统一风格,便于继续补协议、核字段和排查差异。

快速开始

安装
go get github.com/bensema/gotdx
最小示例
package main

import (
	"log"

	"github.com/bensema/gotdx"
	"github.com/bensema/gotdx/types"
)

func main() {
	mainHosts := gotdx.MainHostAddresses()
	exHosts := gotdx.ExHostAddresses()

	client := gotdx.New(
		gotdx.WithTCPAddress(mainHosts[0]),
		gotdx.WithTCPAddressPool(mainHosts[1:]...),
		gotdx.WithExTCPAddress(exHosts[0]),
		gotdx.WithExTCPAddressPool(exHosts[1:]...),
		gotdx.WithTimeoutSec(6),
	)
	defer client.Disconnect()

	stocks, err := client.StockQuotesDetail(
		[]uint8{types.MarketSZ.Uint8(), types.MarketSH.Uint8()},
		[]string{"000001", "600519"},
	)
	if err != nil {
		log.Fatal(err)
	}
	for _, item := range stocks {
		log.Printf("stock code=%s price=%.2f turnover=%.2f%%", item.Code, item.Price, item.Turnover)
	}

	exQuotes, err := client.ExQuotes(
		[]uint8{types.ExCategoryUSStock},
		[]string{"TSLA"},
	)
	if err != nil {
		log.Fatal(err)
	}
	for _, item := range exQuotes {
		log.Printf("ex: %+v", item)
	}
}
从哪套 API 开始
  • 想尽快拿到业务数据:优先用 Stock* / Ex* / MAC* 统一高阶入口。
  • 想逐个协议排查字段:用 Get* / ExGet* / GetMAC* 底层接口。
  • 想先确认请求参数和返回格式:直接运行 go run ./cmd/webviewer。
内置 Host 列表与测速
results := gotdx.ProbeHosts(gotdx.MainHosts(), time.Second)
for _, item := range results[:3] {
	log.Printf("main host=%s addr=%s reachable=%v latency=%s",
		item.Name, item.Address, item.Reachable, item.Latency)
}

fastest, err := gotdx.FastestHost(gotdx.ExHosts(), time.Second)
if err != nil {
	log.Fatal(err)
}
log.Printf("fastest ex host: %s %s", fastest.Name, fastest.Address)

client := gotdx.New(
	gotdx.WithTimeoutSec(6),
)

可用列表包括:MainHosts、BrokerHosts、ExHosts、MACHosts、MACExHosts,以及对应的 *HostAddresses 便捷函数。

连接池

gotdx.Client 以动态连接池与行情服务器通信:Connect(或 ConnectEx / ConnectMAC)按 WithPoolSize 配置池容量,建池走并行快路径——并发拨号配置前 3 个候选、收到第一个成功即返回(波动网络无需等待首地址超时即可命中可达服务器),其余候选已建成的连接入池复用;快路径拨号超时在样本不足时使用 500ms 默认短超时,样本充足后按历史建连耗时中位数自适应(在 200ms~2s 之间取值),服务器偶发秒级慢响应被直接排除而非踩中样本,全候选超时失败时走流水线探活(拨号成功即握手、首个成功即复用)兜底。池内余量由后台补建循环异步补齐;每条连接内部串行执行请求、连接之间并行,吞吐不受单连接往返限制。运行期间健康状态下每分钟重新探活并切换到当前最快的服务器,识别出慢节点后缩短到 15 秒一轮(候选收敛为池内地址与最近可达地址,每 5 次全量刷新一次);另有应用层心跳——活跃连接 30 秒一轮、空闲连接 60 秒一轮,近 2 分钟内有业务活动的连接本轮直接跳过,2 秒短超时判定僵死连接并丢弃补建——与 TCP keepalive(15 秒周期,兜底无握手协议的 MAC 模式),网络波动或服务器迁移时连接池自动跟随。

连接池完整工作流如下(请求路径与后台维护并行运行):

flowchart TD
    Start["构造 New / NewEx / NewMAC / NewMACEx"] --> Trig{"首次查询<br/>或显式 Connect*"}
    Trig -->|"是(建池)"| Build["建池:随机抽 3 候选并行拨号+握手"]
    Build -->|"首个成功即返回"| Pool[("连接池<br/>PoolSize 条")]
    Build -->|"全部失败"| Probe["流水线探活兜底"]
    Probe --> Pool
    Trig -->|"否(复用池)"| Req
    Pool --> Req["查询请求"]
    Req --> Acq{"定向持久化<br/>lastDataAddr 存在?"}
    Acq -->|"是"| Take["优先借最近成功节点连接"]
    Acq -->|"否"| Take2["轮询借出池内连接"]
    Take --> Exec["借出连接执行协议请求"]
    Take2 --> Exec
    Exec --> Empty{"应答 Count==0?"}
    Empty -->|"否"| Ok["成功:setDataAddr 记录节点<br/>release 归还"]
    Empty -->|"是"| Retry["并行探测池内其他连接"]
    Retry -->|"首个非空"| Ok
    Retry -->|"仍全空"| GiveUp["返回首次应答<br/>该日期确实无数据"]
    Ok --> Req
    GiveUp --> Req

    subgraph BG["后台维护"]
        Reb["重平衡:健康 1min / 慢节点 15s"] -->|"新节点延迟低于当前 90%"| Sw["切换更快节点"]
        HB["心跳:活跃 30s / 空闲 60s"] -->|"2s 超时判死"| Drop["丢弃僵死连接"]
        Drop --> Refill["补建循环:每秒补齐<br/>失败回退候选池"]
    end

    Down["Disconnect"] --> Close["关闭全部连接并停止后台循环"]

工作机制(调用方只需要构造客户端、必要时显式建连、用完 Disconnect,查询方法内部自动完成池内连接的借出、归还与换线):

  1. 建连:New* 不拨号,首次查询或显式 Connect* 时才建池。建池走并行快路径:随机抽 3 个候选并发拨号并握手,第一个成功即返回(波动网络无需等待首地址超时即可命中可达服务器),其余已建成的连接入池复用;快路径超时在样本不足时用 500ms 默认值,样本充足后按历史建连耗时中位数自适应(200ms~2s),偶发秒级慢响应被直接排除;全部候选失败时走流水线探活兜底。
  2. 首次收敛:建池后立即按拨号+握手总耗时对已收候选排序,后台预比较提前切换到最快候选,不等每分钟重平衡完成首次收敛,开局即落在较优节点。
  3. 定向持久化:每次查询成功后记录"最近成功节点",下次请求优先借出该节点的连接——请求稳定落在一个已确认可达的节点上,不会每请求重新测速;节点一旦劣化,由重平衡或心跳换线。
  4. 空数据处理:应答无记录(Count==0)时判定为空,并行探测池内其他连接、取首个非空应答(尾延迟从串行 3×RTT 降到约 1×RTT);连续多次返回空的节点健康度降权,定向与轮询都会跳过。仍全空时返回首次应答(该日期确实无数据)。
  5. 重平衡:后台周期性探活切换更快节点——健康时每 1 分钟一轮,识别到慢节点后缩短到 15 秒一轮(候选收敛为池内地址与最近可达地址,每 5 次全量刷新);新节点必须明显更优(默认阈值 0.9,即新节点延迟低于当前 90%)才切换,避免频繁换线。
  6. 保活与自愈:应用层心跳活跃连接 30 秒一轮、空闲连接 60 秒一轮(近 2 分钟有业务活动则跳过),2 秒短超时判定僵死连接并丢弃;TCP keepalive 15 秒兜底无握手协议的 MAC 模式。任一条连接被丢弃后,后台补建循环每秒检查池容量自动补齐,补建失败回退其他候选。
  7. 释放:Disconnect 关闭池内全部连接并停止后台循环,可重复调用。
空数据处理覆盖范围

判空换节点在唯一执行入口 execute 内实现,四个入口的全部行情/数据查询方法最终都汇聚到该入口(上层方法只做幂等建连与转包),因此天然全覆盖,无需逐函数接入:

flowchart TD
    M["主行情 New"] --> S["Stock* / Get* 组合层"]
    E["扩展市场 NewEx"] --> S2["Ex* / ExGet* 组合层"]
    MAC["MAC 主站 NewMAC"] --> S3["MAC* 上层<br/>幂等 ConnectMAC + 转包"]
    MEX["MAC 扩展站 NewMACEx"] --> S4["Goods*<br/>全部转包 Ex*/MAC*"]
    S --> B["底层协议方法<br/>Get* / ExGet* / GetMAC*"]
    S2 --> B
    S3 --> B
    S4 --> B
    B --> EX["execute 唯一入口"]
    EX -->|"应答空<br/>Count==0"| R["并行探测换节点 ≤2 次<br/>健康度降权 + 强制重平衡"]
    EX -->|"非空"| OK["setDataAddr 定向<br/>健康度清零"]

判空规则(isEmptyReply):应答结构带 Count uint16 字段且为零(历史、分时、逐笔类)或带 Returned uint32 字段且为零(MAC 偏移 K 线)即判定为空;反射只读单个字段、开销可忽略,新增函数只要走 execute 就自动获得换节点能力。

类别 覆盖 说明
主行情查询(Stock* / Get*) 覆盖 直接或转包后 return client.execute(obj)
扩展市场查询(Ex* / ExGet*) 覆盖 含 ExHistoryTransaction
MAC 查询(MAC* / GetMAC*) 覆盖 上层 = 幂等 ConnectMAC + 转包底层
MAC 扩展站(Goods*) 覆盖 全部转包 Ex* / MAC* 查询
文件下载(DownloadFullFile 等) 不适用 空块是"文件下载完毕"标志(Size==0 结束),换节点破坏下载流
表格拉取(ExGetTable 等) 不适用 Count==0 表示表格已读完,是自身的终止条件
原始调试(RawDataReply 类) 自动免疫 应答无 Count / Returned 字段,判空跳过,不误触发
订阅(Subscriber) 不适用 长连接流式模型,不走 execute
非结构体返回(uint16 / uint32 / []float64) 自动免疫 判空反射对非结构体返回 false
连接与管理(Connect / Disconnect 等) — 无"数据为空"概念

单连接模式(WithSingleConnectionMode)或关闭换节点(DisableEmptyNodeSwitch)时,空应答直接返回首次结果,行为对齐老库固定单节点。

熔断与防击穿(execute 统一保护)

数据查询请求统一挂载熔断 + 防击穿两层保护,同样在唯一执行入口 execute 内实现,四个入口全部方法零改动自动生效(默认开启):

  • 熔断:按协议命令码分桶,同一命令连续失败(网络收发/协议解析错误,空应答不计失败)达到阈值(默认 5 次)打开熔断,冷却期(默认 5 秒)内请求快速失败返回 ErrCircuitOpen,不再尝试打行情源;冷却期满放行单个试探请求验证恢复,成功关闭熔断、失败重新打开。
  • 防击穿:同参数并发请求按「屏蔽请求序号后的报文摘要」合并为一次网络请求,其余请求等待共享同一份结果(失败同样共享),避免同一请求风暴重复打行情源。请求序号(SeqID)在报文头固定偏移,屏蔽后同参数请求键一致;不同命令码、不同参数互不合并。
client := gotdx.New(
	gotdx.WithGuardDisabled(true),                        // 关闭熔断+防击穿(默认开启)
	gotdx.WithGuardConfig(10, 3*time.Second),             // 连续失败 10 次熔断、冷却 3 秒
)

与既有机制的关系:空数据换节点处理"应答为空"的数据完整度问题,不计入熔断失败;熔断打开期间请求快速失败,心跳探活与连接补建仍按原节奏运行,源恢复后自动回归。连接握手(Connect / ConnectEx / ConnectMAC)不走 execute,不受保护范围影响。

四个入口

四个入口的构造与建连方式一致,差异在握手机制与能力域:

入口 构造 显式建连 握手 能力域
主行情 gotdx.New Connect() Hello1 A 股/指数快照、K 线、分时、逐笔、F10、文件
扩展市场 gotdx.NewEx ConnectEx() ExLogin 美股/港股/期货等扩展标的列表、报价、K 线、历史成交、表格
MAC 主站 gotdx.NewMAC ConnectMAC() 无(拨号即连) 板块行情、成分报价、单只快照、逐笔、竞价、资金流向
MAC 扩展站 gotdx.NewMACEx ConnectMAC() MAC 协议握手 MAC 扩展行情,查询方法同 MAC 协议族
client := gotdx.New(
	gotdx.WithPoolSize(3),       // 默认 3,非正数忽略并回退默认
	gotdx.WithTimeoutSec(6),     // 默认 2 秒,非正数忽略并回退默认
)
if _, err := client.Connect(); err != nil {
	log.Fatal(err)
}
defer client.Disconnect()

stocks, err := client.StockQuotesDetail(
	[]uint8{types.MarketSZ.Uint8(), types.MarketSH.Uint8()},
	[]string{"000001", "600519"},
)
if err != nil {
	log.Fatal(err)
}
for _, item := range stocks {
	log.Printf("code=%s price=%.2f turnover=%.2f%%", item.Code, item.Price, item.Turnover)
}
// 扩展市场入口(美股历史成交)
exClient := gotdx.NewEx(gotdx.WithTimeoutSec(6))
if _, err := exClient.ConnectEx(); err != nil {
	log.Fatal(err)
}
defer exClient.Disconnect()

items, err := exClient.ExHistoryTransaction(20260330, types.ExCategoryUSStock, "TSLA")
if err != nil {
	log.Fatal(err)
}
log.Printf("history items=%d", len(items))
// MAC 主站入口(深市单只快照)
macClient := gotdx.NewMAC(gotdx.WithTimeoutSec(6))
if err := macClient.ConnectMAC(); err != nil {
	log.Fatal(err)
}
defer macClient.Disconnect()

quotes, err := macClient.MACQuotes(types.MarketSZ.Uint8(), "000001")
if err != nil {
	log.Fatal(err)
}
log.Printf("code=%s name=%s price=%.2f", quotes.Code, quotes.Name, quotes.Price)
// MAC 扩展站入口(深市日 K,查询方法同 MAC 协议族;需 import "github.com/bensema/gotdx/types")
macExClient := gotdx.NewMACEx(gotdx.WithTimeoutSec(6))
if err := macExClient.ConnectMAC(); err != nil {
	log.Fatal(err)
}
defer macExClient.Disconnect()

bars, err := macExClient.MACSymbolBars(
	types.MarketSZ.Uint8(), "000001",
	types.KLINE_TYPE_DAILY, 1, 0, 10, types.AdjustNone,
)
if err != nil {
	log.Fatal(err)
}
if len(bars) > 0 {
	log.Printf("bars=%d lastClose=%.2f", len(bars), bars[len(bars)-1].Close)
}
选项与场景配置

不传任何选项即用内置默认(内置地址池 + PoolSize=3 + 超时 8 秒);按场景调整:

// 场景一:默认多连接池,并发抓取多市场;无需选项或只调超时
client := gotdx.NewEx(gotdx.WithTimeoutSec(6))

// 场景二:单并发、追求窄尾延迟 —— 单连接模式(池=1 + 关闭空数据换节点)
client := gotdx.NewEx(gotdx.WithSingleConnectionMode(), gotdx.WithTimeoutSec(6))

// 场景三:自定义地址池 + 预测速,把最快节点设为首选
fastest, err := gotdx.FastestHost(gotdx.ExHosts(), 3*time.Second)
if err != nil {
	log.Fatal(err)
}
client := gotdx.NewEx(
	gotdx.WithExTCPAddress(fastest.Address),
	gotdx.WithExTCPAddressPool(gotdx.ExHostAddresses()...),
	gotdx.WithTimeoutSec(6),
)
选项 默认 说明
WithPoolSize(n) 3 池内并行 TCP 连接条数,越大并发吞吐越高
WithSingleConnectionMode() 关闭 池大小置 1 并关闭空数据换节点,见下方「单连接模式」
WithEmptyNodeSwitchDisabled(true) 关闭 单独关闭空数据换节点,不改变池大小
WithTCPAddress / WithTCPAddressPool 内置池 主行情单点地址 / 地址池
WithExTCPAddress / WithExTCPAddressPool 内置池 扩展行情单点地址 / 地址池
WithMacTCPAddress / WithMacTCPAddressPool 内置池 MAC 主站单点地址 / 地址池
WithMacExTCPAddress / WithMacExTCPAddressPool 内置池 MAC 扩展站单点地址 / 地址池
WithTimeoutSec(n) 8 秒 连接与读写共用超时,非正数忽略并回退默认
连接语义与并发
  • 每条池内连接内部串行执行请求,连接之间并行,吞吐随 PoolSize 增长(默认 3 条);
  • 借出与归还由查询方法内部完成,所有公开方法并发安全,可直接多 goroutine 同时调用;
  • 显式 Connect* 幂等:已有池直接复用,不重复拨号;
  • Disconnect 幂等:关闭全部连接并停止补建、心跳、重平衡循环;
  • CurrentAddress 返回池内首条连接实际连通的服务器地址,用于观测与日志。
单连接模式

单并发、追求窄尾延迟的调用方可以开启显式单连接模式:WithSingleConnectionMode() 同时把池大小置为 1 并关闭空数据换节点,全程复用一条长连接,获得接近老库固定单连接的稳定延迟分布;断连自愈(心跳判死、后台补建、重平衡)仍然保留。只想关闭空数据换节点、保留多连接池时,使用 WithEmptyNodeSwitchDisabled(true),两个选项相互独立;默认关闭,不传时保持三连接池与空数据并行换节点行为。

client := gotdx.NewEx(
	gotdx.WithSingleConnectionMode(), // 池大小 1 + 关闭空数据换节点
)
if _, err := client.ConnectEx(); err != nil {
	log.Fatal(err)
}
defer client.Disconnect()

可运行示例见 examples/ex_single_connection。

行情订阅

Client.Subscriber() 返回的 Subscriber 通用订阅工厂,对任意数据源建立"轮询 diff 推送"订阅:内部按间隔轮询拉取快照(复用各查询方法请求协议,无需新增推送协议),快照变化时回调处理函数。首次订阅立即推送一次建立基线,此后仅在变化时推送;处理函数返回 false 或调用返回的取消函数即停止订阅。

sub := client.Subscriber()

// 报价订阅:复用 GetSecurityQuotes 拉取链路。
cancel, err := sub.Subscribe(
	gotdx.SubscribeSource[*proto.GetSecurityQuotesReply]{
		Fetch: func() (*proto.GetSecurityQuotesReply, error) {
			return client.GetSecurityQuotes([]uint8{types.MarketSH}, []string{"600000"})
		},
	},
	3*time.Second, // 轮询间隔,非正数使用默认 3 秒
	func(q *proto.GetSecurityQuotesReply) bool {
		log.Printf("%s 最新价 %.2f", q.List[0].Code, q.List[0].Close)
		return true // 返回 false 取消订阅
	},
)
if err != nil {
	log.Fatal(err)
}
defer cancel()

K 线、分时、逐笔、指数、扩展市场等所有查询能力用同一套订阅语义接入:SubscribeSource[T] 中 Fetch 提供拉取函数(任意查询方法),Changed 可选自定义变化判定(如"仅新 K 线出现时推送""价格变动超过阈值才推送"),省略时默认深比较:

sub.Subscribe(
	gotdx.SubscribeSource[*proto.GetSecurityBarsReply]{
		Fetch: func() (*proto.GetSecurityBarsReply, error) {
			return client.GetKLine(0, types.MarketSH, "600000", 0, 10, 0, 0)
		},
		Changed: func(old, new *proto.GetSecurityBarsReply) bool {
			return len(new.List) > len(old.List) // 仅新 K 线出现时推送
		},
	},
	5*time.Second,
	func(k *proto.GetSecurityBarsReply) bool {
		log.Printf("最新收盘 %.2f", k.List[0].Close)
		return true
	},
)

工厂基座能力:相同 Key 的订阅合并到同一轮询任务、一次拉取服务多个处理函数(避免重复轮询),未指定 Key 时每次订阅独立轮询;合并限定在同一 Subscriber 实例内,且追加订阅会立即收到当前快照建立基线(不等到数据变化);轮询间隔每轮实时生效,缩小间隔即时提速。拉取失败自动跳过本轮、下轮重试,订阅不中断;拉取函数与处理函数的 panic 均被隔离,不影响其他订阅与进程。停止路径:返回的取消函数、处理函数返回 false、工厂 Close 或客户端 Disconnect 均可收敛轮询循环,不泄漏 goroutine。

能力概览

模块 典型能力 代表接口
主行情 股票/指数列表、快照、K 线、分时、逐笔、指数工具、异动、集合竞价 StockQuotesDetail, StockKLine, StockIndexInfo, StockUnusual, StockAuction
扩展市场 美股/港股/期货等扩展标的列表、报价、K 线、历史成交、表格 ExQuotes, ExKLine, ExHistoryTransaction, ExTable
TDX 商品语义 对齐 goods_* 命名的商品总览、列表、报价、K 线、分时、历史成交 GoodsCount, GoodsList, GoodsVarieties, GoodsQuotes, GoodsKLine
F10 与文件 公司信息分类、正文、财务、除权除息、文件下载、板块文件 GetCompanyInfo, GetFinanceInfo, GetXDXRInfo, DownloadFullFile
MAC 协议 板块列表、成分股、成分报价、动态成分报价、批量股票报价、单只快照、逐笔成交、竞价、多日分时、股票摘要、资金流向、服务端交易时段、K线偏移信息、文件查询/下载、市场监控、所属板块、统一 K 线 MACBoardList, MACBoardMembers, MACBoardMembersWithSort, MACBoardMembersQuotes, MACBoardMembersQuotesWithSort, MACBoardMembersQuotesDynamic, MACBoardMembersQuotesDynamicWithFilter, MACSymbolQuotes, MACQuotes, MACTransactions, MACAuction, MACTickCharts, MACSymbolInfo, MACCapitalFlow, MACServerInfo, MACKLineOffset, MACMarketMonitor, MACSymbolBars
ICFQS HTTP 主题投资、主题行情、批量行情、龙虎榜、每日复盘等 TQLEX/JSON 原始接口 NewICFQS, PostTQL, ICFQSTopicListRaw, ICFQSQuotesBatchRaw, ICFQSMRFPRaw
协议调试 原始协议响应、扩展实验接口、网页查看器 MainTodoB, MainClient26AD, ExExperiment2487, cmd/webviewer

项目结构

  • proto/: 各协议的请求/响应序列化与反序列化实现。
  • cache/: 基于 Redis 的缓存层基座(机制底座),按数据形态分两类存储:时间序列能力(K 线/分时/逐笔/竞价/MAC 时序)采用「ZSet 闭合历史 + String 实时」双结构并走 Lua 原子流转,ZSet 永久保存不自动淘汰;行情快照/列表/服务器/公司资料/文件等采用整段键值缓存;两类均含空标记防穿透、singleflight+分布式锁防击穿、熔断防雪崩,详见「缓存层」一节。
  • client_quote.go: 主行情底层接口。
  • client_exquote.go: 扩展市场底层接口。
  • client_mac.go: MAC 协议接口。
  • client_unified.go / client_goods.go: Stock* / Ex* / MAC* / Goods* 高阶统一入口。
  • cmd/webviewer/: 浏览器调试界面。
  • examples/: 可直接运行的示例。

缓存层

cache 包为 gotdx 提供基于 Redis 的缓存层基座:当前已实现存储机制与防护底座, 对外查询能力(与 gotdx.Client 同名方法)在此基座上逐能力族构建,每个能力族一个 源文件。所有机制并发安全。

时间序列能力(K 线、分时、逐笔、历史成交、竞价、MAC 时序等)——凡属 「最新一根未闭合 + 历史已闭合」形态的数据,采用 ZSet 闭合历史 + String 实时 双结构存储:

  • 未闭合的最新一根存入普通 String(键为 ZSet 键加 :live 后缀),值为 「分数|更新时刻|base64 数据」三段拼接文本;tick 到达时由单条 Lua 脚本原子完成 「同根覆盖 / 前一根闭合流转进 ZSet / 续写 TTL」,TTL 仅作行情源断流兜底。
  • 已闭合的根按 score 存入 ZSet:score 统一为 Unix 毫秒(时间戳换算),member 为 单根应答 MessagePack 编码后再 base64 的文本,与实时槽编码一致、可被 Lua 原样搬移。
  • ZSet 永久保存,不自动淘汰(无后台任务、无 Stop());如需清理只能外部显式 DEL 或 ZREMRANGEBYSCORE。
  • 历史修正写入由 Lua 脚本原子完成:先按 score 删除同 score 旧成员再 ZADD(修正覆盖 而不堆积);逐笔、成交等「同分可多笔共存」的族以追加写入绕过同分唯一约束。
  • 查询用一条 pipeline 同时完成空标记检查、实时槽读取与 ZSet 最新段读取(单次往返), 合并后按分数降序(时间从新到旧)排序,按 start/count 窗口切片返回;实时槽超过 刷新间隔未更新时拉一次最新一根做 tick 更新(同样受熔断保护)。

普通键值能力(行情快照、证券列表、榜单、服务器信息、公司资料、文件等)——整段 应答 MessagePack 编码后存入 Redis String(信封带版本号便于格式迁移),附带空标记, 不设体积上限。

防护机制(两类通用):

  • 穿透防护:回源失败或结果为空时写入短 TTL 空标记(默认 5 秒),存活期内不再回源, 防恶意穿透打垮行情源;失败与空结果用不同标记值区分。
  • 击穿防护:同进程 singleflight 合并同键并发;跨进程抢 Redis 分布式锁 (SET NX EX,5 秒超时防死锁),持锁方二次确认后才回源,以 Lua 校验 token 解锁; 抢锁失败直连回源兜底,同键并发只打一次行情服务器。
  • 熔断防护:回源连续失败达到阈值(默认 5 次)打开熔断,冷却期内(默认 10 秒)未命中 查询快速失败返回 ErrCircuitOpen,不再打行情源;冷却期满放行单个试探请求,成功即 关断、失败重新打开。
  • 降级:Redis 故障时自动退化为直连回源(查询、锁、熔断三层全部兜底),不因缓存层 故障阻断行情。
import (
    "github.com/bensema/gotdx"
    "github.com/bensema/gotdx/cache"
    "github.com/redis/go-redis/v9"
)

cli := gotdx.New()                    // 行情客户端,按需传 gotdx.WithTCPAddress 等选项,使用前 Connect
rdb := redis.NewClient(&redis.Options{Addr: "localhost:6379"})
cached := cache.NewCacheClient(rdb, cli) // 可传 cache.WithKeyPrefix、cache.WithEmptyTTL、
                                         // cache.WithLockTimeout、cache.WithLiveTTL、
                                         // cache.WithCircuitFailThreshold、cache.WithCircuitOpenTimeout
// 非法选项值(阈值 0、负 TTL、空前缀)自动回退默认值。
// 能力层在此基座上按族构建(每个能力族一个源文件,覆盖 gotdx 全部查询能力);
// 构建后调用方式与 gotdx.Client 同名方法一致(参数与返回值相同)。
// 已构建:client_line.go(StockKLine、GetIndexBars、ExGetKLine、ExKLine、ExGetKLine2、MACSymbolBars)。
// 统一口径 start 为 offset、
// count 为 limit,返回从早到晚。未闭合的最新一根(index 0)存 String 实时槽:start=0 的
// 查询按 5 秒新鲜度回源刷新(盘中同一根数值演化会覆盖槽值),start>0 的
// 翻页不按新鲜度刷新、只在槽缺失时补一次(槽是位置基准的一部分,缺失会
// 让深页 offset 整体偏移)。其余已闭合根以
// 「时间戳分数 + 单根 MessagePack 成员」存入 ZSet,永久保留;查询时由
// 时序基座把两者合并、按位置切片,start=0 天然等价于「(0,1) 实时 +
// (1,count-1) 历史」的合并结果。窗口未覆盖时按原窗口 (start,count) 回源,
// 从不预先拉取 (0,start+count)(深 offset 与未加缓存一样只发一次正常请求);
// 回源结果仅在缓存已覆盖窗口起点之前(深度 >= start)时并入 ZSet,因此
// 缓存始终是从最新端起的连续前缀,跳页只直通返回、不写缓存。

// 运行时观测:Stats() 返回命中/空标记命中/回源/回源失败/熔断拒绝五项原子计数快照,
// 可据此计算缓存命中率并判断行情源健康度。
stats := cached.Stats()
fmt.Println(stats.Hits, stats.EmptyHits, stats.Fetches, stats.SourceErrors, stats.CircuitRejects)

基座文件:client.go(入口与配置)、kv.go(键值缓存机制)、ts.go(时序双结构 机制)、lua.go(原子脚本)、breaker.go(回源熔断器);能力文件: client_line.go(K 线族:StockKLine 返回 []proto.SecurityBar、 GetIndexBars 返回 []proto.IndexBar、ExGetKLine 与 ExKLine 共用一份 []proto.ExKLineItem 缓存(同一协议 0x23ff 的两层封装,不重复存储)、 ExGetKLine2 返回 []proto.ExKLineItem(协议 0x2489,与前者分键存放)、 MACSymbolBars 返回 []proto.MACSymbolBar;ZSet 存已闭合历史根 + 实时槽存未闭合 最新一根,合并后按 offset 窗口返回)。

示例

下面这些命令可以直接运行:

场景 命令
主行情快照 go run ./examples/stock_quotes
批量主行情 go run ./examples/stock_batch_quotes
列表与分页遍历 go run ./examples/stock_list / go run ./examples/stock_paged_list
K 线与指数工具 go run ./examples/stock_kline / go run ./examples/stock_index_tools
分时、历史分时、逐笔 go run ./examples/stock_tick / go run ./examples/stock_history / go run ./examples/stock_transaction
F10、公司资料、板块文件 go run ./examples/stock_f10_block / go run ./examples/stock_company_raw / go run ./examples/stock_block_raw
市场监控 go run ./examples/stock_market_watch
主机测速与地址池 go run ./examples/host_probe
主站服务与试验协议 go run ./examples/stock_server_info / go run ./examples/main_experimental
主行情兼容协议 go run ./examples/stock_list_old / go run ./examples/stock_feature_452 / go run ./examples/stock_quotes_encrypt / go run ./examples/stock_kline_offset / go run ./examples/stock_history_transaction_with_trans
扩展市场单只/批量报价 go run ./examples/ex_quote / go run ./examples/ex_quotes / go run ./examples/ex_quotes2
扩展市场列表与分类 go run ./examples/ex_count / go run ./examples/ex_list / go run ./examples/ex_paged_list / go run ./examples/ex_category_list
扩展市场 K 线、分时、历史成交 go run ./examples/ex_kline / go run ./examples/ex_tick / go run ./examples/ex_history
扩展市场单连接模式 go run ./examples/ex_single_connection
扩展试验与补充协议 go run ./examples/ex_list_extra / go run ./examples/ex_board_list / go run ./examples/ex_experiment_2487 / go run ./examples/ex_experiment_2488 / go run ./examples/ex_kline2 / go run ./examples/ex_mapping_2562
扩展市场表格 go run ./examples/ex_table / go run ./examples/ex_table_detail
TDX 商品语义入口 go run ./examples/goods_overview
MAC 协议 go run ./examples/mac_board_list / go run ./examples/mac_board_members / go run ./examples/mac_board_members_quotes / go run ./examples/mac_board_members_quotes_dynamic / go run ./examples/mac_symbol_quotes / go run ./examples/mac_market_monitor / go run ./examples/mac_quotes / go run ./examples/mac_transactions / go run ./examples/mac_auction / go run ./examples/mac_tick_charts / go run ./examples/mac_symbol_info / go run ./examples/mac_capital_flow / go run ./examples/mac_server_info / go run ./examples/mac_kline_offset / go run ./examples/mac_file_query / go run ./examples/mac_symbol_belong_board / go run ./examples/mac_symbol_bars
ICFQS HTTP 原始接口 go run ./examples/icfqs_raw
统一监控示例 go run ./examples/unified_watchlist
查看完整示例目录
  • examples/stock_count
  • examples/stock_server_info
  • examples/stock_list
  • examples/stock_list_old
  • examples/stock_paged_list
  • examples/stock_batch_quotes
  • examples/stock_quotes
  • examples/stock_quotes_encrypt
  • examples/stock_lowlevel_quote
  • examples/stock_quotes_list
  • examples/stock_kline
  • examples/stock_kline_offset
  • examples/stock_feature_452
  • examples/stock_index_tools
  • examples/stock_tick
  • examples/stock_history
  • examples/stock_history_transaction_with_trans
  • examples/stock_market_watch
  • examples/host_probe
  • examples/icfqs_raw
  • examples/stock_transaction
  • examples/stock_f10_block
  • examples/stock_company_raw
  • examples/stock_block_raw
  • examples/main_experimental
  • examples/ex_count
  • examples/ex_quote
  • examples/ex_list
  • examples/ex_list_extra
  • examples/ex_paged_list
  • examples/ex_quotes
  • examples/ex_quotes2
  • examples/ex_quotes_list
  • examples/ex_kline
  • examples/ex_kline2
  • examples/ex_board_list
  • examples/ex_experiment_2487
  • examples/ex_experiment_2488
  • examples/ex_mapping_2562
  • examples/goods_overview
  • examples/ex_history
  • examples/ex_single_connection
  • examples/ex_tick
  • examples/ex_server_info
  • examples/ex_sampling
  • examples/ex_category_list
  • examples/ex_table
  • examples/ex_table_detail
  • examples/mac_board_list
  • examples/mac_board_members
  • examples/mac_board_members_quotes
  • examples/mac_board_members_quotes_dynamic
  • examples/mac_symbol_quotes
  • examples/mac_market_monitor
  • examples/mac_quotes
  • examples/mac_transactions
  • examples/mac_auction
  • examples/mac_tick_charts
  • examples/mac_symbol_info
  • examples/mac_capital_flow
  • examples/mac_server_info
  • examples/mac_kline_offset
  • examples/mac_file_query
  • examples/mac_symbol_belong_board
  • examples/mac_symbol_bars
  • examples/unified_watchlist

Web Viewer

仓库内置了一个轻量的网页查看器,适合在这些场景下使用:

  • 先确认某个方法应该填哪些参数。
  • 快速查看返回字段,而不是先写一段测试代码。
  • 对照 MAC 动态位图字段,直接看 bit/name/format/description,也可以用 TDX 商品语义分组调 goods_* 入口。
  • 直接检查主站文件、表格文件和 CSV 文件的结构化结果。
  • 对比不同主机返回的数据差异。
  • 调试实验协议或原始接口。

gotdx Web Viewer 截图

启动:

go run ./cmd/webviewer

默认地址:

http://127.0.0.1:8080

Web Viewer 中的 ICFQS HTTP 原始接口已按 主题投资、行情、龙虎榜、每日复盘 分组;多表响应可用 table_index 选择展示的 ResultSets,完整响应保留在 Raw 面板。

API 速览

高阶统一入口
  • StockQuotesDetail、StockQuotesList、StockQuotes 会按证券列表里的 DecimalPoint 尽力修正非 2 位小数价格,并在可获取到流通股本时补齐 Turnover。
  • 主行情:StockCount, StockList, StockQuotesDetail, StockKLine, StockTickChart, StockIndexInfo, StockIndexMomentum, StockChartSampling, StockAuction, StockTopBoard, StockUnusual, StockVolumeProfile, StockHistoryOrders, StockHistoryTransaction, StockF10
  • 扩展市场:ExCount, ExList, ExQuote, ExQuotes, ExKLine, ExTickChart, ExHistoryTransaction, ExTable
  • 商品语义:GoodsCount, GoodsCategoryList, GoodsList, GoodsVarieties, GoodsQuote, GoodsQuotes, GoodsQuotesList, GoodsKLine, GoodsTickChart, GoodsChartSampling, GoodsHistoryTransaction
  • MAC:MACBoardList, MACBoardMembers, MACBoardMembersWithSort, MACBoardMembersQuotes, MACBoardMembersQuotesWithSort, MACBoardMembersQuotesDynamic, MACBoardMembersQuotesDynamicWithFilter, MACSymbolQuotes, MACQuotes, MACQuotesWithDate, MACTransactions, MACTransactionsWithDate, MACAuction, MACTickCharts, MACSymbolInfo, MACCapitalFlow, MACFileList, MACDownloadFullFile, MACMarketMonitor, MACSymbolBelongBoard, MACSymbolBars;MACSymbolBars 会基于返回的流通股本字段尽力补齐 Turnover。
常用底层接口
  • 主行情:GetSecurityCount, GetSecurityListRange, GetQuotesDetail, GetIndexInfo, GetIndexMomentum, GetVolumeProfile, GetMinuteTimeData, GetAuction, GetTopBoard, GetUnusual, GetTransactionData, GetHistoryOrders
  • F10/文件:GetCompanyCategories, GetCompanyContent, GetFinanceInfo, GetXDXRInfo, DownloadFile, GetBlockFile
  • 扩展市场:ExGetCategoryList, ExGetQuotesList, ExGetQuote, ExGetChartSampling, ExGetFileMeta, ExDownloadFile
  • MAC:GetMACBoardCount, GetMACBoardList, GetMACBoardMembers, GetMACBoardMembersQuotes, GetMACBoardMembersQuotesDynamic, GetMACBoardMembersQuotesDynamicWithFilter, GetMACSymbolQuotes, GetMACQuotes, GetMACQuotesWithDate, GetMACTransactions, GetMACTransactionsWithDate, GetMACAuction, GetMACTickCharts, GetMACSymbolInfo, GetMACCapitalFlow, GetMACFileList, GetMACFileDownload, GetMACMarketMonitor, GetMACSymbolBelongBoard, GetMACSymbolBars
地址池与测速
  • 内置列表:MainHosts, BrokerHosts, ExHosts, MACHosts, MACExHosts
  • 地址便捷函数:MainHostAddresses, BrokerHostAddresses, ExHostAddresses, MACHostAddresses, MACExHostAddresses
  • 测速函数:ProbeHosts, ProbeAddresses, FastestHost, FastestAddress
  • 客户端能力:Client.ProbeHosts, Client.FastestHost
试验与兼容协议
  • 主站试验:MainTodoB, MainTodoFDE, MainClient264B, MainClient26AC, MainClient26AD, MainClient26AE, MainClient26B1
  • 主站兼容:StockListOld, StockFeature452, StockQuotesEncrypt, StockKLineOffset, StockHistoryTransactionWithTrans
  • 扩展试验:ExListExtra, ExExperiment2487, ExExperiment2488, ExKLine2, ExMapping2562
  • TDX 商品语义:GoodsCount, GoodsCategoryList, GoodsList, GoodsVarieties, GoodsQuote, GoodsQuotes, GoodsQuotesList, GoodsKLine, GoodsTickChart, GoodsChartSampling, GoodsHistoryTransaction
查看更完整的接口分组
主行情与通用接口
  • Connect, Disconnect
  • GetExchangeAnnouncement, GetServerHeartbeat, GetAnnouncement, GetServerInfo
  • GetSecurityCount, GetSecurityQuotes, GetQuotesDetail, GetQuotesEncrypt
  • GetSecurityList, GetSecurityListOld, GetSecurityListRange
  • GetKLine, GetSecurityBars, GetSecurityBarsOffset, GetIndexBars
  • GetIndexMomentum, GetIndexInfo, GetMinuteTimeData, GetTickChart, GetHistoryMinuteTimeData, GetHistoryTickChart
  • GetChartSampling, GetAuction, GetTopBoard, GetUnusual
  • GetTransactionData, GetHistoryOrders, GetHistoryTransactionData, GetHistoryTransactionDataWithTrans
F10、公司资料与文件
  • GetCompanyCategories, GetCompanyContent, GetFinanceInfo, GetXDXRInfo, GetCompanyInfo
  • GetFileMeta, DownloadFile, DownloadFullFile
  • GetBlockFile, GetTableFile, GetCSVFile, GetParsedBlockFile, GetGroupedBlockFile
扩展市场
  • ConnectEx, GetExServerInfo
  • ExGetCount, ExGetCategoryList, ExGetList, ExGetListExtra
  • ExGetQuotesList, ExGetQuote, ExGetQuotes, ExGetQuotes2
  • ExGetKLine, ExGetKLine2
  • ExGetHistoryTransaction, ExGetTickChart, ExGetHistoryTickChart, ExGetChartSampling
  • ExGetBoardList, ExGetMapping2562
  • ExGetFileMeta, ExDownloadFile, ExDownloadFullFile
  • ExGetTable, ExGetTableDetail
MAC 协议
  • NewMAC, NewMACEx, ConnectMAC
  • GetMACBoardCount, GetMACBoardList, GetMACBoardMembers, GetMACBoardMembersQuotes, GetMACBoardMembersQuotesDynamic, GetMACBoardMembersQuotesDynamicWithFilter, GetMACSymbolQuotes, GetMACQuotes, GetMACQuotesWithDate, GetMACTransactions, GetMACTransactionsWithDate, GetMACAuction, GetMACTickCharts, GetMACSymbolInfo, GetMACCapitalFlow, GetMACServerInfo, GetMACKLineOffset, GetMACFileList, GetMACFileDownload, GetMACMarketMonitor
  • GetMACSymbolBelongBoard, GetMACSymbolBars
  • MACBoardCount, MACBoardList, MACBoardMembers, MACBoardMembersWithSort, MACBoardMembersQuotes, MACBoardMembersQuotesWithSort, MACBoardMembersQuotesDynamic, MACBoardMembersQuotesDynamicWithFilter, MACSymbolQuotes, MACQuotes, MACQuotesWithDate, MACTransactions, MACTransactionsWithDate, MACAuction, MACTickCharts, MACSymbolInfo, MACCapitalFlow, MACServerInfo, MACKLineOffset, MACFileList, MACDownloadFullFile, MACMarketMonitor
  • MACSymbolBelongBoard, MACSymbolBars
  • 位图辅助:MACFieldBit, MACPresetField, MACSortType, MACSortOrder, MACFilterType, MACFieldBitmap, MACFilterFlags, MACBoardMembersQuotesRequestBitmap, DefaultMACBoardMembersQuotesFieldBitmap, FullMACBoardMembersQuotesFieldBitmap, MACBoardMembersQuotesFieldBitmapFromBits, DefaultMACSymbolQuotesFieldBitmap, FullMACSymbolQuotesFieldBitmap, MACSymbolQuotesFieldBitmapFromBits
ICFQS HTTP
  • NewICFQS, NewICFQSHot, WithICFQSAddress, WithICFQSTimeout, ICFQSHosts, ICFQSHostAddresses
  • PostTQL, PostJSON, ICFQSFormatTables
  • ICFQSTopicListRaw, ICFQSSearchTopicsRaw, ICFQSNewTopicsRaw, ICFQSHotTopicsRaw, ICFQSEventsRaw, ICFQSTopTopicsRaw, ICFQSTopicDetailRaw, ICFQSTopicKLineRaw, ICFQSTopicStocksRaw
  • ICFQSTopicQuotesRaw, ICFQSTopicRotationRaw, ICFQSQuotesBatchRaw
  • ICFQSLHBDetailRaw, ICFQSYYBDetailRaw, ICFQSYZDetailRaw, ICFQSMRFPRaw, ICFQSMRFPLatestDateRaw

测试

单元测试:

go test ./...

连接真实站点的集成测试默认跳过;如需开启:

GOTDX_INTEGRATION=1 go test ./...

相关文档

License

本项目使用 MIT License 开源,详见 LICENSE。

Documentation

Overview

Package gotdx 通用行情订阅工厂:对任意数据源建立"轮询 diff 推送"订阅。

工厂与具体的查询方法解耦:调用方提供拉取函数(`Fetch`)与可选的变化判定 (`Changed`),工厂负责按间隔轮询、快照对比与变化回调,因此 K 线、分时、逐笔、 指数、扩展市场等所有查询能力都可以用同一套订阅语义接入,无需为每种数据单独 实现推送循环。

基座能力:

  • 高吞吐:相同 `Key` 的订阅合并到同一个轮询任务,一次拉取服务多个处理函数, 避免对服务器重复轮询;不同数据源的任务并行拉取。
  • 高性能:轮询间隔每轮实时读取,间隔缩小无需重建任务循环;任务状态 (快照、处理函数列表)按锁分区管理,回调期间订阅增删不影响本次推送。
  • 安全:拉取与回调均做异常隔离,单个订阅 panic 不影响其他订阅与进程;取消、 客户端关闭、工厂关闭均可及时收敛轮询循环,不泄漏 goroutine。

Package gotdx 是通达信行情协议的 Go 客户端库,覆盖主行情、扩展市场、MAC 板块与统一行情、F10 与文件接口。

本包提供两套互补的调用入口:

  • 高层统一接口:`Stock`*、`Ex`*、`MAC`*、`Goods`* 系列方法,将协议细节封装为简洁的 Go 调用, 适合跨市场监控与数据抓取;
  • 底层协议接口:`Get`*、`ExGet`*、`MACGet`* 系列方法,直接暴露请求构造与响应解码, 适合需要控制协议细节的场景。

客户端通过 `New` 构造,并以 `Option` 配置主站、扩展站、MAC 站地址、地址池、超时与重试行为; 内置常用站点地址列表并支持 TCP 测速自动选择最快节点。`Client` 的方法可并发调用,内部串行化 同一连接的请求收发。

市场与周期等共享枚举定义在 `types` 子包,协议请求与响应定义在 `proto` 子包; 仓库还附带可直接运行的示例(`examples`)与可视化查询工具(`cmd/webviewer`)。

Index

Constants

View Source
const (
	// DefaultGoodsHistoryTransactionCount 是 GoodsHistoryTransaction 的 `count` 为 0 时使用的
	// 默认历史成交条数,取值 2000。
	DefaultGoodsHistoryTransactionCount uint32 = 2000
	// MaxGoodsVarietiesCount 是 GoodsVarieties 单次请求允许的最大品种条数,取值 1000;
	// 请求 `count` 超过该上限时在本地直接返回参数错误,不再发送协议请求。
	MaxGoodsVarietiesCount uint32 = 1000
)
View Source
const (
	// DefaultMACBoardListCount 为 `MACBoardList` 未指定 `count` 时默认拉取的板块总数上限。
	DefaultMACBoardListCount = 10000
	// DefaultMACBoardPageSize 为板块列表单页默认条数(`GetMACBoardList` 的 `pageSize` 默认值)。
	DefaultMACBoardPageSize uint16 = 150
	// DefaultMACBoardStockCount 为板块成分股/成分报价未指定 `count` 时默认拉取的条目总数上限。
	DefaultMACBoardStockCount uint32 = 10000
	// DefaultMACBoardStockPage 为板块成分股/成分报价单页默认条数(`pageSize` 默认值)。
	DefaultMACBoardStockPage uint8 = 80
	// DefaultMACSymbolBarsCount 为 MAC 证券 K 线参考默认请求条数;当前自动分页按 `DefaultMACSymbolBarsPage` 逐页拉取。
	DefaultMACSymbolBarsCount uint32 = 800
	// DefaultMACSymbolBarsPage 为 MAC 证券 K 线自动分页的单页默认条数。
	DefaultMACSymbolBarsPage uint16 = 700
	// DefaultMACTransactionsCount 为分时成交未指定 `count` 时默认拉取的成交记录上限。
	DefaultMACTransactionsCount uint32 = 1000
	// DefaultMACTransactionsPage 为分时成交自动分页的单页默认条数。
	DefaultMACTransactionsPage uint16 = 1000
	// DefaultMACAuctionCount 为竞价数据未指定 `count` 时默认拉取的竞价记录上限。
	DefaultMACAuctionCount uint32 = 500
	// DefaultMACAuctionPage 为竞价数据自动分页的单页默认条数。
	DefaultMACAuctionPage uint32 = 500
	// DefaultMACMarketMonitorCount 为市场监控未指定 `count` 时默认拉取的异动记录上限。
	DefaultMACMarketMonitorCount uint32 = 600
	// DefaultMACMarketMonitorPage 为市场监控自动分页的单页默认条数。
	DefaultMACMarketMonitorPage uint16 = 600
	// DefaultMACKLineOffsetCount 为偏移 K 线查询未指定 `count` 时使用的默认条数。
	DefaultMACKLineOffsetCount uint32 = 128000
)

以下常量定义 MAC 协议各查询的默认获取条数与分页大小:`Count` 类常量为调用方未指定获取总数时 使用的默认上限,`Page` 类常量为自动分页时单页默认条数。

View Source
const (
	// DefaultICFQSAddress 为 `NewICFQS` 使用的默认固定入口地址,格式为 `host:port`。
	DefaultICFQSAddress = "121.37.193.4:7615"
	// DefaultICFQSHotAddress 为 `NewICFQSHot` 使用的热门话题站点域名,格式为 `host:port`。
	DefaultICFQSHotAddress = "hot.icfqs.com:7615"
)

ICFQS TQLEX 服务默认地址常量。

Variables

View Source
var ErrCircuitOpen = errors.New("circuit open")

ErrCircuitOpen 表示请求被熔断拒绝:冷却期内 `execute` 直接快速失败返回该错误, 不再发起网络请求;熔断恢复后自动回到正常路径。能力层可据此降级展示。

View Source
var ErrMarketCodeCount = errors.New("market code count error")

ErrMarketCodeCount 表示批量请求时传入的市场(或分类)列表与证券代码列表长度不一致,由 `makeStocks`、`makeExStocks` 在配对前校验长度时返回。

View Source
var ErrNoReachableHosts = errors.New("no reachable hosts")

ErrNoReachableHosts 表示本次探测的所有主机 TCP 拨号均失败,没有任何可达节点; 由 `FastestHost`、`FastestAddress` 在筛选最快主机时返回。

Functions

func BrokerHostAddresses

func BrokerHostAddresses() []string

BrokerHostAddresses 返回内置券商服务器的 `host:port` 地址列表副本;列表顺序与 `BrokerHosts` 一致,返回切片可由调用方自由修改。

func DefaultMACBoardMembersQuotesFieldBitmap

func DefaultMACBoardMembersQuotesFieldBitmap() [20]byte

DefaultMACBoardMembersQuotesFieldBitmap 返回成分股动态字段报价接口使用的默认字段位图。

该函数无参数;返回固定的 20 字节字面量,置 1 的位对应默认启用的动态字段,不返回错误。 调用方可在此基础上按需增删字段位。

func DefaultMACSymbolQuotesFieldBitmap

func DefaultMACSymbolQuotesFieldBitmap() [20]byte

DefaultMACSymbolQuotesFieldBitmap 返回个股批量报价接口使用的默认字段位图。该函数无参数, 返回与成分股报价一致的默认位图副本,不返回错误。

func ExHostAddresses

func ExHostAddresses() []string

ExHostAddresses 返回内置扩展行情服务器的 `host:port` 地址列表副本;列表顺序与 `ExHosts` 一致,返回切片可由调用方自由修改。

func FullMACBoardMembersQuotesFieldBitmap

func FullMACBoardMembersQuotesFieldBitmap() [20]byte

FullMACBoardMembersQuotesFieldBitmap 返回 20 字节全部置 1 的全字段位图,适合实验性 全字段请求。该函数无参数,返回独立位图副本,不返回错误。

func FullMACSymbolQuotesFieldBitmap

func FullMACSymbolQuotesFieldBitmap() [20]byte

FullMACSymbolQuotesFieldBitmap 返回个股批量报价接口使用的全字段位图。该函数无参数, 返回全部位置 1 的独立位图副本,不返回错误。

func ICFQSHostAddresses

func ICFQSHostAddresses() []string

ICFQSHostAddresses 返回内置 ICFQS 资讯行情服务器的 `host:port` 地址列表副本;列表顺序与 `ICFQSHosts` 一致,返回切片可由调用方自由修改。

func MACBoardMembersQuotesFieldBitmapFromBits

func MACBoardMembersQuotesFieldBitmapFromBits(bits ...int) [20]byte

MACBoardMembersQuotesFieldBitmapFromBits 按传入的位号列表组装 20 字节字段位图。

参数 `bits` 为可变长位号列表,有效取值 0–159,对应 20 字节位图的各个二进制位;负数或超出 0–159 范围的位号会被忽略,不会产生越界写入。返回组装完成的独立位图副本,不返回错误。

func MACBoardMembersQuotesRequestBitmap

func MACBoardMembersQuotesRequestBitmap(fieldBitmap [20]byte, filters ...MACFilterType) [20]byte

MACBoardMembersQuotesRequestBitmap 在动态字段位图基础上拼装成分股动态字段请求位图: 第 17 字节写入合并后的排除条件掩码,第 19 字节置扩展控制位,其余字段位保持不变。

参数 `fieldBitmap` 为 20 字节动态字段位图;参数 `filters` 为可变长排除条件,可传零个或多个。 入参位图按值复制后修改,不会影响调用方传入的原位图;返回拼装完成的独立位图副本,不返回错误。

func MACExHostAddresses

func MACExHostAddresses() []string

MACExHostAddresses 返回内置 MAC 扩展行情服务器的 `host:port` 地址列表副本;列表顺序与 `MACExHosts` 一致,返回切片可由调用方自由修改。

func MACFieldBitmap

func MACFieldBitmap(selectors ...MACFieldSelector) [20]byte

MACFieldBitmap 根据传入的字段位与预设组合构造 20 字节 MAC 动态字段位图。

参数 `selectors` 为可变长选择项,可传入单个字段位(`MACFieldBit`)或字段预设(`MACPresetField`), 按传入顺序依次叠加置位;值为 `nil` 的选择项会被跳过。返回独立的 20 字节位图副本,置 1 的位 对应请求启用的动态字段,调用方可自由修改;函数不持有共享状态,可并发调用,不返回错误。

func MACFilterFlags

func MACFilterFlags(filters ...MACFilterType) uint8

MACFilterFlags 将多个排除条件合并为一个协议位图字节。

参数 `filters` 为可变长排除条件,可传入零个或多个 `MACFilter*` 条件;各条件本身即 2 的幂位掩码, 按位或叠加后得到可放入请求过滤字节的组合值。不传条件时返回 0(不排除任何标的);函数不返回错误。

func MACHostAddresses

func MACHostAddresses() []string

MACHostAddresses 返回内置 MAC 主行情服务器的 `host:port` 地址列表副本;列表顺序与 `MACHosts` 一致,返回切片可由调用方自由修改。

func MACSymbolQuotesFieldBitmapFromBits

func MACSymbolQuotesFieldBitmapFromBits(bits ...int) [20]byte

MACSymbolQuotesFieldBitmapFromBits 按传入的位号列表组装个股批量报价通用位图。

参数 `bits` 为可变长位号列表,有效取值 0–159,越界位号会被忽略;返回独立位图副本,不返回错误。

func MainHostAddresses

func MainHostAddresses() []string

MainHostAddresses 返回内置主行情服务器的 `host:port` 地址列表副本;列表顺序与 `MainHosts` 一致,返回切片可由调用方自由修改。

Types

type BlockFlatItem

type BlockFlatItem struct {
	BlockName string // 所属板块名称,9 字节槽位 GBK 解码后的 UTF-8 字符串,尾部空字节已剔除
	BlockType uint16 // 板块类型代码,2 字节原始值,取值对照 `types.BoardType*` 常量
	CodeIndex int    // 成分股在所属板块内的序号,从 0 开始递增
	Code      string // 成分股证券代码,7 字节槽位 GBK 解码后的字符串,尾部空字节已剔除
}

BlockFlatItem 表示板块文件中一只成分股的扁平记录,将所属板块名称、板块类型、板块内序号与 股票代码平铺为一条,便于按股票维度遍历成分股列表。

该结构体仅承载解析结果,由解析函数构造,调用方一般不需要直接设置字段零值。

func ParseBlockFlat

func ParseBlockFlat(data []byte) ([]BlockFlatItem, error)

ParseBlockFlat 解析板块文件二进制数据,将每个板块下的成分股逐条展开为扁平条目列表。

参数 `data` 为下载完成的板块文件完整字节内容,长度至少为 386 字节(384 字节固定文件头加 2 字节板块总数);函数不会保留对该切片的引用。文件采用 GBK 编码与定长成员区布局。

解析成功时返回扁平条目切片,错误返回 `nil`;输入长度不足、槽头或成员代码剩余字节不足时 返回错误,避免越界读取。

type BlockGroup

type BlockGroup struct {
	BlockName  string   // 板块名称,9 字节槽位 GBK 解码后的 UTF-8 字符串,尾部空字节已剔除
	BlockType  uint16   // 板块类型代码,2 字节原始值,取值对照 `types.BoardType*` 常量
	StockCount int      // 板块成员数量,来自槽头 2 字节成员数字段
	Codes      []string // 成员证券代码列表,每个为 7 字节 GBK 解码字符串;切片由解析函数分配并持有所有权
}

BlockGroup 表示按板块聚合后的一组成分股,记录板块名称、板块类型、成员数量与成员代码列表, 便于按板块维度查看该板块包含哪些股票。

该结构体仅承载解析结果,由解析函数构造,调用方一般不需要直接设置字段零值。

func ParseBlockGroups

func ParseBlockGroups(data []byte) ([]BlockGroup, error)

ParseBlockGroups 解析板块文件二进制数据,按板块分组返回成分股代码列表。

参数 `data` 为下载完成的板块文件完整字节内容,长度至少为 386 字节;文件布局与解析步骤同 `ParseBlockFlat`,区别在于成员代码聚合进对应 `BlockGroup`,而不是展开成扁平条目。

解析成功时返回板块分组切片,错误返回 `nil`;输入长度不足或槽头、成员代码剩余字节不足时 返回错误。

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client 是通达信行情协议客户端,封装 TCP 连接池、握手、协议收发以及主站、扩展站、MAC 站的高层接口。

Client 须由 `New`、`NewEx`、`NewMAC`、`NewMACEx` 构造,零值不可用;各方法可并发调用,请求 按轮询分散到池内各连接:连接之间并行、单连接上的请求由该连接内部串行化,调用方无需自行加锁。

func New

func New(opts ...Option) *Client

New 创建连接通达信主行情服务器的客户端。

参数 `opts` 为按顺序覆盖内置默认配置的函数式选项,后传入的选项优先生效;不传选项时使用内置 主站地址池、默认超时与重试次数。返回的 `Client` 零值不可用,须由 `New` 系列构造;其方法可 并发调用,同一连接上的请求由客户端内部串行化。

func NewEx

func NewEx(opts ...Option) *Client

NewEx 创建连接通达信扩展行情服务器(港股、美股、期货等)的客户端。

参数 `opts` 为按顺序覆盖内置默认配置的函数式选项,后传入的选项优先生效;不传选项时使用内置 扩展站地址池与默认超时。返回的 `Client` 零值不可用,方法可并发调用。

func NewMAC

func NewMAC(opts ...Option) *Client

NewMAC 创建连接 MAC 行情主站的客户端。

参数 `opts` 为按顺序覆盖内置默认配置的函数式选项,后传入的选项优先生效;不传选项时使用内置 MAC 主站地址池与默认超时。返回的 `Client` 零值不可用,方法可并发调用。

func NewMACEx

func NewMACEx(opts ...Option) *Client

NewMACEx 创建连接 MAC 扩展行情服务器的客户端。

参数 `opts` 为按顺序覆盖内置默认配置的函数式选项,后传入的选项优先生效;不传选项时使用内置 MAC 扩展站地址池与默认超时。返回的 `Client` 零值不可用,方法可并发调用。

func (*Client) Connect

func (client *Client) Connect() (*proto.Hello1Reply, error)

Connect 连接通达信主行情服务器并完成 `Hello1` 握手。

本方法无业务入参;按候选地址顺序逐个拨号,握手成功后返回主站握手应答 `*proto.Hello1Reply`;全部 候选地址拨号或握手失败时返回最后一次错误,应答为 `nil`。扩展站客户端会复用内嵌主站连接完成本次 握手。

func (*Client) ConnectEx

func (client *Client) ConnectEx() (*proto.ExLoginReply, error)

ConnectEx 连接扩展市场服务器并完成登录握手。

本方法无业务入参;按候选地址顺序逐个拨号,登录成功后返回扩展站登录应答 `*proto.ExLoginReply`; 全部候选地址拨号或登录失败时返回最后一次错误,应答为 `nil`。主站客户端会复用内嵌扩展站连接完成 本次登录。

func (*Client) ConnectMAC

func (client *Client) ConnectMAC() error

ConnectMAC 连接 MAC 行情主站。

本方法无业务入参;已建立连接池时直接复用现有池;方法加锁避免并发重复拨号。MAC 站无握手协议, 拨号即视为连接成功;全部候选地址拨号失败返回最后一次错误,成功返回 `nil`。

func (*Client) CurrentAddress

func (client *Client) CurrentAddress() string

CurrentAddress 返回当前池内首条连接实际连通的服务器 `host:port` 地址。

本方法无业务入参;客户端指针或内部选项为空时返回空字符串;已建立连接池时返回首条连接的 实际地址;池内无空闲连接(全部借出待归还)时返回最近一次入池连接的实际地址,未拨号时 返回配置的单点地址。

func (*Client) Disconnect

func (client *Client) Disconnect() error

Disconnect 关闭连接池与补建循环,并级联关闭关联的内嵌主站、扩展站连接。

本方法无业务入参;返回关闭过程中遇到的首个错误,后续内嵌连接的关闭错误不会覆盖先出现的错误; 已关闭的内嵌连接会跳过重复关闭。关闭后客户端不可再借出连接,需重新 `Connect` 建池。

func (*Client) DownloadFile

func (client *Client) DownloadFile(filename string, start uint32, size uint32) (*proto.DownloadFileReply, error)

DownloadFile 从 `start` 字节偏移下载 `size` 字节的主站文件片段,返回本次片段的原始字节与 实际返回长度。

`filename` 为远端文件名,内部按 300 字节定长编码、尾部补零;`start` 为分块起始偏移, 单位字节,0 表示从文件头开始;`size` 为本次请求字节数。服务端返回片段大小为 0 表示文件 已取完;连接或协议执行失败时返回错误。

func (*Client) DownloadFullFile

func (client *Client) DownloadFullFile(filename string, size uint32) ([]byte, error)

DownloadFullFile 按固定块大小循环下载完整文件。

参数 `filename` 为服务端协议文件名;参数 `size` 为目标总大小(字节),传 0 时先拉取文件元信息 中的大小作为下载上限,元信息获取失败则仅依靠空块结束循环。服务器返回空块,或已下载字节达到 `size` 时结束;返回拼接后的完整文件字节。任一协议请求失败即返回 `nil` 与该错误。

func (*Client) ExBoardList

func (client *Client) ExBoardList(boardType uint16, start uint16, pageSize uint16) ([]proto.ExBoardListItem, error)

ExBoardList 分页获取扩展市场板块列表。

参数 `boardType` 为板块类型代码,取值见 `types.ExBoardType*`;参数 `start` 为起始偏移序号,从 0 开始; 参数 `pageSize` 为本页条数,传 0 时由协议构造器使用默认值 300。返回本页板块条目列表,连接或协议 失败时返回 `nil` 与对应错误。

func (*Client) ExCategoryList

func (client *Client) ExCategoryList() ([]proto.ExCategoryItem, error)

ExCategoryList 获取扩展市场分类(港股、美股、期货等)列表,无业务入参;返回分类条目列表,连接或 协议失败时返回 `nil` 与对应错误。

func (*Client) ExChartSampling

func (client *Client) ExChartSampling(category uint8, code string) ([]float64, error)

ExChartSampling 获取扩展市场分时缩略采样价格序列,用于绘制行情缩略图。

参数 `category` 为扩展市场类别代码;参数 `code` 为扩展站证券代码。返回按时间顺序排列的采样价格 浮点序列,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ExCount

func (client *Client) ExCount() (uint32, error)

ExCount 获取扩展市场内的标的总数,无业务入参;返回服务端统计数量,连接或协议失败时返回 0 与 对应错误。

func (*Client) ExDownloadFile

func (client *Client) ExDownloadFile(filename string, start uint32, size uint32) (*proto.DownloadFileReply, error)

ExDownloadFile 从 `start` 字节偏移下载 `size` 字节的扩展市场文件片段,返回本次片段的数据 与实际返回字节数。

`filename` 为远端文件名,内部按 40 字节定长编码、尾部补零;`start` 为分块起始偏移, 单位字节,0 表示从文件头开始;`size` 为本次请求字节数。服务端返回片段大小为 0 表示 文件已取完;连接或协议执行失败时返回错误。

func (*Client) ExDownloadFullFile

func (client *Client) ExDownloadFullFile(filename string, size uint32) ([]byte, error)

ExDownloadFullFile 循环分块下载完整的扩展市场文件,返回拼接后的全部文件字节。

`filename` 为远端文件名;`size` 为期望下载总字节数,传 0 时先通过 `ExGetFileMeta` 获取 总大小;每块按 `types.DefaultDownloadSize` 字节请求,服务器返回空块或累计下载量达到 `size` 即结束。任一片段下载失败时整体返回错误。

func (*Client) ExExperiment2487

func (client *Client) ExExperiment2487(category uint8, code string) (*proto.ExExperiment2487Reply, error)

ExExperiment2487 获取试验协议 `0x2487` 的单品种行情原始响应。

参数 `category` 为扩展市场类别代码;参数 `code` 为扩展站证券代码。返回试验协议应答,连接或协议 失败时返回 `nil` 与对应错误;试验协议字段口径以服务端返回为准。

func (*Client) ExExperiment2488

func (client *Client) ExExperiment2488(category uint8, code string, mode uint16) ([]proto.ExExperiment2488Item, error)

ExExperiment2488 获取试验协议 `0x2488` 的数据记录。

参数 `category` 为扩展市场类别代码;参数 `code` 为扩展站证券代码;参数 `mode` 为协议模式编号,其 取值含义与响应各字段语义待确认。返回试验记录列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ExGetBoardList

func (client *Client) ExGetBoardList(boardType uint16, start uint16, pageSize uint16) (*proto.ExGetBoardListReply, error)

ExGetBoardList 按板块类型分页拉取扩展市场板块榜单,返回各板块行情条目。

`boardType` 为板块类型编号,取值由服务端分类约定;`start` 为起始偏移条数,从 0 开始 计数;`pageSize` 为每页条数,传 0 时由协议按默认值处理。连接或协议执行失败时返回错误。

func (*Client) ExGetCategoryList

func (client *Client) ExGetCategoryList() (*proto.ExGetCategoryListReply, error)

ExGetCategoryList 查询扩展市场的品种分类列表,返回各分类编号、名称与品种计数。

该请求不携带业务参数;连接或协议执行失败时返回错误。

func (*Client) ExGetChartSampling

func (client *Client) ExGetChartSampling(category uint8, code string) (*proto.ExGetChartSamplingReply, error)

ExGetChartSampling 查询扩展市场标的的分时缩略采样价格序列,返回服务端压缩后的采样价格点。

`category` 为扩展市场类别编号;`code` 为标的代码,内部按 22 字节定长编码、尾部补零。 连接或协议执行失败时返回错误。

func (*Client) ExGetCount

func (client *Client) ExGetCount() (*proto.ExGetCountReply, error)

ExGetCount 查询扩展市场内可交易标的的总数,返回应答中的 `Count` 即品种总数。

该请求不携带业务参数;连接或协议执行失败时返回错误。

func (*Client) ExGetExperiment2487

func (client *Client) ExGetExperiment2487(category uint8, code string) (*proto.ExExperiment2487Reply, error)

ExGetExperiment2487 调用扩展市场试验报价协议 `0x2487` 查询单个标的行情。

`category` 为扩展市场类别编号;`code` 为标的代码,内部按 23 字节定长编码、尾部补零。 协议部分字段语义待确认;连接或协议执行失败时返回错误。

func (*Client) ExGetExperiment2488

func (client *Client) ExGetExperiment2488(category uint8, code string, mode uint16) (*proto.ExExperiment2488Reply, error)

ExGetExperiment2488 调用扩展市场试验报价协议 `0x2488` 查询多组试验行情。

`category` 为扩展市场类别编号;`code` 为标的代码,内部按 23 字节定长编码、尾部补零; `mode` 为查询模式,取值口径语义待确认。协议部分字段语义待确认;连接或协议执行失败时 返回错误。

func (*Client) ExGetFileMeta

func (client *Client) ExGetFileMeta(filename string) (*proto.GetFileMetaReply, error)

ExGetFileMeta 查询扩展市场文件的元信息,返回文件大小、哈希校验值等字段。

`filename` 为远端文件名,内部按 40 字节定长编码、尾部补零。连接或协议执行失败时返回 错误。

func (*Client) ExGetHistoryTickChart

func (client *Client) ExGetHistoryTickChart(date uint32, category uint8, code string) (*proto.ExGetHistoryTickChartReply, error)

ExGetHistoryTickChart 查询指定交易日的扩展市场历史分时图,返回当日各分钟采样点与均价。

`date` 为交易日期,按 `YYYYMMDD` 八位正整数传入;`category` 为扩展市场类别编号; `code` 为标的代码,内部按 23 字节定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) ExGetHistoryTransaction

func (client *Client) ExGetHistoryTransaction(date uint32, category uint8, code string) (*proto.ExGetHistoryTransactionReply, error)

ExGetHistoryTransaction 查询指定交易日的扩展市场历史逐笔成交,返回按时间排列的成交条目。

`date` 为交易日期,按 `YYYYMMDD` 八位正整数传入;`category` 为扩展市场类别编号; `code` 为标的代码,内部按 43 字节定长编码、尾部补零。连接或协议执行失败时返回错误。

部分扩展站对较早日期数据不全时,执行层(`execute`)会自动换节点重试,本方法保持 单次执行语义不变。

func (*Client) ExGetKLine

func (client *Client) ExGetKLine(category uint8, code string, period uint16, start uint32, count uint16, times uint16) (*proto.ExGetKLineReply, error)

ExGetKLine 查询扩展市场标的 K 线序列,返回按时间顺序排列的开高低收、成交量与成交额条目。

`category` 为扩展市场类别编号;`code` 为标的代码,内部按 9 字节定长编码、尾部补零; `period` 为 K 线周期类别,取值由扩展服务端周期表约定;`start` 为起始偏移条数,0 表示 从最新一根向前取数;`count` 为请求条数;`times` 为周期倍数,传 0 时按 1 处理。连接或 协议执行失败时返回错误。

func (*Client) ExGetKLine2

func (client *Client) ExGetKLine2(category uint8, code string, period uint16, start uint32, count uint32, times uint16) (*proto.ExGetKLine2Reply, error)

ExGetKLine2 调用扩展市场 K 线协议 `0x2489` 查询 K 线序列,返回按时间顺序排列的开高低收、 成交量与成交额条目。

`category` 为扩展市场类别编号;`code` 为标的代码,内部按 23 字节定长编码、尾部补零; `period` 为 K 线周期类别,取值由扩展服务端周期表约定;`start` 为起始偏移条数,0 表示从最新 一根向前取数;`count` 为请求条数(`uint32`);`times` 为周期倍数,传 0 时按 1 处理。连接或 协议执行失败时返回错误。

func (*Client) ExGetList

func (client *Client) ExGetList(start uint32, count uint16) (*proto.ExGetListReply, error)

ExGetList 从 `start` 偏移开始拉取 `count` 条扩展市场标的列表,返回代码、名称等标的条目。

`start` 为起始偏移条数,从 0 开始计数;`count` 为请求条数,传 0 时使用默认条数 `types.DefaultExListCount`。连接或协议执行失败时返回错误。

func (*Client) ExGetListExtra

func (client *Client) ExGetListExtra(a uint16, b uint16, count uint16) (*proto.ExGetListExtraReply, error)

ExGetListExtra 调用扩展市场试验协议拉取标的列表。

参数 `a`、`b` 的具体含义语义待确认;`count` 为请求条数。连接或协议执行失败时返回错误。

func (*Client) ExGetMapping2562

func (client *Client) ExGetMapping2562(market uint16, start uint32, count uint32) (*proto.ExMapping2562Reply, error)

ExGetMapping2562 查询扩展市场代码映射表,返回分页后的代码映射条目。

`market` 为市场代码;`start` 为起始偏移条数,从 0 开始计数;`count` 为请求条数,传 0 时 由协议按默认 600 条处理。部分映射字段语义待确认;连接或协议执行失败时返回错误。

func (*Client) ExGetQuote

func (client *Client) ExGetQuote(category uint8, code string) (*proto.ExGetQuoteReply, error)

ExGetQuote 查询单个扩展市场标的的最新行情,返回该品种的行情快照条目。

`category` 为扩展市场类别编号(区别于主站市场代码);`code` 为标的代码,内部按 9 字节 定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) ExGetQuotes

func (client *Client) ExGetQuotes(categories []uint8, codes []string) (*proto.ExGetQuotesReply, error)

ExGetQuotes 批量查询扩展市场标的行情,返回各品种的行情快照条目。

`categories` 与 `codes` 等长,按下标一一配对;`categories` 元素为扩展市场类别编号, `codes` 元素为标的代码。两切片长度不一致时返回 `ErrMarketCodeCount`;连接或协议执行 失败时返回错误。

func (*Client) ExGetQuotes2

func (client *Client) ExGetQuotes2(categories []uint8, codes []string) (*proto.ExGetQuotesReply, error)

ExGetQuotes2 批量查询扩展市场行情,使用与 `pytdx2` 第二种批量接口对应的协议,返回各品种 行情快照条目。

`categories` 与 `codes` 等长,按下标一一配对;`categories` 元素为扩展市场类别编号, `codes` 元素为标的代码。两切片长度不一致时返回 `ErrMarketCodeCount`;连接或协议执行 失败时返回错误。

func (*Client) ExGetQuotesList

func (client *Client) ExGetQuotesList(category uint8, start uint16, count uint16, sortType uint16, reverse bool) (*proto.ExGetQuotesListReply, error)

ExGetQuotesList 按分类拉取排序后的扩展市场行情列表,返回排序后的品种行情快照条目。

`category` 为扩展市场品种分类编号;`start` 为起始偏移条数,从 0 开始计数;`count` 为 请求条数,传 0 时使用默认条数 `types.DefaultExQuotesCount`;`sortType` 为排序字段编号; `reverse` 为 `true` 时按降序排列、`false` 时按升序排列。连接或协议执行失败时返回错误。

func (*Client) ExGetTable

func (client *Client) ExGetTable() (string, error)

ExGetTable 分页拉取并拼接扩展市场普通表格文件的全部文本内容,返回合并后的完整文本。

该请求不携带业务参数;任一分块拉取失败时整体返回错误。

func (*Client) ExGetTableDetail

func (client *Client) ExGetTableDetail() (string, error)

ExGetTableDetail 分页拉取并拼接扩展市场详细表格文件的全部文本内容,返回合并后的完整文本。

该请求不携带业务参数;任一分块拉取失败时整体返回错误。

func (*Client) ExGetTickChart

func (client *Client) ExGetTickChart(category uint8, code string) (*proto.ExGetTickChartReply, error)

ExGetTickChart 查询扩展市场标的的当日分时图,返回各分钟的现价、均价与成交量采样点。

`category` 为扩展市场类别编号;`code` 为标的代码,内部按 23 字节定长编码、尾部补零。 连接或协议执行失败时返回错误。

func (*Client) ExHistoryTransaction

func (client *Client) ExHistoryTransaction(date uint32, category uint8, code string) ([]proto.ExHistoryTransactionItem, error)

ExHistoryTransaction 获取扩展市场指定日期的历史成交明细。

参数 `date` 为目标交易日,按 `YYYYMMDD` 打包成整数;参数 `category` 为扩展市场类别代码;参数 `code` 为扩展站证券代码。返回历史成交条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ExKLine

func (client *Client) ExKLine(category uint8, code string, period uint16, start uint32, count uint16, times uint16) ([]proto.ExKLineItem, error)

ExKLine 获取扩展市场证券 K 线数据。

参数 `category` 为扩展市场类别代码;参数 `code` 为扩展站证券代码;参数 `period` 为 K 线周期类别, 取值由服务端周期表约定;参数 `start` 为起始偏移条数,从 0 开始,0 表示从最新一根向前取数;参数 `count` 为请求 K 线条数;参数 `times` 为周期倍数,传 0 时按 1 处理。返回 K 线条目列表,连接或协议 失败时返回 `nil` 与对应错误。

func (*Client) ExKLine2

func (client *Client) ExKLine2(category uint8, code string, period uint16, start uint32, count uint32, times uint16) ([]proto.ExKLineItem, error)

ExKLine2 使用第二套 K 线协议获取扩展市场证券 K 线数据。

参数 `category` 为扩展市场类别代码;参数 `code` 为扩展站证券代码;参数 `period` 为 K 线周期类别; 参数 `start` 为起始偏移条数,从 0 开始;参数 `count` 为请求 K 线条数,传 0 时由协议构造器使用默认值 800;参数 `times` 为周期倍数,传 0 时按 1 处理。返回 K 线条目列表,连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) ExList

func (client *Client) ExList(start uint32, count uint16) ([]proto.ExListItem, error)

ExList 分页获取扩展市场证券列表。

参数 `start` 为起始偏移序号,从 0 开始;参数 `count` 为本页请求条数。返回本页证券条目列表,连接或 协议失败时返回 `nil` 与对应错误。

func (*Client) ExListExtra

func (client *Client) ExListExtra(a uint16, b uint16, count uint16) ([]proto.ExExtraListItem, error)

ExListExtra 获取扩展市场附加列表记录。

参数 `count` 为本页请求条数;参数 `a`、`b` 为协议附加定位参数,其确切语义待确认。返回附加列表 条目,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ExMapping2562

func (client *Client) ExMapping2562(market uint16, start uint32, count uint32) ([]proto.ExMapping2562Item, error)

ExMapping2562 获取试验协议 `0x2562` 的映射记录。

参数 `market` 为市场代码;参数 `start` 为起始偏移序号,从 0 开始;参数 `count` 为请求条数,传 0 时 由协议构造器使用默认值 600。响应除名称与序号外多数字段含义语义待确认;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ExQuote

func (client *Client) ExQuote(category uint8, code string) (*proto.ExQuoteItem, error)

ExQuote 获取单只扩展证券的行情报价。

参数 `category` 为扩展市场类别代码,取值见 `types.ExMarket*` 与 `types.ExCategory*`;参数 `code` 为 扩展站证券代码。返回报价条目指针,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ExQuotes

func (client *Client) ExQuotes(categories []uint8, codes []string) ([]proto.ExQuoteItem, error)

ExQuotes 批量获取扩展市场行情报价。

参数 `categories` 为扩展市场类别序列,取值见 `types.ExMarket*` 与 `types.ExCategory*`;参数 `codes` 为证券代码序列,与 `categories` 按下标一一对应,较短列表作为配对上限。返回批量报价条目列表,连接 或协议失败时返回 `nil` 与对应错误。

func (*Client) ExQuotes2

func (client *Client) ExQuotes2(categories []uint8, codes []string) ([]proto.ExQuoteItem, error)

ExQuotes2 使用第二套批量报价协议获取扩展市场行情报价。

参数 `categories` 为扩展市场类别序列;参数 `codes` 为证券代码序列,与 `categories` 按下标一一对应。 返回批量报价条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ExQuotesList

func (client *Client) ExQuotesList(category uint8, start uint16, count uint16, sortType uint16, reverse bool) ([]proto.ExQuoteItem, error)

ExQuotesList 分页获取扩展市场排序行情列表。

参数 `category` 为扩展市场类别代码,取值见 `types.ExMarket*` 与 `types.ExCategory*`;参数 `start` 为 起始偏移序号,从 0 开始;参数 `count` 为本页请求条数;参数 `sortType` 为排序字段编号;参数 `reverse` 为 `true` 表示降序、`false` 表示升序。返回排序后的报价条目列表,连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) ExTable

func (client *Client) ExTable() (string, error)

ExTable 获取扩展市场表格文件的文本内容,无业务入参;返回解码后的表格文本,连接或协议失败时返回 空字符串与对应错误。

func (*Client) ExTableDetail

func (client *Client) ExTableDetail() (string, error)

ExTableDetail 获取扩展市场表格明细文件的文本内容,无业务入参;返回解码后的明细文本,连接或协议 失败时返回空字符串与对应错误。

func (*Client) ExTickChart

func (client *Client) ExTickChart(category uint8, code string, date uint32) ([]proto.ExTickChartData, error)

ExTickChart 获取扩展市场分时图。

参数 `category` 为扩展市场类别代码;参数 `code` 为扩展站证券代码;参数 `date` 为目标交易日,按 `YYYYMMDD` 打包,传 0 时取当日分时,否则走历史分时协议取指定日期。返回分时条目列表,连接或协议 失败时返回 `nil` 与对应错误。

func (*Client) FastestHost

func (client *Client) FastestHost() (HostProbeResult, error)

FastestHost 返回已配置地址中延迟最低且可达的一条探测结果。

本方法无业务入参;全部地址不可达,或客户端指针、内部选项为空时返回零值 `HostProbeResult` 与 `ErrNoReachableHosts` 错误;探测使用当前配置的连接超时。

func (*Client) GetAnnouncement

func (client *Client) GetAnnouncement() (*proto.AnnouncementReply, error)

GetAnnouncement 拉取行情服务商公告,返回标题、作者、正文与失效日期;公告无内容时应答中 `HasContent` 为 `false`。

该请求不携带业务参数;连接或协议执行失败时返回错误。

func (*Client) GetAuction

func (client *Client) GetAuction(market uint8, code string, start uint32, count uint32) (*proto.GetAuctionReply, error)

GetAuction 查询指定证券的集合竞价记录,返回竞价时间、价格与量能明细列表。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零;`start` 为起始偏移条数,从 0 开始计数;`count` 为请求明细条数, 传 0 时按默认 500 条处理。连接或协议执行失败时返回错误。

func (*Client) GetBlockFile

func (client *Client) GetBlockFile(filename string) ([]byte, error)

GetBlockFile 下载并返回指定板块文件的完整字节内容。

参数 `filename` 为服务端板块文件名;先取文件元信息获得大小,再按块下载。元信息获取失败或分块 下载失败时返回 `nil` 与对应错误。

func (*Client) GetCSVFile

func (client *Client) GetCSVFile(filename string) ([][]string, error)

GetCSVFile 下载并解析指定 CSV 文件,返回二维字符串表格;每行允许字段数不一致。

参数 `filename` 为服务端 CSV 文件名;下载或解析失败时返回 `nil` 与对应错误。

func (*Client) GetChartSampling

func (client *Client) GetChartSampling(market uint8, code string) (*proto.GetChartSamplingReply, error)

GetChartSampling 查询指定证券的分时缩略采样价格序列,返回服务端压缩后的采样价格点。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) GetClient26AC

func (client *Client) GetClient26AC() (*proto.RawDataReply, error)

GetClient26AC 发送客户端信息协议 `0x26ac`,返回未做字段解析的原始响应; 该协议语义待确认,仅用于协议探测。

func (*Client) GetClient26AD

func (client *Client) GetClient26AD() (*proto.RawDataReply, error)

GetClient26AD 发送客户端信息协议 `0x26ad`,返回未做字段解析的原始响应; 该协议语义待确认,仅用于协议探测。

func (*Client) GetClient26AE

func (client *Client) GetClient26AE() (*proto.RawDataReply, error)

GetClient26AE 发送客户端信息协议 `0x26ae`,返回未做字段解析的原始响应; 该协议语义待确认,仅用于协议探测。

func (*Client) GetClient26B1

func (client *Client) GetClient26B1() (*proto.RawDataReply, error)

GetClient26B1 发送客户端信息协议 `0x26b1`,返回未做字段解析的原始响应; 该协议语义待确认,仅用于协议探测。

func (*Client) GetClient264B

func (client *Client) GetClient264B() (*proto.RawDataReply, error)

GetClient264B 发送客户端信息协议 `0x264b`,返回未做字段解析的原始响应; 该协议语义待确认,仅用于协议探测。

func (*Client) GetCompanyCategories

func (client *Client) GetCompanyCategories(market uint8, code string) (*proto.GetCompanyCategoryReply, error)

GetCompanyCategories 查询指定证券的 F10 公司信息章节目录,返回各章节的名称、对应文件名、 文件内起始偏移与正文长度。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零。返回目录条目的 `Filename`、`Start`、`Length` 必须原样传给 `GetCompanyContent` 逐章拉取正文;连接或协议执行失败时返回错误。

func (*Client) GetCompanyContent

func (client *Client) GetCompanyContent(market uint8, code string, filename string, start uint32, length uint32) (*proto.GetCompanyContentReply, error)

GetCompanyContent 按目录条目拉取指定证券的 F10 章节正文,返回该区间的解码文本与实际长度。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零;`filename`、`start`、`length` 必须取自 `GetCompanyCategories` 返回的 目录条目,`filename` 内部按 80 字节定长编码、尾部补零,`start` 为文件内起始偏移(字节), `length` 为本次请求的正文字节数。连接或协议执行失败时返回错误。

func (*Client) GetCompanyInfo

func (client *Client) GetCompanyInfo(market uint8, code string) (*CompanyInfoBundle, error)

GetCompanyInfo 聚合获取指定证券的公司信息,包含 F10 章节、除权除息记录与财务信息。

参数 `market` 为市场代码,取值见 `types.Market*` 常量;参数 `code` 为六位证券代码。先按目录逐项 拉取章节正文,任一章节拉取失败即作为硬性错误直接返回;除权除息与财务信息为尽力而为,拉取失败时 保留已取到的章节,对应字段保持 `nil` 或空切片。

func (*Client) GetExServerInfo

func (client *Client) GetExServerInfo() (*proto.ExServerInfoReply, error)

GetExServerInfo 拉取扩展行情服务器信息,返回扩展站服务端标识与状态字段。

该请求不携带业务参数;扩展站未连接、协议收发或响应解析失败时返回错误。

func (*Client) GetExchangeAnnouncement

func (client *Client) GetExchangeAnnouncement() (*proto.ExchangeAnnouncementReply, error)

GetExchangeAnnouncement 拉取交易所公告内容,返回公告版本号与已解码的公告正文。

该请求不携带业务参数;连接未建立、协议收发或响应负载为空时返回错误。

func (*Client) GetFileMeta

func (client *Client) GetFileMeta(filename string) (*proto.GetFileMetaReply, error)

GetFileMeta 查询主站文件的元信息,返回文件大小、哈希校验值等字段;部分未确认字段保留 原始数值。

`filename` 为远端文件名,内部按 40 字节定长编码、尾部补零。连接或协议执行失败时返回 错误。

func (*Client) GetFinanceInfo

func (client *Client) GetFinanceInfo(market uint8, code string) (*proto.GetFinanceInfoReply, error)

GetFinanceInfo 查询指定证券的财务概况,返回流通股本、省份、行业、每股指标、资产负债与 利润等字段。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) GetGroupedBlockFile

func (client *Client) GetGroupedBlockFile(filename string) ([]BlockGroup, error)

GetGroupedBlockFile 下载指定板块文件并按板块分组解析为成分股代码列表。

参数 `filename` 为服务端板块文件名;先通过 `GetBlockFile` 下载完整文件内容,再交给 `ParseBlockGroups` 解析。下载失败时直接返回底层错误;文件内容不合法时返回解析错误;解析成功 返回板块分组切片,错误为 `nil`。

func (*Client) GetHistoryMinuteTimeData

func (client *Client) GetHistoryMinuteTimeData(date uint32, market uint8, code string) (*proto.GetHistoryMinuteTimeDataReply, error)

GetHistoryMinuteTimeData 查询指定交易日的历史分时图数据,内部委托 `GetHistoryTickChart` 实现。

`date` 为交易日期,按 `YYYYMMDD` 八位正整数传入(如 `20240102`);`market` 为市场代码 (取值见 `types.Market*` 常量);`code` 为证券代码。连接或协议执行失败时返回错误。

func (*Client) GetHistoryOrders

func (client *Client) GetHistoryOrders(date uint32, market uint8, code string) (*proto.GetHistoryOrdersReply, error)

GetHistoryOrders 查询指定交易日的历史委托档位记录,返回档位价格与挂单量列表。

`date` 为交易日期,按 `YYYYMMDD` 八位正整数传入;`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节定长编码、尾部补零。连接或 协议执行失败时返回错误。

func (*Client) GetHistoryTickChart

func (client *Client) GetHistoryTickChart(date uint32, market uint8, code string) (*proto.GetHistoryMinuteTimeDataReply, error)

GetHistoryTickChart 查询指定交易日的历史分时图数据,返回当日分时价格、均价与成交量采样点。

`date` 为交易日期,按 `YYYYMMDD` 八位正整数传入;`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节定长编码、尾部补零。连接或 协议执行失败时返回错误。

func (*Client) GetHistoryTransactionData

func (client *Client) GetHistoryTransactionData(date uint32, market uint8, code string, start uint16, count uint16) (*proto.GetHistoryTransactionDataReply, error)

GetHistoryTransactionData 查询指定交易日的历史分时逐笔成交,返回按时间排列的成交记录。

`date` 为交易日期,按 `YYYYMMDD` 八位正整数传入;`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节定长编码、尾部补零;`start` 为 起始偏移条数,从 0 开始计数;`count` 为请求条数。连接或协议执行失败时返回错误。

func (*Client) GetHistoryTransactionDataWithTrans

func (client *Client) GetHistoryTransactionDataWithTrans(date uint32, market uint8, code string, start uint16, count uint16) (*proto.GetHistoryTransactionDataWithTransReply, error)

GetHistoryTransactionDataWithTrans 查询带买卖方向标识的历史分时逐笔成交,每条记录额外 携带主动买、主动卖或中性方向编码。

`date` 为交易日期,按 `YYYYMMDD` 八位正整数传入;`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节定长编码、尾部补零;`start` 为 起始偏移条数,从 0 开始计数;`count` 为请求条数。连接或协议执行失败时返回错误。

func (*Client) GetIndexBars

func (client *Client) GetIndexBars(category uint16, market uint8, code string, start uint16, count uint16) (*proto.GetIndexBarsReply, error)

GetIndexBars 查询指数 K 线序列,固定周期倍数为 1、不复权。

`category` 为 K 线周期类型,取值 `types.KLINE_TYPE_*` 常量;`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为指数代码,内部按 6 字节定长编码、尾部补零;`start` 为 起始偏移条数,从 0 开始计数;`count` 为请求条数。连接或协议执行失败时返回错误。

func (*Client) GetIndexInfo

func (client *Client) GetIndexInfo(market uint8, code string) (*proto.GetIndexInfoReply, error)

GetIndexInfo 查询指定指数的实时概况,返回点位、涨跌、成交及上涨下跌家数与档位分布。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为指数代码,内部按 6 字节 定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) GetIndexMomentum

func (client *Client) GetIndexMomentum(market uint8, code string) (*proto.GetIndexMomentumReply, error)

GetIndexMomentum 查询指定指数的动量数据,返回累计动量值序列。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为指数代码,内部按 6 字节 定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) GetKLine

func (client *Client) GetKLine(category uint16, market uint8, code string, start uint16, count uint16, times uint16, adjust uint16) (*proto.GetSecurityBarsReply, error)

GetKLine 查询证券 K 线序列,返回按周期从早到晚排列的开高低收、成交量、成交额与时间条目。

`category` 为 K 线周期类型,取值 `types.KLINE_TYPE_*` 常量(如 `types.KLINE_TYPE_DAILY` 日 K、`types.KLINE_TYPE_5MIN` 五分钟 K);`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节定长编码、尾部补零;`start` 为起始偏移条数, 从 0 开始计数;`count` 为请求条数;`times` 为周期倍数,通常取 1;`adjust` 为复权方式, 取值 `types.AdjustNone`(0,不复权)、`types.AdjustQFQ`(1,前复权)、`types.AdjustHFQ` (2,后复权)。连接或协议执行失败时返回错误。

func (*Client) GetMACAuction

func (client *Client) GetMACAuction(market uint8, code string, start uint32, count uint32) (*proto.MACAuctionReply, error)

GetMACAuction 获取 MAC 集合竞价数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始竞价 记录序号(分页偏移),从 0 开始;参数 `count` 为请求条数。返回竞价快照应答;协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACBoardCount

func (client *Client) GetMACBoardCount(boardType uint16) (*proto.MACBoardCountReply, error)

GetMACBoardCount 查询指定类型板块的总数(底层协议接口)。

参数 `boardType` 为板块类型代码,取值见 `types.BoardType*` 常量;返回板块总数应答。连接或协议 收发、解析失败时返回 `nil` 与对应错误。

func (*Client) GetMACBoardList

func (client *Client) GetMACBoardList(boardType uint16, start uint16, pageSize uint16) (*proto.MACBoardListReply, error)

GetMACBoardList 分页查询指定类型的板块列表(底层协议接口)。

参数 `boardType` 为板块类型代码,取值见 `types.BoardType*`;参数 `start` 为起始板块序号(分页偏移), 从 0 开始;参数 `pageSize` 为本页请求条数。返回本页板块列表应答;连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) GetMACBoardMembers

func (client *Client) GetMACBoardMembers(boardSymbol string, sortType uint16, start uint32, pageSize uint8, sortOrder uint16) (*proto.MACBoardMembersReply, error)

GetMACBoardMembers 分页查询指定板块的成分股列表(底层协议接口)。

参数 `boardSymbol` 为板块符号,内部经协议映射为板块代码;参数 `sortType` 为排序字段编号,取值见 根包 `MACSortType*` 常量;参数 `start` 为起始成分股序号(分页偏移),从 0 开始;参数 `pageSize` 为 本页条数;参数 `sortOrder` 为排序方向编号(1 降序、2 升序、0 不指定)。板块符号映射失败或协议 失败时返回 `nil` 与对应错误。

func (*Client) GetMACBoardMembersQuotes

func (client *Client) GetMACBoardMembersQuotes(boardSymbol string, sortType uint16, start uint32, pageSize uint8, sortOrder uint8) (*proto.MACBoardMembersQuotesReply, error)

GetMACBoardMembersQuotes 分页查询指定板块成分股的行情报价(底层协议接口)。

参数 `boardSymbol` 为板块符号,内部映射为板块代码;参数 `sortType` 为排序字段编号,取值见根包 `MACSortType*`;参数 `start` 为起始成分股序号(分页偏移),从 0 开始;参数 `pageSize` 为本页条数; 参数 `sortOrder` 为排序方向编号(1 降序、2 升序、0 不指定)。板块符号映射失败或协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACBoardMembersQuotesDynamic

func (client *Client) GetMACBoardMembersQuotesDynamic(boardSymbol string, sortType uint16, start uint32, pageSize uint8, sortOrder uint8, fieldBitmap [20]byte) (*proto.MACBoardMembersQuotesDynamicReply, error)

GetMACBoardMembersQuotesDynamic 获取按位图动态解析的 MAC 板块成分报价。

参数 `boardSymbol` 为板块符号,内部映射为板块代码;`sortType` 为排序字段编号(见根包 `MACSortType*`);`start` 为起始成分股序号,从 0 开始;`pageSize` 为本页条数;`sortOrder` 为排序 方向编号(1 降序、2 升序、0 不指定);`fieldBitmap` 为 20 字节(160 位)字段位图,声明本次返回 哪些动态行情字段,传全零时使用内置默认位图。过滤条件固定为 0(不排除)。板块符号映射失败或协议 失败时返回 `nil` 与对应错误。

func (*Client) GetMACBoardMembersQuotesDynamicWithFilter

func (client *Client) GetMACBoardMembersQuotesDynamicWithFilter(boardSymbol string, sortType uint16, start uint32, pageSize uint8, sortOrder uint8, fieldBitmap [20]byte, filter uint8) (*proto.MACBoardMembersQuotesDynamicReply, error)

GetMACBoardMembersQuotesDynamicWithFilter 获取按位图动态解析的 MAC 板块成分报价,并设置排除过滤位。

除 `filter` 外其余参数语义同 `GetMACBoardMembersQuotesDynamic`;参数 `filter` 为排除过滤位组合, 0 表示不排除,各过滤位编号见根包 `MACFilterType`。板块符号映射失败或协议失败时返回 `nil` 与 对应错误。

func (*Client) GetMACCapitalFlow

func (client *Client) GetMACCapitalFlow(market uint8, code string) (*proto.MACCapitalFlowReply, error)

GetMACCapitalFlow 获取 MAC 个股资金流向(当日与五日资金指标)。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。返回资金流向应答;协议 失败时返回 `nil` 与对应错误。

func (*Client) GetMACFileDownload

func (client *Client) GetMACFileDownload(filename string, index uint32, offset uint32, size uint32) (*proto.MACFileDownloadReply, error)

GetMACFileDownload 下载 MAC 文件片段。

参数 `filename` 为协议文件名,内部按定长 70 字节字段填充;参数 `index` 为分片序号,协议从 1 开始; 参数 `offset` 为本片段字节偏移;参数 `size` 为本片段请求字节数,传 0 时由协议构造器使用默认大小。 返回分片序号、本分片大小与文件原始字节;协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACFileList

func (client *Client) GetMACFileList(filename string, offset uint32) (*proto.MACFileListReply, error)

GetMACFileList 获取 MAC 文件列表/元信息(大小、状态标志与哈希)。

参数 `filename` 为协议文件名,内部按定长 70 字节字段填充;参数 `offset` 为协议起始偏移,口径 语义待确认。返回文件元信息应答;协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACKLineOffset

func (client *Client) GetMACKLineOffset(offset uint32, count uint32) (*proto.MACKLineOffsetReply, error)

GetMACKLineOffset 获取 MAC K 线偏移信息(K 线总数与本次返回条数)。

参数 `offset` 为起始 K 线条数偏移,从 0 开始;参数 `count` 为期望查询条数,传 0 时由协议构造器 使用默认值 128000。返回偏移信息应答;协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACMarketMonitor

func (client *Client) GetMACMarketMonitor(market uint8, start uint16, count uint16) (*proto.MACMarketMonitorReply, error)

GetMACMarketMonitor 获取 MAC 市场监控(异动)数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `start` 为起始记录序号(分页偏移),从 0 开始;参数 `count` 为请求异动条数。返回异动记录应答;协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACQuotes

func (client *Client) GetMACQuotes(market uint8, code string) (*proto.MACQuotesReply, error)

GetMACQuotes 获取 MAC 单只标的最新交易日的快照与分时采样。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。等价于 `GetMACQuotesWithDate(market, code, 0)`,即查询最新交易日;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACQuotesWithDate

func (client *Client) GetMACQuotesWithDate(market uint8, code string, queryDate uint32) (*proto.MACQuotesReply, error)

GetMACQuotesWithDate 获取 MAC 单只标的快照与分时采样,并可指定查询日期。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `queryDate` 为查询 交易日,按 `YYYYMMDD` 打包成整数,传 0 表示取最新交易日。返回快照与分时采样应答;协议失败时 返回 `nil` 与对应错误。

func (*Client) GetMACServerInfo

func (client *Client) GetMACServerInfo() (*proto.MACServerInfoReply, error)

GetMACServerInfo 获取 MAC 服务端交易日时段与状态信息,无业务入参;返回服务端状态应答,协议 失败时返回 `nil` 与对应错误。

func (*Client) GetMACSymbolBars

func (client *Client) GetMACSymbolBars(market uint8, code string, period uint16, times uint16, start uint32, count uint16, adjust uint16) (*proto.MACSymbolBarsReply, error)

GetMACSymbolBars 查询 MAC 证券 K 线数据(底层协议接口)。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `period` 为 K 线周期 类别,取值见 `types.KLINE_TYPE_*`;参数 `times` 为周期倍数,传 0 时按 1 处理;参数 `start` 为起始 偏移条数,从 0 开始;参数 `count` 为请求条数;参数 `adjust` 为复权方式,取值为 `types.AdjustNone`、 `types.AdjustQFQ`、`types.AdjustHFQ`。返回 K 线应答;协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACSymbolBelongBoard

func (client *Client) GetMACSymbolBelongBoard(market uint8, symbol string) (*proto.MACSymbolBelongBoardReply, error)

GetMACSymbolBelongBoard 查询指定证券所属的板块列表(底层协议接口)。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `symbol` 为证券代码。返回所属板块条目应答; 协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACSymbolInfo

func (client *Client) GetMACSymbolInfo(market uint8, code string) (*proto.MACSymbolInfoReply, error)

GetMACSymbolInfo 获取 MAC 个股摘要(名称、价格、股本等静态与快照字段)。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。返回个股摘要应答;协议 失败时返回 `nil` 与对应错误。

func (*Client) GetMACSymbolQuotes

func (client *Client) GetMACSymbolQuotes(markets []uint8, codes []string, fieldBitmap [20]byte) (*proto.MACSymbolQuotesReply, error)

GetMACSymbolQuotes 获取 MAC 按位图批量股票报价。

参数 `markets` 为市场代码序列,取值见 `types.Market*`;参数 `codes` 为证券代码序列,与 `markets` 按下标一一对应;参数 `fieldBitmap` 为 20 字节(160 位)字段位图,声明每只标的返回哪些动态字段, 传全零时使用内置默认位图。两个列表长度不一致时返回 `ErrMarketCodeCount` 错误;连接或协议失败时 返回 `nil` 与对应错误。

func (*Client) GetMACTickCharts

func (client *Client) GetMACTickCharts(market uint8, code string, queryDate uint32, days uint16) (*proto.MACTickChartsReply, error)

GetMACTickCharts 获取 MAC 多日分时数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `queryDate` 为查询 基准交易日,按 `YYYYMMDD` 打包成整数,传 0 表示取最新交易日;参数 `days` 为需要返回的交易日天数, 从基准日向前取数,传 0 时由协议构造器使用默认值 5,服务端返回的多余交易日会按该值裁剪。返回 `*proto.MACTickChartsReply`,内含标的标识、交易日计数、逐日分时序列与汇总行情;连接或协议收发、 解析失败时返回 `nil` 与对应错误。

func (*Client) GetMACTransactions

func (client *Client) GetMACTransactions(market uint8, code string, start uint32, count uint16) (*proto.MACTransactionsReply, error)

GetMACTransactions 获取 MAC 最新交易日的分时成交明细。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始成交 序号(分页偏移),从 0 开始;参数 `count` 为请求成交条数。等价于 `GetMACTransactionsWithDate(market, code, start, count, 0)`,即查询最新交易日;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) GetMACTransactionsWithDate

func (client *Client) GetMACTransactionsWithDate(market uint8, code string, start uint32, count uint16, queryDate uint32) (*proto.MACTransactionsReply, error)

GetMACTransactionsWithDate 获取 MAC 分时成交,并可指定查询日期。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `queryDate` 为查询 交易日,按 `YYYYMMDD` 打包,传 0 表示最新交易日;参数 `start` 为起始成交序号(分页偏移),从 0 开始;参数 `count` 为请求成交条数。返回成交明细应答;协议失败时返回 `nil` 与对应错误。

func (*Client) GetMinuteTimeData

func (client *Client) GetMinuteTimeData(market uint8, code string) (*proto.GetMinuteTimeDataReply, error)

GetMinuteTimeData 查询当日分时图数据,从第 0 点开始按默认条数 `types.DefaultTickChartCount` 拉取。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零。返回应答中的 `List` 为当日分时价格、均价与成交量采样点;连接或 协议执行失败时返回错误。

func (*Client) GetParsedBlockFile

func (client *Client) GetParsedBlockFile(filename string) ([]BlockFlatItem, error)

GetParsedBlockFile 下载指定板块文件并解析为扁平成分股条目列表。

参数 `filename` 为服务端板块文件名;先通过 `GetBlockFile` 下载完整文件内容,再交给 `ParseBlockFlat` 解析。下载失败时直接返回底层错误;文件内容不合法时返回解析错误;解析成功 返回扁平条目切片,错误为 `nil`。

func (*Client) GetQuotes

func (client *Client) GetQuotes(markets []uint8, codes []string) (*proto.GetQuotesReply, error)

GetQuotes 批量查询证券行情快照,返回每只证券的最新行情条目。

`markets` 与 `codes` 等长,按下标一一配对;`markets` 元素为市场代码(取值见 `types.Market*` 常量),`codes` 元素为证券代码。两切片长度不一致时返回 `ErrMarketCodeCount`;连接或协议执行失败时返回错误。

func (*Client) GetQuotesDetail

func (client *Client) GetQuotesDetail(markets []uint8, codes []string) (*proto.GetSecurityQuotesReply, error)

GetQuotesDetail 批量查询详细行情报价,返回每只证券的最新价、开盘价、最高价、最低价、 成交量、成交额与换手率等盘口字段。

`markets` 与 `codes` 等长,按下标一一配对;`markets` 元素为市场代码(取值见 `types.Market*` 常量),`codes` 元素为证券代码。两切片长度不一致时返回 `ErrMarketCodeCount`;连接或协议执行失败时返回错误。

func (*Client) GetQuotesEncrypt

func (client *Client) GetQuotesEncrypt(markets []uint8, codes []string) (*proto.GetQuotesEncryptReply, error)

GetQuotesEncrypt 批量查询加密通道行情快照,返回加密协议解析后的每只证券行情条目。

`markets` 与 `codes` 等长,按下标一一配对;`markets` 元素为市场代码(取值见 `types.Market*` 常量),`codes` 元素为证券代码。两切片长度不一致时返回 `ErrMarketCodeCount`;连接或协议执行失败时返回错误。

func (*Client) GetQuotesList

func (client *Client) GetQuotesList(category uint8, start uint16, count uint16, sortType uint16, reverse bool, filter uint16) (*proto.GetQuotesListReply, error)

GetQuotesList 按分类拉取排序后的行情快照列表,返回排序后的证券快照条目。

`category` 为板块或市场分类编号;`start` 为起始偏移条数,从 0 开始按页递增;`count` 为请求条数;`sortType` 为排序字段,取值 `types.Sort*` 常量;`reverse` 为 `true` 时按降序 排列、`false` 时按升序排列(按代码排序时不区分升降序);`filter` 为可按位组合的筛选 条件,取值 `types.Filter*` 常量。连接或协议执行失败时返回错误。

func (*Client) GetSecurityBars

func (client *Client) GetSecurityBars(category uint16, market uint8, code string, start uint16, count uint16) (*proto.GetSecurityBarsReply, error)

GetSecurityBars 查询股票 K 线,固定周期倍数为 1、不复权,返回开高低收、成交量、成交额与 时间条目。

`category` 为 K 线周期类型,取值 `types.KLINE_TYPE_*` 常量;`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节定长编码、尾部补零;`start` 为起始 偏移条数,从 0 开始计数;`count` 为请求条数。连接或协议执行失败时返回错误。

func (*Client) GetSecurityBarsOffset

func (client *Client) GetSecurityBarsOffset(category uint16, market uint8, code string, start uint16, count uint16, times uint16, adjust uint16) (*proto.GetSecurityBarsOffsetReply, error)

GetSecurityBarsOffset 使用偏移量协议查询证券 K 线,返回由独立偏移协议响应结构承载的 开高低收、成交量、成交额与时间条目。

`category` 为 K 线周期类型,取值 `types.KLINE_TYPE_*` 常量;`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节定长编码、尾部补零;`start` 为起始 偏移条数,从 0 开始计数;`count` 为请求条数;`times` 为周期倍数,通常取 1;`adjust` 为复权 方式,取值 `types.AdjustNone`、`types.AdjustQFQ`、`types.AdjustHFQ`。连接或协议执行失败时 返回错误。

func (*Client) GetSecurityCount

func (client *Client) GetSecurityCount(market uint8) (*proto.GetSecurityCountReply, error)

GetSecurityCount 查询指定市场内的证券总数,通常在分页拉取证券列表前调用以计算分页范围。

`market` 为市场代码,取值 `types.MarketSZ`(0,深圳)、`types.MarketSH`(1,上海)、 `types.MarketBJ`(2,北京)、`types.MarketHK`(3,香港)、`types.MarketUSA`(4,美国)。 返回应答中的 `Count` 即该市场证券总数;连接未建立、协议收发或响应解析失败时返回错误。

func (*Client) GetSecurityFeature452

func (client *Client) GetSecurityFeature452(start uint32, count uint32) (*proto.GetSecurityFeature452Reply, error)

GetSecurityFeature452 按 `start` 偏移与 `count` 条数批量获取证券扩展信息。

`start` 为起始偏移条数,从 0 开始计数;`count` 为请求条数。返回条目中 `P1`、`P2` 字段的具体业务含义语义待确认;连接或协议执行失败时返回错误。

func (*Client) GetSecurityList

func (client *Client) GetSecurityList(market uint8, start uint16) (*proto.GetSecurityListReply, error)

GetSecurityList 从 `start` 偏移开始,按默认条数 `types.DefaultSecurityListCount` 拉取指定市场内的证券代码与名称列表。

`market` 为市场代码(取值见 `types.Market*` 常量);`start` 为起始偏移条数,从 0 开始 计数。返回应答中的 `List` 为分页后的证券条目;连接或协议执行失败时返回错误。

func (*Client) GetSecurityListOld

func (client *Client) GetSecurityListOld(market uint8, start uint16) (*proto.GetSecurityListOldReply, error)

GetSecurityListOld 使用旧版协议从 `start` 偏移开始拉取指定市场内的证券代码与名称列表。

`market` 为市场代码(取值见 `types.Market*` 常量);`start` 为起始偏移条数,从 0 开始 计数。连接或协议执行失败时返回错误。

func (*Client) GetSecurityListRange

func (client *Client) GetSecurityListRange(market uint8, start uint32, count uint32) (*proto.GetSecurityListReply, error)

GetSecurityListRange 从 `start` 偏移开始拉取 `count` 条指定市场内的证券代码与名称列表。

`market` 为市场代码(取值见 `types.Market*` 常量);`start` 为起始偏移条数,从 0 开始 计数;`count` 为本次请求条数。连接或协议执行失败时返回错误。

func (*Client) GetSecurityQuotes

func (client *Client) GetSecurityQuotes(markets []uint8, codes []string) (*proto.GetSecurityQuotesReply, error)

GetSecurityQuotes 批量查询证券盘口报价,内部委托 `GetQuotesDetail` 实现。

`markets` 与 `codes` 等长,按下标一一配对发送;`markets` 元素为市场代码(取值见 `types.Market*` 常量),`codes` 元素为证券代码。两切片长度不一致时返回 `ErrMarketCodeCount`;连接或协议执行失败时返回错误。

func (*Client) GetServerHeartbeat

func (client *Client) GetServerHeartbeat() (*proto.HeartBeatReply, error)

GetServerHeartbeat 发送心跳请求并返回服务端应答,用于维持长连接活性;应答中记录服务端 返回的打包日期整数。

该请求不携带业务参数;连接或协议执行失败时返回错误。

func (*Client) GetServerInfo

func (client *Client) GetServerInfo() (*proto.InfoReply, error)

GetServerInfo 拉取主站服务信息,返回网络时延、服务端时间、服务端文案、签名与标识等字段。

该请求不携带业务参数;连接或协议执行失败时返回错误。

func (*Client) GetTableFile

func (client *Client) GetTableFile(filename string) ([][]string, error)

GetTableFile 下载并解析以竖线 `|` 分隔的表格文件,返回二维字符串表格;每个内层切片对应一行, 元素为该行各列文本,空行被跳过。

参数 `filename` 为服务端表格文件名;下载失败时返回 `nil` 与该错误。

func (*Client) GetTickChart

func (client *Client) GetTickChart(market uint8, code string, start uint16, count uint16) (*proto.GetMinuteTimeDataReply, error)

GetTickChart 查询当日分时图数据,返回分时价格、均价与成交量采样点序列。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零;`start` 为分时点起始偏移,从 0 开始计数;`count` 为请求点数。 连接或协议执行失败时返回错误。

func (*Client) GetTodoB

func (client *Client) GetTodoB() (*proto.RawDataReply, error)

GetTodoB 发送主站试验协议 `0x000b`,返回未做字段解析的原始响应; 该协议语义待确认,仅用于协议探测。

func (*Client) GetTodoFDE

func (client *Client) GetTodoFDE() (*proto.RawDataReply, error)

GetTodoFDE 发送主站试验协议 `0x0fde`,返回未做字段解析的原始响应; 该协议语义待确认,仅用于协议探测。

func (*Client) GetTopBoard

func (client *Client) GetTopBoard(category uint8, size uint8) (*proto.GetTopBoardReply, error)

GetTopBoard 查询分类排行榜,返回各榜单按排序字段排列的条目集合。

`category` 为榜单分类编号;`size` 为每个榜单返回的条目数量。连接或协议执行失败时返回错误。

func (*Client) GetTransactionData

func (client *Client) GetTransactionData(market uint8, code string, start uint16, count uint16) (*proto.GetTransactionDataReply, error)

GetTransactionData 查询当日分时逐笔成交,返回当日按时间排列的逐笔成交记录。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零;`start` 为起始偏移条数,从 0 开始计数;`count` 为请求条数。 连接或协议执行失败时返回错误。

func (*Client) GetUnusual

func (client *Client) GetUnusual(market uint8, start uint32, count uint32) (*proto.GetUnusualReply, error)

GetUnusual 查询异动监控(主力监控)记录,返回异动事件明细列表。

`market` 为市场代码(取值见 `types.Market*` 常量);`start` 为起始偏移条数,从 0 开始 计数;`count` 为请求条数,传 0 时按默认 600 条处理。连接或协议执行失败时返回错误。

func (*Client) GetVolumeProfile

func (client *Client) GetVolumeProfile(market uint8, code string) (*proto.GetVolumeProfileReply, error)

GetVolumeProfile 查询指定证券的价位成交分布(量价分布),响应前段附带一份盘口快照。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) GetXDXRInfo

func (client *Client) GetXDXRInfo(market uint8, code string) (*proto.GetXDXRInfoReply, error)

GetXDXRInfo 查询指定证券的除权除息历史记录,返回按日期倒序排列的权益变动条目。

`market` 为市场代码(取值见 `types.Market*` 常量);`code` 为证券代码,内部按 6 字节 定长编码、尾部补零。连接或协议执行失败时返回错误。

func (*Client) GoodsCategoryList

func (client *Client) GoodsCategoryList() ([]proto.ExCategoryItem, error)

GoodsCategoryList 查询扩展市场商品分类列表,内部委托 `ExCategoryList` 实现,返回各分类条目。

该请求不携带业务参数;连接或协议执行失败时返回错误。

func (*Client) GoodsChartSampling

func (client *Client) GoodsChartSampling(market uint8, code string) ([]float64, error)

GoodsChartSampling 查询扩展市场商品分时缩略采样价格序列,内部委托 `ExChartSampling` 实现, 返回压缩后的采样价格浮点序列。

`market` 为扩展市场类别编号;`code` 为商品代码。连接或协议执行失败时返回错误。

func (*Client) GoodsCount

func (client *Client) GoodsCount() (uint32, error)

GoodsCount 查询扩展市场商品总数,内部委托 `ExCount` 实现,返回品种总数。

该请求不携带业务参数;连接或协议执行失败时返回错误。

func (*Client) GoodsHistoryTransaction

func (client *Client) GoodsHistoryTransaction(market uint8, code string, queryDate uint32, count uint32) ([]proto.MACTransactionItem, error)

GoodsHistoryTransaction 查询扩展市场商品历史成交,内部委托 `MACTransactionsWithDate` 实现, 返回按时间排列的逐笔成交条目。

`market` 为市场代码;`code` 为商品代码;`queryDate` 为交易日期,按 `YYYYMMDD` 八位正 整数传入;`count` 为请求成交条数,传 0 时取 `DefaultGoodsHistoryTransactionCount` 条。 连接或协议执行失败时返回错误。

func (*Client) GoodsKLine

func (client *Client) GoodsKLine(market uint8, code string, period uint16, start uint32, count uint32, times uint16, adjust uint16) ([]proto.MACSymbolBar, error)

GoodsKLine 查询扩展市场商品 MAC K 线,内部委托 `MACSymbolBars` 实现,返回 K 线条目序列。

`market` 为市场代码;`code` 为商品代码;`period` 为 K 线周期类别;`start` 为起始偏移条数, 从 0 开始计数;`count` 为请求条数;`times` 为周期倍数,通常取 1;`adjust` 为复权方式, 取值 `types.AdjustNone`、`types.AdjustQFQ`、`types.AdjustHFQ`。连接或协议执行失败时 返回错误。

func (*Client) GoodsList

func (client *Client) GoodsList(start uint32, count uint16) ([]proto.ExListItem, error)

GoodsList 从 `start` 偏移开始拉取扩展市场商品列表,内部委托 `ExList` 实现。

`start` 为起始偏移条数,从 0 开始计数;`count` 为请求条数,传 0 时由扩展协议按默认条数 处理。连接或协议执行失败时返回错误。

func (*Client) GoodsQuote

func (client *Client) GoodsQuote(market uint8, code string) (*proto.ExQuoteItem, error)

GoodsQuote 查询单个扩展市场商品报价,内部委托 `ExQuote` 实现,返回该商品的行情快照条目。

`market` 为扩展市场类别编号;`code` 为商品代码。连接或协议执行失败时返回错误。

func (*Client) GoodsQuotes

func (client *Client) GoodsQuotes(markets []uint8, codes []string) ([]proto.ExQuoteItem, error)

GoodsQuotes 批量查询扩展市场商品报价,内部委托 `ExQuotes` 实现。

`markets` 与 `codes` 等长,按下标一一配对;两切片长度不一致时返回 `ErrMarketCodeCount`; 连接或协议执行失败时返回错误。

func (*Client) GoodsQuotesList

func (client *Client) GoodsQuotesList(market uint8, start uint16, count uint16, sortType uint16, reverse bool) ([]proto.ExQuoteItem, error)

GoodsQuotesList 查询扩展市场商品排序行情列表,内部委托 `ExQuotesList` 实现。

`market` 为扩展市场类别编号;`start` 为起始偏移条数,从 0 开始计数;`count` 为请求条数, 传 0 时按扩展协议默认条数处理;`sortType` 为排序字段编号;`reverse` 为 `true` 时降序、 `false` 时升序。连接或协议执行失败时返回错误。

func (*Client) GoodsTickChart

func (client *Client) GoodsTickChart(market uint8, code string, queryDate uint32) ([]proto.MACQuoteChartItem, error)

GoodsTickChart 查询扩展市场商品分时图,内部委托 `MACQuotesWithDate` 实现,返回分时图表数据点。

`market` 为市场代码;`code` 为商品代码;`queryDate` 为查询日期,按 `YYYYMMDD` 八位正 整数传入,传 0 时返回实时分时,否则返回指定交易日的历史分时。连接或协议执行失败时 返回错误。

func (*Client) GoodsVarieties

func (client *Client) GoodsVarieties(market uint16, start uint32, count uint32) ([]proto.ExMapping2562Item, error)

GoodsVarieties 查询扩展市场品种列表,内部委托 `ExMapping2562` 实现。

`market` 为市场代码;`start` 为起始偏移条数,从 0 开始计数;`count` 为请求条数,超过 `MaxGoodsVarietiesCount` 时在本地返回参数错误。连接或协议执行失败时返回错误。

func (*Client) MACAuction

func (client *Client) MACAuction(market uint8, code string, start uint32, count uint32) ([]proto.MACAuctionItem, error)

MACAuction 连接 MAC 主站并自动分页获取集合竞价数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始竞价 记录序号(分页偏移),从 0 开始;参数 `count` 为期望竞价条数上限,传 0 时使用 `DefaultMACAuctionCount`;分页单页大小取 `DefaultMACAuctionPage`,末页自动收缩。返回合并后的竞价 快照列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACBoardCount

func (client *Client) MACBoardCount(boardType uint16) (uint16, error)

MACBoardCount 连接 MAC 主站并返回指定类型板块的总数。

参数 `boardType` 为板块类型代码,取值见 `types.BoardType*`;返回服务端板块总数。连接失败或协议 失败时返回 0 与对应错误。

func (*Client) MACBoardList

func (client *Client) MACBoardList(boardType uint16, count uint32) ([]proto.MACBoardListItem, error)

MACBoardList 连接 MAC 主站并自动分页拉取板块列表。

参数 `boardType` 为板块类型代码,取值见 `types.BoardType*`;参数 `count` 为期望获取的板块总数上限, 传 0 时使用默认上限 `DefaultMACBoardListCount`;分页单页大小取 `DefaultMACBoardPageSize`,末页 自动收缩。返回合并后的板块条目列表;连接或任一页协议失败时返回 `nil` 与对应错误。

func (*Client) MACBoardMembers

func (client *Client) MACBoardMembers(boardSymbol string, count uint32) ([]proto.MACBoardMemberItem, error)

MACBoardMembers 连接 MAC 主站并自动分页拉取板块成分股(使用默认排序)。

参数 `boardSymbol` 为板块符号;参数 `count` 为期望获取的成分股总数上限,传 0 时使用默认上限 `DefaultMACBoardStockCount`。等价于以默认排序字段与方向调用 `MACBoardMembersWithSort`;连接或协议 失败时返回 `nil` 与对应错误。

func (*Client) MACBoardMembersQuotes

func (client *Client) MACBoardMembersQuotes(boardSymbol string, count uint32) ([]proto.MACBoardMemberQuoteItem, error)

MACBoardMembersQuotes 连接 MAC 主站并自动分页拉取板块成分股行情报价(使用默认排序)。

参数 `boardSymbol` 为板块符号;参数 `count` 为期望获取的报价条目总数上限,传 0 时使用默认上限 `DefaultMACBoardStockCount`。等价于以默认排序字段与方向调用 `MACBoardMembersQuotesWithSort`;连接或 协议失败时返回 `nil` 与对应错误。

func (*Client) MACBoardMembersQuotesDynamic

func (client *Client) MACBoardMembersQuotesDynamic(boardSymbol string, count uint32, sortType uint16, sortOrder uint8, fieldBitmap [20]byte) (*proto.MACBoardMembersQuotesDynamicReply, error)

MACBoardMembersQuotesDynamic 连接 MAC 主站并自动分页拉取按位图动态解析的板块成分报价。

参数 `boardSymbol` 为板块符号;参数 `count` 为期望获取的条目总数上限,传 0 时使用 `DefaultMACBoardStockCount`;参数 `sortType` 为排序字段编号;参数 `sortOrder` 为排序方向编号;参数 `fieldBitmap` 为 20 字节字段位图,声明返回哪些动态字段。等价于不带排除过滤条件调用 `MACBoardMembersQuotesDynamicWithFilter`;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACBoardMembersQuotesDynamicWithFilter

func (client *Client) MACBoardMembersQuotesDynamicWithFilter(boardSymbol string, count uint32, sortType uint16, sortOrder uint8, fieldBitmap [20]byte, filters ...MACFilterType) (*proto.MACBoardMembersQuotesDynamicReply, error)

MACBoardMembersQuotesDynamicWithFilter 连接 MAC 主站并自动分页拉取按位图动态解析的板块成分报价, 并支持排除过滤条件。

参数 `boardSymbol` 为板块符号;参数 `count` 为期望获取的条目总数上限,传 0 时使用 `DefaultMACBoardStockCount`;参数 `sortType` 为排序字段编号,取值见根包 `MACSortType*`;参数 `sortOrder` 为排序方向编号;参数 `fieldBitmap` 为 20 字节字段位图,跨页必须保持一致;参数 `filters` 为可变排除过滤位,由 `MACFilterFlags` 合并为单个过滤字节。跨页位图不一致属于协议异常,直接返回 错误;一页都未取到时返回使用默认位图的空应答。

func (*Client) MACBoardMembersQuotesWithSort

func (client *Client) MACBoardMembersQuotesWithSort(boardSymbol string, count uint32, sortType uint16, sortOrder uint8) ([]proto.MACBoardMemberQuoteItem, error)

MACBoardMembersQuotesWithSort 连接 MAC 主站并自动分页拉取板块成分报价,透传排序参数。

参数 `boardSymbol` 为板块符号;参数 `count` 为期望获取的报价条目总数上限,传 0 时使用 `DefaultMACBoardStockCount`;参数 `sortType` 为排序字段编号,取值见根包 `MACSortType*`;参数 `sortOrder` 为排序方向编号(1 降序、2 升序、0 不指定)。分页单页大小取 `DefaultMACBoardStockPage`, 末页自动收缩;返回合并后的报价列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACBoardMembersWithSort

func (client *Client) MACBoardMembersWithSort(boardSymbol string, count uint32, sortType uint16, sortOrder uint16) ([]proto.MACBoardMemberItem, error)

MACBoardMembersWithSort 连接 MAC 主站并自动分页拉取板块成分股,透传排序参数。

参数 `boardSymbol` 为板块符号,内部映射为板块代码;参数 `count` 为期望获取的成分股总数上限,传 0 时使用 `DefaultMACBoardStockCount`;参数 `sortType` 为排序字段编号,取值见根包 `MACSortType*`; 参数 `sortOrder` 为排序方向编号(1 降序、2 升序、0 不指定)。分页单页大小取 `DefaultMACBoardStockPage`,末页自动收缩;返回合并后的成分股列表,连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MACCapitalFlow

func (client *Client) MACCapitalFlow(market uint8, code string) (*proto.MACCapitalFlowReply, error)

MACCapitalFlow 连接 MAC 主站并获取个股资金流向。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACDownloadFullFile

func (client *Client) MACDownloadFullFile(filename string, index uint32, size uint32) ([]byte, error)

MACDownloadFullFile 连接 MAC 主站并按固定块大小循环下载完整 MAC 文件。

参数 `filename` 为协议文件名;参数 `index` 为文件分片序号,协议从 1 开始,传 0 时归一化为 1;参数 `size` 为目标总大小(字节),传 0 时先取文件元信息中的大小作为下载上限。服务器返回空块或已下载 字节达到 `size` 时结束;返回拼接后的完整文件字节,连接或分块协议失败时返回 `nil` 与对应错误。

func (*Client) MACFileList

func (client *Client) MACFileList(filename string, offset uint32) (*proto.MACFileListReply, error)

MACFileList 连接 MAC 主站并获取 MAC 文件列表/元信息。

参数 `filename` 为协议文件名,内部按定长 70 字节字段填充;参数 `offset` 为协议起始偏移,口径语义 待确认。返回文件元信息应答;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACKLineOffset

func (client *Client) MACKLineOffset(offset uint32, count uint32) (*proto.MACKLineOffsetReply, error)

MACKLineOffset 连接 MAC 主站并获取 K 线偏移信息(K 线总数与本次返回条数)。

参数 `offset` 为起始 K 线条数偏移,从 0 开始;参数 `count` 为期望查询条数,传 0 时使用默认值 `DefaultMACKLineOffsetCount`。连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACMarketMonitor

func (client *Client) MACMarketMonitor(market uint8, start uint32, count uint32) ([]proto.MACMarketMonitorItem, error)

MACMarketMonitor 连接 MAC 主站并自动分页获取市场监控(异动)数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `start` 为起始记录序号,从 0 开始,超过 `uint16` 上界(65535)时直接返回错误;参数 `count` 为期望异动条数上限,传 0 时使用 `DefaultMACMarketMonitorCount`;分页单页大小取 `DefaultMACMarketMonitorPage`,翻页过程中再次 校验偏移不越界。返回合并后的异动条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACQuotes

func (client *Client) MACQuotes(market uint8, code string) (*proto.MACQuotesReply, error)

MACQuotes 连接 MAC 主站并获取单只标的最新交易日的行情快照与分时采样。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。等价于 `MACQuotesWithDate(market, code, 0)`;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACQuotesWithDate

func (client *Client) MACQuotesWithDate(market uint8, code string, queryDate uint32) (*proto.MACQuotesReply, error)

MACQuotesWithDate 连接 MAC 主站并获取单只标的行情快照与分时采样,可指定查询日期。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `queryDate` 为查询 交易日,按 `YYYYMMDD` 打包,传 0 表示最新交易日。连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACServerInfo

func (client *Client) MACServerInfo() (*proto.MACServerInfoReply, error)

MACServerInfo 连接 MAC 主站并获取服务端交易日时段与状态信息,无业务入参;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACSymbolBars

func (client *Client) MACSymbolBars(market uint8, code string, period uint16, times uint16, start uint32, count uint32, adjust uint16) ([]proto.MACSymbolBar, error)

MACSymbolBars 连接 MAC 主站、自动分页拉取证券 K 线,并补齐换手率、转换期货自然时间。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `period` 为 K 线周期 类别,取值见 `types.KLINE_TYPE_*`;参数 `times` 为周期倍数,传 0 时按 1 处理;参数 `start` 为起始 偏移条数,从 0 开始;参数 `count` 为期望 K 线条数;参数 `adjust` 为复权方式,取值为 `types.AdjustNone`、`types.AdjustQFQ`、`types.AdjustHFQ`。分页单页大小取 `DefaultMACSymbolBarsPage`, 末页自动收缩;合并后按流通股本回填换手率,并按配置的期货交易日历把期货 K 线时间换算为自然时间。 连接、协议或日历转换失败时返回 `nil` 与对应错误。

func (*Client) MACSymbolBelongBoard

func (client *Client) MACSymbolBelongBoard(symbol string, market uint8) ([]proto.MACBelongBoardItem, error)

MACSymbolBelongBoard 连接 MAC 主站并查询指定证券所属的板块列表。

参数 `symbol` 为证券代码;参数 `market` 为市场代码,取值见 `types.Market*`。返回所属板块条目列表; 连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACSymbolInfo

func (client *Client) MACSymbolInfo(market uint8, code string) (*proto.MACSymbolInfoReply, error)

MACSymbolInfo 连接 MAC 主站并获取个股摘要。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACSymbolQuotes

func (client *Client) MACSymbolQuotes(markets []uint8, codes []string, fieldBitmap [20]byte) (*proto.MACSymbolQuotesReply, error)

MACSymbolQuotes 连接 MAC 主站并按位图批量获取股票报价。

参数 `markets` 为市场代码序列,取值见 `types.Market*`;参数 `codes` 为证券代码序列,与 `markets` 按下标一一对应;参数 `fieldBitmap` 为 20 字节字段位图,声明每只标的返回哪些动态字段,传全零时 使用内置默认位图。两个列表长度不一致时返回 `ErrMarketCodeCount`;连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MACTickCharts

func (client *Client) MACTickCharts(market uint8, code string, queryDate uint32, days uint16) (*proto.MACTickChartsReply, error)

MACTickCharts 连接 MAC 主站并获取多日分时数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `queryDate` 为查询 基准交易日,按 `YYYYMMDD` 打包成整数,传 0 表示取最新交易日;参数 `days` 为需要返回的交易日天数, 从基准日向前取数,传 0 时由协议构造器使用默认值 5,服务端返回的多余交易日会按该值裁剪。返回 `*proto.MACTickChartsReply`,内含标的标识、交易日计数、逐日分时序列与汇总行情;连接或协议失败时 返回 `nil` 与对应错误。

func (*Client) MACTransactions

func (client *Client) MACTransactions(market uint8, code string, start uint32, count uint32) ([]proto.MACTransactionItem, error)

MACTransactions 连接 MAC 主站并自动分页获取最新交易日的分时成交明细。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始成交 序号(分页偏移),从 0 开始;参数 `count` 为期望成交条数上限,传 0 时使用默认上限 `DefaultMACTransactionsCount`。等价于 `MACTransactionsWithDate(market, code, start, count, 0)`; 连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MACTransactionsWithDate

func (client *Client) MACTransactionsWithDate(market uint8, code string, start uint32, count uint32, queryDate uint32) ([]proto.MACTransactionItem, error)

MACTransactionsWithDate 连接 MAC 主站并自动分页获取分时成交明细,可指定查询日期。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `queryDate` 为查询 交易日,按 `YYYYMMDD` 打包,传 0 表示最新交易日;参数 `start` 为起始成交序号(分页偏移),从 0 开始;参数 `count` 为期望成交条数上限,传 0 时使用 `DefaultMACTransactionsCount`;分页单页大小取 `DefaultMACTransactionsPage`,末页自动收缩。返回合并后的成交明细,连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MainClient26AC

func (client *Client) MainClient26AC() (*proto.RawDataReply, error)

MainClient26AC 获取客户端信息协议 `0x26ac` 的原始响应,无业务入参;连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MainClient26AD

func (client *Client) MainClient26AD() (*proto.RawDataReply, error)

MainClient26AD 获取客户端信息协议 `0x26ad` 的原始响应,无业务入参;连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MainClient26AE

func (client *Client) MainClient26AE() (*proto.RawDataReply, error)

MainClient26AE 获取客户端信息协议 `0x26ae` 的原始响应,无业务入参;连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MainClient26B1

func (client *Client) MainClient26B1() (*proto.RawDataReply, error)

MainClient26B1 获取客户端信息协议 `0x26b1` 的原始响应,无业务入参;连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MainClient264B

func (client *Client) MainClient264B() (*proto.RawDataReply, error)

MainClient264B 获取客户端信息协议 `0x264b` 的原始响应,无业务入参;连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) MainTodoB

func (client *Client) MainTodoB() (*proto.RawDataReply, error)

MainTodoB 获取主站试验协议 `0x000b` 的原始响应,无业务入参;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) MainTodoFDE

func (client *Client) MainTodoFDE() (*proto.RawDataReply, error)

MainTodoFDE 获取主站试验协议 `0x0fde` 的原始响应,无业务入参;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) ProbeHosts

func (client *Client) ProbeHosts() []HostProbeResult

ProbeHosts 并发探测客户端已配置的全部地址,返回按可达性优先、同可达时延迟从低到高排序的 探测结果;每条结果含地址、可达标志与拨号往返耗时,不可达条目同时携带失败原因。

本方法无业务入参;客户端指针或内部选项为空时返回 `nil`;探测使用当前配置的连接超时。

func (*Client) StockAll

func (client *Client) StockAll(market uint8) ([]proto.Security, error)

StockAll 自动分页拉取指定市场内的全部证券列表。

参数 `market` 为市场代码,取值见 `types.Market*`;按固定分页大小循环翻页,直到返回条数不足一页。 返回合并后的全部证券条目,连接或任一页协议失败时返回 `nil` 与对应错误。

func (*Client) StockAuction

func (client *Client) StockAuction(market uint8, code string, start uint32, count uint32) ([]proto.AuctionData, error)

StockAuction 获取集合竞价数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始竞价 序号,从 0 开始;参数 `count` 为本页请求条数。返回竞价快照条目列表,连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) StockBlock

func (client *Client) StockBlock(filename string) ([]BlockFlatItem, error)

StockBlock 下载并解析指定板块文件,返回扁平化后的板块条目列表。

参数 `filename` 为服务端板块文件名;下载或解析失败时返回 `nil` 与对应错误。

func (*Client) StockChartSampling

func (client *Client) StockChartSampling(market uint8, code string) ([]float64, error)

StockChartSampling 获取分时缩略采样价格序列,用于绘制行情缩略图。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。返回按时间顺序排列的采样 价格浮点序列,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockCount

func (client *Client) StockCount(market uint8) (uint16, error)

StockCount 获取指定市场内的证券数目。

参数 `market` 为市场代码,取值见 `types.Market*` 常量;返回服务端统计的证券数量。连接或协议失败时 返回 0 与对应错误。

func (*Client) StockF10

func (client *Client) StockF10(market uint8, code string) (*CompanyInfoBundle, error)

StockF10 获取公司 F10 信息聚合结果(章节、除权除息与财务信息)。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。返回聚合信息包,章节拉取 失败即返回错误,除权除息与财务信息为尽力而为;连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockFeature452

func (client *Client) StockFeature452(start uint32, count uint32) ([]proto.SecurityFeature452Item, error)

StockFeature452 获取证券扩展特征信息(试验协议 `0x452`)。

参数 `start` 为起始偏移序号,从 0 开始;参数 `count` 为本页请求条数。返回特征条目列表,连接或协议 失败时返回 `nil` 与对应错误;试验协议各字段口径以服务端返回为准。

func (*Client) StockFullAuction

func (client *Client) StockFullAuction(market uint8, code string) ([]proto.AuctionData, error)

StockFullAuction 自动分页拉取集合竞价全部数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。按固定分页大小向前翻页, 新页前置以保持时间顺序;返回合并后的全部竞价条目,连接或任一页协议失败时返回 `nil` 与对应错误。

func (*Client) StockFullKLine

func (client *Client) StockFullKLine(category uint16, market uint8, code string, times uint16, adjust uint16, f func(kline proto.SecurityBar) bool) ([]proto.SecurityBar, error)

StockFullKLine 自动向前翻页拉取 K 线,直到回调命中某根 K 线或历史取完为止。

参数 `category` 为 K 线周期类别,取值见 `types.KLINE_TYPE_*`;参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `times` 为周期倍数;参数 `adjust` 为复权方式;参数 `f` 为逐条判定回调,返回 `true` 时保留命中位置及之前的全部 K 线并停止翻页。返回按时间顺序合并的 K 线 序列,已补齐 09:30 首线与换手率;连接、协议或回调执行失败时返回 `nil` 与对应错误。

func (*Client) StockFullTransaction

func (client *Client) StockFullTransaction(market uint8, code string) ([]proto.TransactionData, error)

StockFullTransaction 自动分页拉取当日全部分时成交明细。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。按固定分页大小向前翻页, 新页前置以保持时间顺序;返回合并后的当日全部逐笔成交,连接或任一页协议失败时返回 `nil` 与对应 错误。

func (*Client) StockHistoryFullTransaction

func (client *Client) StockHistoryFullTransaction(date uint32, market uint8, code string) ([]proto.HistoryTransactionData, error)

StockHistoryFullTransaction 自动分页拉取指定日期的全部分时成交明细。

参数 `date` 为目标交易日,按 `YYYYMMDD` 打包成整数;参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。按固定分页大小向前翻页,新页前置保持时间顺序;返回合并 后的该日全部逐笔成交,连接或任一页协议失败时返回 `nil` 与对应错误。

func (*Client) StockHistoryFullTransactionWithTrans

func (client *Client) StockHistoryFullTransactionWithTrans(date uint32, market uint8, code string) ([]proto.HistoryTransactionDataWithTrans, error)

StockHistoryFullTransactionWithTrans 自动分页拉取带买卖方向的历史全部分时成交明细。

参数 `date` 为目标交易日,按 `YYYYMMDD` 打包成整数;参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。按固定分页大小向前翻页,新页前置保持时间顺序;返回合并后 的该日全部带方向逐笔成交,连接或任一页协议失败时返回 `nil` 与对应错误。

func (*Client) StockHistoryOrders

func (client *Client) StockHistoryOrders(date uint32, market uint8, code string) ([]proto.HistoryOrderData, error)

StockHistoryOrders 获取指定日期的历史委托分布。

参数 `date` 为目标交易日,按 `YYYYMMDD` 打包成整数;参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。返回历史委托条目列表,连接或协议失败时返回 `nil` 与对应 错误。

func (*Client) StockHistoryTickChart

func (client *Client) StockHistoryTickChart(date uint32, market uint8, code string) ([]proto.HistoryMinuteTimeData, error)

StockHistoryTickChart 获取指定日期的历史分时图数据。

参数 `date` 为目标交易日,按 `YYYYMMDD` 打包成整数;参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。返回该日历史分时条目列表,连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) StockHistoryTransaction

func (client *Client) StockHistoryTransaction(date uint32, market uint8, code string, start uint16, count uint16) ([]proto.HistoryTransactionData, error)

StockHistoryTransaction 获取指定日期的历史分时成交明细。

参数 `date` 为目标交易日,按 `YYYYMMDD` 打包成整数;参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始成交序号,从 0 开始;参数 `count` 为本页 请求笔数。返回历史逐笔成交条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockHistoryTransactionWithTrans

func (client *Client) StockHistoryTransactionWithTrans(date uint32, market uint8, code string, start uint16, count uint16) ([]proto.HistoryTransactionDataWithTrans, error)

StockHistoryTransactionWithTrans 获取带买卖方向的历史分时成交明细。

参数 `date` 为目标交易日,按 `YYYYMMDD` 打包成整数;参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始成交序号,从 0 开始;参数 `count` 为本页 请求笔数。返回带买卖方向的历史逐笔成交条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockIndexInfo

func (client *Client) StockIndexInfo(market uint8, code string) (*proto.GetIndexInfoReply, error)

StockIndexInfo 获取指数概况。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为指数代码。返回指数概况应答,连接或 协议失败时返回 `nil` 与对应错误。

func (*Client) StockIndexMomentum

func (client *Client) StockIndexMomentum(market uint8, code string) ([]int, error)

StockIndexMomentum 获取指数动量序列。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为指数代码。返回动量数值序列,连接或 协议失败时返回 `nil` 与对应错误。

func (*Client) StockKLine

func (client *Client) StockKLine(category uint16, market uint8, code string, start uint16, count uint16, times uint16, adjust uint16) ([]proto.SecurityBar, error)

StockKLine 获取证券 K 线,自动修正 09:30 分时数据并按流通股本补齐换手率。

参数 `category` 为 K 线周期类别,取值见 `types.KLINE_TYPE_*` 常量;参数 `market` 为市场代码,取值 见 `types.Market*`;参数 `code` 为六位证券代码;参数 `start` 为起始偏移条数,从 0 开始;参数 `count` 为请求 K 线条数;参数 `times` 为周期倍数,零值按 1 处理;参数 `adjust` 为复权方式,取值 为 `types.AdjustNone`、`types.AdjustQFQ`、`types.AdjustHFQ`。返回换算价格与换手率后的 K 线条目, 连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockKLine930

func (client *Client) StockKLine930(category uint16, market uint8, code string, reply *proto.GetSecurityBarsReply)

StockKLine930 补齐 1 分钟分时中缺失的 09:30 首根 K 线;仅对 1 分钟与扩展 1 分钟周期生效。

参数 `category` 为 K 线周期类别,仅 `types.KLINE_TYPE_1MIN` 与 `types.KLINE_TYPE_EXHQ_1MIN` 触发 重建;参数 `market` 为市场代码,参数 `code` 为证券代码,用于回查逐笔成交;参数 `reply` 为待就地 修改的 K 线应答,重建后的首根线插入序列头部并同步更新 `Count`。服务器通常从 09:31 开始返回分钟线, 09:30 集合竞价首笔成交缺失;本方法依据当日或历史首笔逐笔成交重建该首根线,其开、高、低、收均为 首笔成交价。

func (*Client) StockKLineOffset

func (client *Client) StockKLineOffset(category uint16, market uint8, code string, start uint16, count uint16, times uint16, adjust uint16) ([]proto.SecurityBar, error)

StockKLineOffset 使用偏移协议获取证券 K 线,并补齐 09:30 首线与换手率。

参数 `category` 为 K 线周期类别,取值见 `types.KLINE_TYPE_*`;参数 `market` 为市场代码;参数 `code` 为证券代码;参数 `start` 为起始偏移条数,从 0 开始;参数 `count` 为请求条数;参数 `times` 为周期 倍数;参数 `adjust` 为复权方式,取值为 `types.AdjustNone`、`types.AdjustQFQ`、`types.AdjustHFQ`。 返回换算价格与换手率后的 K 线条目,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockList

func (client *Client) StockList(market uint8, start uint32, count uint32) ([]proto.Security, error)

StockList 分页获取指定市场内的证券代码与名称列表。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `start` 为起始偏移序号,从 0 开始;参数 `count` 为本页请求条数。返回本页证券条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockListOld

func (client *Client) StockListOld(market uint8, start uint16) ([]proto.Security, error)

StockListOld 使用旧版协议获取市场内证券列表。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `start` 为起始偏移序号,从 0 开始。返回本页 证券条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockQuotes

func (client *Client) StockQuotes(markets []uint8, codes []string) ([]proto.QuoteListItem, error)

StockQuotes 批量获取行情快照列表,自动修正小数位并补齐换手率。

参数 `markets` 为市场代码序列,取值见 `types.Market*`;参数 `codes` 为证券代码序列,与 `markets` 按 下标一一对应,较短列表作为配对上限。返回快照行情条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockQuotesDetail

func (client *Client) StockQuotesDetail(markets []uint8, codes []string) ([]proto.SecurityQuote, error)

StockQuotesDetail 批量获取详细盘口行情,自动修正小数位并按流通股本补齐换手率。

参数 `markets` 为市场代码序列,取值见 `types.Market*`;参数 `codes` 为证券代码序列,与 `markets` 按 下标一一对应,较短列表作为配对上限。返回带五档买卖盘的详细行情列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockQuotesEncrypt

func (client *Client) StockQuotesEncrypt(markets []uint8, codes []string) ([]proto.EncryptedQuoteItem, error)

StockQuotesEncrypt 获取加密行情报价列表。

参数 `markets` 为市场代码序列,取值见 `types.Market*`;参数 `codes` 为证券代码序列,与 `markets` 按 下标一一对应。返回加密报价条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockQuotesList

func (client *Client) StockQuotesList(category uint8, start uint16, count uint16, sortType uint16, reverse bool, filter uint16) ([]proto.QuoteListItem, error)

StockQuotesList 获取排序后的行情列表,自动修正小数位并补齐换手率。

参数 `category` 为主站证券列表分类代码,取值见 `types.Category*`;参数 `start` 为起始偏移序号,从 0 开始;参数 `count` 为本页请求条数;参数 `sortType` 为排序字段编号,取值见 `types.Sort*`;参数 `reverse` 为 `true` 表示降序、`false` 表示升序;参数 `filter` 为筛选条件位图,可按位组合 `types.Filter*`。返回排序后的行情条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockTickChart

func (client *Client) StockTickChart(market uint8, code string, start uint16, count uint16) ([]proto.MinuteTimeData, error)

StockTickChart 获取当日分时图数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始分时点 序号,从 0 开始;参数 `count` 为请求分时点数。返回当日分时条目列表,连接或协议失败时返回 `nil` 与 对应错误。

func (*Client) StockTopBoard

func (client *Client) StockTopBoard(category uint8, size uint8) (*proto.GetTopBoardReply, error)

StockTopBoard 获取主行情排行榜。

参数 `category` 为榜单分类代码;参数 `size` 为期望返回的榜单条目数量。返回排行榜应答,连接或协议 失败时返回 `nil` 与对应错误。

func (*Client) StockTransaction

func (client *Client) StockTransaction(market uint8, code string, start uint16, count uint16) ([]proto.TransactionData, error)

StockTransaction 获取当日分时成交明细。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码;参数 `start` 为起始成交 序号,从 0 开始;参数 `count` 为本页请求笔数。返回当日逐笔成交条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockUnusual

func (client *Client) StockUnusual(market uint8, start uint32, count uint32) ([]proto.UnusualData, error)

StockUnusual 获取主力监控异动数据。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `start` 为起始异动序号,从 0 开始;参数 `count` 为本页请求条数。返回异动条目列表,连接或协议失败时返回 `nil` 与对应错误。

func (*Client) StockVolumeProfile

func (client *Client) StockVolumeProfile(market uint8, code string) (*proto.GetVolumeProfileReply, error)

StockVolumeProfile 获取成交分布与盘口快照,并按流通股本回填总换手率。

参数 `market` 为市场代码,取值见 `types.Market*`;参数 `code` 为证券代码。返回成交分布应答,连接或 协议失败时返回 `nil` 与对应错误。

func (*Client) Subscriber

func (client *Client) Subscriber() *Subscriber

Subscriber 返回绑定当前客户端的通用订阅工厂:通过工厂可对报价、K 线、分时、 逐笔、指数、扩展市场等任意数据源建立订阅(见 `Subscriber.Subscribe`),客户端 `Disconnect` 或调用 `Close` 时工厂内全部订阅自动停止。

type CompanyInfoBundle

type CompanyInfoBundle struct {
	// Sections 为按目录顺序拉取到的 F10 章节列表;目录为空时该切片为空。
	Sections []CompanyInfoSection
	// XDXR 为除权除息记录列表;拉取失败时保持 `nil`,不影响章节结果。
	XDXR []proto.XDXRItem
	// Finance 为财务信息应答;拉取失败时保持 `nil`,不影响章节结果。
	Finance *proto.GetFinanceInfoReply
}

CompanyInfoBundle 聚合返回的公司信息,包含 F10 章节、除权除息记录与财务信息。

type CompanyInfoSection

type CompanyInfoSection struct {
	// Name 为章节显示名称,取自公司信息目录中的章节标题。
	Name string
	// Content 为章节正文,GBK 解码后的纯文本内容。
	Content string
}

CompanyInfoSection 表示 F10 公司信息中的一个章节。

type HostInfo

type HostInfo struct {
	Name string `json:"name"` // 站点显示名称,用于界面展示与探测结果标注
	IP   string `json:"ip"`   // 服务器 IPv4 或主机名,连接层直接用于拨号
	Port int    `json:"port"` // 服务器端口号,取值范围 0 至 65535
}

HostInfo 表示一条内置通达信行情服务器条目,包含站点名称、IP 地址与端口。

该结构体为纯值类型,零值对应名称、IP 为空串、端口为 0;各站点列表函数返回的是内置 列表的浅拷贝,调用方修改返回切片或其中条目不会影响内置数据。

func BrokerHosts

func BrokerHosts() []HostInfo

BrokerHosts 返回内置券商行情服务器列表的浅拷贝;该组站点为券商与上证云接入地址, 调用方修改返回切片不会影响内置列表。

func ExHosts

func ExHosts() []HostInfo

ExHosts 返回内置扩展行情服务器列表的浅拷贝;该组站点用于期货、港股、美股等扩展行情 协议,默认端口 7727,调用方修改返回切片不会影响内置列表。

func ICFQSHosts

func ICFQSHosts() []HostInfo

ICFQSHosts 返回内置 ICFQS 资讯行情服务器列表的浅拷贝;该组站点用于资讯行情协议, 默认端口 7615,调用方修改返回切片不会影响内置列表。

func MACExHosts

func MACExHosts() []HostInfo

MACExHosts 返回内置 MAC 扩展行情服务器列表的浅拷贝;该组站点用于 MAC 扩展行情协议, 调用方修改返回切片不会影响内置列表。

func MACHosts

func MACHosts() []HostInfo

MACHosts 返回内置 MAC 主行情服务器列表的浅拷贝;该组站点用于 MAC 主站协议, 调用方修改返回切片不会影响内置列表。

func MainHosts

func MainHosts() []HostInfo

MainHosts 返回内置主行情服务器列表的浅拷贝;该组站点用于主站 A 股行情协议,默认端口 7709,调用方修改返回切片不会影响内置列表。

func (HostInfo) Address

func (h HostInfo) Address() string

Address 返回客户端连接层使用的 `host:port` 形式地址,由 `net.JoinHostPort` 拼接, 自动处理 IPv6 场景所需的方括号包裹。

type HostProbeResult

type HostProbeResult struct {
	Name      string        `json:"name"`            // 站点显示名称,地址无法回填名称时为空串
	IP        string        `json:"ip"`              // 服务器 IP 地址或主机名
	Port      int           `json:"port"`            // 服务器端口号;端口解析失败时保持 0
	Address   string        `json:"address"`         // `host:port` 形式地址,原样来自探测输入
	Latency   time.Duration `json:"latency"`         // 拨号往返耗时,仅 `Reachable` 为 `true` 时有效
	Reachable bool          `json:"reachable"`       // 是否 TCP 拨号成功
	Error     string        `json:"error,omitempty"` // 拨号或地址解析失败原因,成功时为空串
}

HostProbeResult 记录一次 TCP 拨号探测的结果。

当 `Reachable` 为 `true` 时 `Latency` 为本次拨号测得的往返耗时;当 `Reachable` 为 `false` 时 `Latency` 无意义,`Error` 保存拨号失败原因的文本描述。零值表示未探测或不可达。

func FastestAddress

func FastestAddress(addresses []string, timeout time.Duration) (HostProbeResult, error)

FastestAddress 返回给定地址列表中延迟最低的可达地址。

`addresses` 与 `timeout` 的含义同 `ProbeAddresses`。全部地址不可达时返回零值 `HostProbeResult` 与 `ErrNoReachableHosts`。

func FastestHost

func FastestHost(hosts []HostInfo, timeout time.Duration) (HostProbeResult, error)

FastestHost 返回探测结果中延迟最低的可达主机条目。

`hosts` 与 `timeout` 的含义同 `ProbeHosts`;探测完成后取排序结果里第一个可达条目。全部主机 不可达时返回零值 `HostProbeResult` 与 `ErrNoReachableHosts`。

func ProbeAddresses

func ProbeAddresses(addresses []string, timeout time.Duration) []HostProbeResult

ProbeAddresses 并发对给定 `host:port` 地址列表逐一发起 TCP 拨号探测,返回探测结果切片。

`addresses` 为待探测地址,格式由 `net.SplitHostPort` 解析;`timeout` 为单次拨号超时时间, 传非正数时回退到内置默认超时(2 秒)。排序规则同 `ProbeHosts`;输入为空切片时返回空切片。 探测不返回错误,失败原因记录在各结果条目的 `Error` 字段中。

func ProbeHosts

func ProbeHosts(hosts []HostInfo, timeout time.Duration) []HostProbeResult

ProbeHosts 并发对给定主机条目逐一发起 TCP 拨号探测,返回探测结果切片。

`hosts` 为待探测主机条目;`timeout` 为单次拨号超时时间,传非正数时回退到内置默认超时 (2 秒)。返回结果先按可达性排序(可达条目在前),同为可达时再按往返延迟从低到高排序, 延迟相同按名称、地址字典序兜底;输入为空切片时返回空切片。探测不返回错误,失败原因记录 在各结果条目的 `Error` 字段中。

type ICFQSClient

type ICFQSClient struct {
	// contains filtered or unexported fields
}

ICFQSClient 是访问 ICFQS TQLEX 接口的轻量 HTTP 客户端;须由 `NewICFQS` 或 `NewICFQSHot` 构造, 零值不可用。客户端方法可并发调用,底层复用同一个 `http.Client`。

func NewICFQS

func NewICFQS(opts ...ICFQSOption) *ICFQSClient

NewICFQS 创建访问默认 ICFQS 服务的 HTTP 客户端。

参数 `opts` 为按顺序覆盖默认地址、`http.Client`、超时等配置的函数式选项,后传入的选项优先生效; 不传选项时使用 `DefaultICFQSAddress` 与内置 2 秒超时。返回的客户端零值不可用,方法可并发调用。

func NewICFQSHot

func NewICFQSHot(opts ...ICFQSOption) *ICFQSClient

NewICFQSHot 创建访问热门话题站点 `hot.icfqs.com` 的 ICFQS 客户端。

参数 `opts` 为按顺序覆盖默认配置的函数式选项;客户端先以 `DefaultICFQSHotAddress` 初始化,再依次 应用各选项,空选项被跳过。返回的客户端零值不可用。

func (*ICFQSClient) ICFQSEventsRaw

func (client *ICFQSClient) ICFQSEventsRaw(ctx context.Context) (map[string]any, error)

ICFQSEventsRaw 查询题材事件,返回原始响应映射。

参数 `ctx` 为请求上下文;传输或解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSHotTopicsRaw

func (client *ICFQSClient) ICFQSHotTopicsRaw(ctx context.Context) (map[string]any, error)

ICFQSHotTopicsRaw 查询热门话题,返回原始响应映射。

参数 `ctx` 为请求上下文;传输或解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSLHBDetailRaw

func (client *ICFQSClient) ICFQSLHBDetailRaw(ctx context.Context, symbol string, startDate string, endDate string) (map[string]any, error)

ICFQSLHBDetailRaw 查询个股龙虎榜明细,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `symbol` 为证券代码;参数 `startDate`、`endDate` 为查询区间起止日期 文本,日期格式由服务端约定。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSMRFPLatestDateRaw

func (client *ICFQSClient) ICFQSMRFPLatestDateRaw(ctx context.Context) (map[string]any, error)

ICFQSMRFPLatestDateRaw 查询每日复盘数据可用的最新日期,返回原始响应映射。

参数 `ctx` 为请求上下文;传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSMRFPRaw

func (client *ICFQSClient) ICFQSMRFPRaw(ctx context.Context, reviewType string, date string, limit int) (map[string]any, error)

ICFQSMRFPRaw 按类型查询每日复盘数据,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `reviewType` 为复盘类型编号文本;参数 `date` 为查询日期文本,格式由 服务端约定;参数 `limit` 为返回条数上限,传非正数时使用默认值 30。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSNewTopicsRaw

func (client *ICFQSClient) ICFQSNewTopicsRaw(ctx context.Context) (map[string]any, error)

ICFQSNewTopicsRaw 查询最新题材话题,返回原始响应映射。

参数 `ctx` 为请求上下文;传输或解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSQuotesBatchRaw

func (client *ICFQSClient) ICFQSQuotesBatchRaw(ctx context.Context, codes []ICFQSCode, wantColumns []string) (map[string]any, error)

ICFQSQuotesBatchRaw 批量查询股票行情快照,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `codes` 为待查询的市场/代码配对序列;参数 `wantColumns` 为期望返回的 行情列名序列,传空时默认返回收盘价 `CLOSE` 与最新价 `NOW`。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSSearchTopicsRaw

func (client *ICFQSClient) ICFQSSearchTopicsRaw(ctx context.Context, keyword string) (map[string]any, error)

ICFQSSearchTopicsRaw 按关键词搜索话题,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `keyword` 为搜索关键词文本。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSTopTopicsRaw

func (client *ICFQSClient) ICFQSTopTopicsRaw(ctx context.Context, topN int) (map[string]any, error)

ICFQSTopTopicsRaw 查询排行前列的话题,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `topN` 为期望返回的排行话题数量,传非正数时使用默认数量 10。传输或 响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSTopicDetailRaw

func (client *ICFQSClient) ICFQSTopicDetailRaw(ctx context.Context, code string, setcode string) (map[string]any, error)

ICFQSTopicDetailRaw 查询指定话题详情,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `code` 为话题代码;参数 `setcode` 为市场/分类编码。传输或响应解析失败 时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSTopicKLineRaw

func (client *ICFQSClient) ICFQSTopicKLineRaw(ctx context.Context, code string, setcode string) (map[string]any, error)

ICFQSTopicKLineRaw 查询话题走势 K 线数据,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `code` 为话题代码;参数 `setcode` 为市场/分类编码。传输或响应解析失败 时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSTopicListRaw

func (client *ICFQSClient) ICFQSTopicListRaw(ctx context.Context, category string, setcode string, page int) (map[string]any, error)

ICFQSTopicListRaw 分页查询话题列表,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `category` 为话题分类文本;参数 `setcode` 为市场/分类编码;参数 `page` 为页码,传非正数时从第 1 页开始。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSTopicQuotesRaw

func (client *ICFQSClient) ICFQSTopicQuotesRaw(ctx context.Context, codes []ICFQSCode) (map[string]any, error)

ICFQSTopicQuotesRaw 批量查询话题成分股行情快照,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `codes` 为待查询的市场/代码配对序列,请求按序列顺序对齐。传输或 响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSTopicRotationRaw

func (client *ICFQSClient) ICFQSTopicRotationRaw(ctx context.Context, dataNum int, dataType int, dataDate int, themeType string) (map[string]any, error)

ICFQSTopicRotationRaw 查询题材轮动数据,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `dataNum` 为返回条数,传 0 时使用默认值 1;参数 `dataType` 为数据类型 编号,传 0 时使用默认值 1;参数 `dataDate` 为日期类型编号,传 0 时使用默认值 2;参数 `themeType` 为 题材类型文本,传空串时使用默认值 `"0"`;各编号具体口径由服务端约定。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSTopicStocksRaw

func (client *ICFQSClient) ICFQSTopicStocksRaw(ctx context.Context, code string, setcode string, page int, size int) (map[string]any, error)

ICFQSTopicStocksRaw 分页查询话题成分股,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `code` 为话题代码;参数 `setcode` 为市场/分类编码;参数 `page` 为页码, 传非正数时从第 1 页开始;参数 `size` 为本页条数,传非正数时使用默认值 20。传输或响应解析失败时 返回 `nil` 与错误。

func (*ICFQSClient) ICFQSYYBDetailRaw

func (client *ICFQSClient) ICFQSYYBDetailRaw(ctx context.Context, yybName string, startDate string, endDate string) (map[string]any, error)

ICFQSYYBDetailRaw 查询营业部龙虎榜明细,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `yybName` 为营业部名称文本;参数 `startDate`、`endDate` 为查询区间起止 日期文本,日期格式由服务端约定。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) ICFQSYZDetailRaw

func (client *ICFQSClient) ICFQSYZDetailRaw(ctx context.Context, code string, startDate string, endDate string) (map[string]any, error)

ICFQSYZDetailRaw 查询主力资金明细,返回原始响应映射。

参数 `ctx` 为请求上下文;参数 `code` 为证券代码;参数 `startDate`、`endDate` 为查询区间起止日期文本, 日期格式由服务端约定。传输或响应解析失败时返回 `nil` 与错误。

func (*ICFQSClient) PostJSON

func (client *ICFQSClient) PostJSON(ctx context.Context, entry string, body any) (map[string]any, error)

PostJSON 向指定入口发送原始 JSON 请求体,并解码标准 JSON 响应。

参数 `ctx` 为请求上下文,为空时回退为后台上下文;参数 `entry` 为服务端入口标识;参数 `body` 为待 序列化为 JSON 的请求体。返回解码后的响应对象映射;请求序列化、HTTP 传输、状态码非 2xx 或响应体 不是合法 JSON 对象时返回 `nil` 与错误。

func (*ICFQSClient) PostTQL

func (client *ICFQSClient) PostTQL(ctx context.Context, entry string, params []any) (map[string]any, error)

PostTQL 按 TQLEX 协议发送带 `Params` 与 `oauth_zzfw` 参数的请求,并解析返回的响应对象。

参数 `ctx` 为请求上下文,为空时回退为后台上下文;参数 `entry` 为服务端入口标识(如 `CWServ.ph_tdxdatacenter_zttz_zy`);参数 `params` 为按服务端约定顺序排列的请求参数序列。返回解析 后的响应对象映射;HTTP 传输、状态码非 2xx 或响应体无法解析为配对完整 JSON 对象时返回 `nil` 与错误。

type ICFQSCode

type ICFQSCode struct {
	// Setcode 为服务端市场/分类编码,具体取值口径由 ICFQS 服务端约定。
	Setcode string `json:"setcode"`
	// Code 为证券或话题代码字符串。
	Code string `json:"code"`
}

ICFQSCode 表示 ICFQS HTTP 接口使用的市场/代码配对,批量行情请求时按位置与其他标的一一对应。

type ICFQSOption

type ICFQSOption func(*ICFQSClient)

ICFQSOption 是用于修改 `ICFQSClient` 配置的函数式选项;闭包在 `NewICFQS` 或 `NewICFQSHot` 构造阶段 按传入顺序依次应用,后传入的选项优先生效。

func WithICFQSAddress

func WithICFQSAddress(address string) ICFQSOption

WithICFQSAddress 设置 ICFQS 服务地址。

参数 `address` 为 `host:port` 形式地址或完整基础 URL;传入空串或纯空白时保持客户端原值不变。

func WithICFQSHTTPClient

func WithICFQSHTTPClient(httpClient *http.Client) ICFQSOption

WithICFQSHTTPClient 设置该客户端使用的 `http.Client`。

参数 `httpClient` 为外部构造的 HTTP 客户端,可用于自定义连接池、代理与中间件;传入空指针时保持 客户端原值不变。

func WithICFQSTimeout

func WithICFQSTimeout(timeout time.Duration) ICFQSOption

WithICFQSTimeout 设置 HTTP 请求超时时间。

参数 `timeout` 为整次请求(连接、发送、读取)的超时时长;传入非正数时保持客户端原值不变。

type ICFQSTable

type ICFQSTable struct {
	// Rows 为表格行集合,每行是以列名为键、单元值为值的映射;列数多于行值时缺失单元填 `nil`。
	Rows []map[string]any `json:"rows"`
}

ICFQSTable 是 TQLEX 结果集以表格行列形式组织后的视图;列名取自结果集 `ColName` 或 `ColDes`。

func ICFQSFormatTables

func ICFQSFormatTables(raw map[string]any) []ICFQSTable

ICFQSFormatTables 将结果集 `ResultSets` 转换为表格行集合,列名优先取 `ColName`,缺失时回退到 `ColDes` 中的 `Name` 字段。

参数 `raw` 为 `PostTQL` 或 `PostJSON` 返回的原始响应映射;不含 `ResultSets` 时返回空表格切片。

type MACFieldBit

type MACFieldBit uint8

MACFieldBit 表示 MAC 动态字段位图中的单个字段位,底层为协议位号,有效范围为 0–159 (对应 20 字节位图的 160 个二进制位)。

位号与 `proto/mac_board_members_dynamic.go` 中的字段映射表一一对应;超出位图容量的位号 在置位时会被忽略,不会产生越界写入。

const (
	MACFieldPreClose            MACFieldBit = 0x0                       // 昨收盘价,上一交易日收盘价格
	MACFieldOpen                MACFieldBit = 0x1                       // 今日开盘价
	MACFieldHigh                MACFieldBit = 0x2                       // 今日最高价
	MACFieldLow                 MACFieldBit = 0x3                       // 今日最低价
	MACFieldClose               MACFieldBit = 0x4                       // 今日收盘价
	MACFieldVol                 MACFieldBit = 0x5                       // 今日成交量,单位股
	MACFieldVolRatio            MACFieldBit = 0x6                       // 量比,当前成交活跃度与近期均量之比
	MACFieldAmount              MACFieldBit = 0x7                       // 今日成交总金额,单位元
	MACFieldInsideVolume        MACFieldBit = 0x8                       // 内盘成交量,主动卖出方向成交的股数
	MACFieldOutsideVolume       MACFieldBit = 0x9                       // 外盘成交量,主动买入方向成交的股数
	MACFieldTotalShares         MACFieldBit = 0xa                       // 总股本,单位万股
	MACFieldFloatShares         MACFieldBit = 0xb                       // 流通股本,单位万股;港股场景别名 total_shares_hk
	MACFieldEPS                 MACFieldBit = 0xc                       // 每股收益,净利润除以总股本
	MACFieldNetAssets           MACFieldBit = 0xd                       // 每股净资产
	MACFieldSecurityTypePrice   MACFieldBit = 0xe                       // 证券类型价(别名 action_price,语义待确认)
	MACFieldTotalMarketCapAb    MACFieldBit = 0xf                       // A/B 股总市值
	MACFieldPEDynamic           MACFieldBit = 0x10                      // 动态市盈率
	MACFieldBidPrice            MACFieldBit = 0x11                      // 买一报价
	MACFieldAskPrice            MACFieldBit = 0x12                      // 卖一报价
	MACFieldServerUpdateDate    MACFieldBit = 0x13                      // 行情服务器更新日期,格式 YYYYMMDD
	MACFieldServerUpdateTime    MACFieldBit = 0x14                      // 行情服务器更新时间,格式 HHMMSS
	MACFieldLotSizeInfo         MACFieldBit = 0x15                      // 每手相关信息(映射表标注未确定,语义待确认)
	MACFieldBoardStrength       MACFieldBit = 0x16                      // 板块强度,板块内上涨与下跌家数之差
	MACFieldDividendYield       MACFieldBit = 0x17                      // 每股股息,单位元
	MACFieldBidVolume           MACFieldBit = 0x18                      // 买一挂单量
	MACFieldAskVolume           MACFieldBit = 0x19                      // 卖一挂单量
	MACFieldLastVolume          MACFieldBit = 0x1a                      // 最新一笔成交量,即现量
	MACFieldTurnover            MACFieldBit = 0x1b                      // 换手率
	MACFieldIndustry            MACFieldBit = 0x1c                      // 行业分类代码
	MACFieldIndustryChangeUp    MACFieldBit = 0x1d                      // 所属行业涨跌幅
	MACFieldStockTagFlags       MACFieldBit = 0x1e                      // 股票标签位图,多个标签按位组合
	MACFieldDecimalPoint        MACFieldBit = 0x1f                      // 价格数据精度,记录小数位标志
	MACFieldBuyPriceLimit       MACFieldBit = 0x20                      // 涨停价
	MACFieldSellPriceLimit      MACFieldBit = 0x21                      // 跌停价
	MACFieldPriceDecimalInfo    MACFieldBit = 0x22                      // 价格精度标志(语义待确认)
	MACFieldLotSize             MACFieldBit = 0x23                      // 所属地区板块(A 股)/ 每手股数(港股),含义随品种双义
	MACFieldPreIOPV             MACFieldBit = 0x24                      // 昨日基金份额参考净值,即昨 IOPV
	MACFieldSpeedPct            MACFieldBit = 0x25                      // 涨速,单位时间内价格变动幅度
	MACFieldAvgPrice            MACFieldBit = 0x26                      // 成交均价,成交额除以成交量
	MACFieldIOPV                MACFieldBit = 0x27                      // 基金份额参考净值(IOPV)
	MACFieldPETTMVolRelated     MACFieldBit = 0x28                      // 前参考价,美股品种适用
	MACFieldExPricePlaceholder  MACFieldBit = 0x29                      // 前金额参考占位(别名 close_placeholder)
	MACFieldOperatingRevenue    MACFieldBit = 0x2a                      // 营业收入,单位万元
	MACFieldFlagKCB             MACFieldBit = 0x2b                      // 科创板标志位
	MACFieldFlagBJ              MACFieldBit = 0x2c                      // 北交所标志位
	MACFieldCirculatingCapitalZ MACFieldBit = 0x2d                      // 流通股本 Z,单位万股(语义待确认)
	MACFieldAfterHoursVolume    MACFieldBit = 0x2e                      // 盘后成交量
	MACFieldPETTM               MACFieldBit = 0x30                      // 滚动市盈率(PE TTM)
	MACFieldPEStatic            MACFieldBit = 0x31                      // 静态市盈率
	MACFieldIndexMetric         MACFieldBit = 0x37                      // 指数指标值
	MACFieldMainNetAmount       MACFieldBit = 0x38                      // 今日主力净流入金额
	MACFieldBidAskRatio         MACFieldBit = 0x39                      // 委比,买卖盘挂单力量对比
	MACFieldNonIndexFlag        MACFieldBit = 0x3a                      // 非指数标志位
	MACFieldChange20DPct        MACFieldBit = 0x3b                      // 近 20 日涨幅百分比
	MACFieldYTDPct              MACFieldBit = 0x3c                      // 年初至今涨幅百分比
	MACFieldStockClassCode      MACFieldBit = 0x3e                      // 证券子分类代码
	MACFieldPercentBase         MACFieldBit = 0x3f                      // 百分比基底(语义待确认)
	MACFieldMTDPct              MACFieldBit = 0x40                      // 月初至今涨幅百分比
	MACFieldChange1yPct         MACFieldBit = 0x41                      // 近一年涨幅百分比
	MACFieldPrevChangePct       MACFieldBit = 0x42                      // 昨日涨幅百分比
	MACFieldChange3DPct         MACFieldBit = 0x43                      // 近 3 日涨幅百分比
	MACFieldChange60DPct        MACFieldBit = 0x44                      // 近 60 日涨幅百分比
	MACFieldChange5DPct         MACFieldBit = 0x45                      // 近 5 日涨幅百分比
	MACFieldChange10DPct        MACFieldBit = 0x46                      // 近 10 日涨幅百分比
	MACFieldPrev2ChangePct      MACFieldBit = 0x47                      // 前日涨幅百分比
	MACFieldBid2Price           MACFieldBit = 0x48                      // 买二报价
	MACFieldAsk2Price           MACFieldBit = 0x49                      // 卖二报价
	MACFieldAHCode              MACFieldBit = 0x4a                      // 对应 A/H 股代码,位数不足前面补 0
	MACFieldUnknownCode         MACFieldBit = 0x4b                      // 未知代码,少部分为 6 位数字(语义待确认)
	MACFieldOpenAmount          MACFieldBit = 0x57                      // 开盘金额,单位元
	MACFieldAnnualLimitUpDays   MACFieldBit = 0x58                      // 年内涨停天数
	MACFieldActivity            MACFieldBit = 0x59                      // 活跃度
	MACFieldDividendYieldRate   MACFieldBit = 0x5b                      // 股息率百分比
	MACFieldConsecutiveUpDays   MACFieldBit = 0x5c                      // 连续上涨天数
	MACFieldLimitUpCount        MACFieldBit = 0x5d                      // 板块为涨停家数;个股复用为买二量(别名 Bid2Volume)
	MACFieldLimitDownCount      MACFieldBit = 0x5e                      // 板块为跌停家数;个股复用为卖二量(别名 Ask2Volume)
	MACFieldIndustrySub         MACFieldBit = 0x5f                      // 行业二级分类代码
	MACFieldAuctionBuyLimit     MACFieldBit = 0x66                      // 连续竞价买入上限价
	MACFieldAuctionSellLimit    MACFieldBit = 0x67                      // 连续竞价卖出下限价
	MACFieldVolSpeedPct         MACFieldBit = 0x68                      // 量涨速百分比
	MACFieldShortTurnoverPct    MACFieldBit = 0x69                      // 短周期换手率百分比
	MACFieldAmount2m            MACFieldBit = 0x6a                      // 近 2 分钟成交金额,单位元
	MACFieldMainNetAmountCopy   MACFieldBit = 0x6b                      // 今日主力净流入金额副本
	MACFieldMainNetRatio        MACFieldBit = 0x6c                      // 主力净比百分比
	MACFieldRetailNetAmount     MACFieldBit = 0x6d                      // 散户单增比(映射表原文,语义待确认)
	MACFieldMainNet5mAmount     MACFieldBit = 0x6e                      // 近 5 分钟主力净额
	MACFieldMainNet3DAmount     MACFieldBit = 0x6f                      // 近三日主力净额
	MACFieldMainNet5DAmount     MACFieldBit = 0x70                      // 近五日主力净额
	MACFieldMainNet10DAmount    MACFieldBit = 0x71                      // 近十日主买金额(映射表标注待确定)
	MACFieldMainBuyNetAmount    MACFieldBit = 0x72                      // 今日主买净额
	MACFieldDDX                 MACFieldBit = 0x73                      // 大单动向指标 DDX,具体计算口径语义待确认
	MACFieldDDY                 MACFieldBit = 0x74                      // 涨跌动因指标 DDY,具体计算口径语义待确认
	MACFieldDDZ                 MACFieldBit = 0x75                      // 大单差分指标 DDZ,具体计算口径语义待确认
	MACFieldDDF                 MACFieldBit = 0x76                      // DDF 资金指标,具体含义语义待确认
	MACFieldStockFlagA          MACFieldBit = 0x77                      // 个股标志位 A
	MACFieldStockFlagB          MACFieldBit = 0x78                      // 个股标志位 B,为 A 的副本
	MACFieldAuctionVolRatio     MACFieldBit = 0x7a                      // 竞价昨比(映射表原文,语义待确认)
	MACFieldPrevAmount          MACFieldBit = 0x7b                      // 昨日成交金额,单位元
	MACFieldRecentIndicator     MACFieldBit = 0x7d                      // 近日指标提示(语义待确认)
	MACFieldBid3Price           MACFieldBit = 0x80                      // 买三报价
	MACFieldBid4Price           MACFieldBit = 0x81                      // 买四报价
	MACFieldBid5Price           MACFieldBit = 0x82                      // 买五报价
	MACFieldAsk3Price           MACFieldBit = 0x83                      // 卖三报价
	MACFieldAsk4Price           MACFieldBit = 0x84                      // 卖四报价
	MACFieldAsk5Price           MACFieldBit = 0x85                      // 卖五报价
	MACFieldBid3Volume          MACFieldBit = 0x86                      // 买三挂单量
	MACFieldBid4Volume          MACFieldBit = 0x87                      // 买四挂单量
	MACFieldUpCount             MACFieldBit = 0x88                      // 板块为上涨家数;个股复用为买五量(别名 Bid5Volume)
	MACFieldAsk3Volume          MACFieldBit = 0x89                      // 卖三挂单量
	MACFieldAsk4Volume          MACFieldBit = 0x8a                      // 卖四挂单量
	MACFieldDownCount           MACFieldBit = 0x8b                      // 板块为下跌家数;个股复用为卖五量(别名 Ask5Volume)
	MACFieldBidAskDiff          MACFieldBit = 0x8c                      // 委差,买盘与卖盘挂单量之差
	MACFieldChangeUpType        MACFieldBit = 0x8d                      // 封板状态
	MACFieldSafetyScore         MACFieldBit = 0x8e                      // 安全分(别名 ConstantNegOne)
	MACFieldHighlightCount      MACFieldBit = 0x8f                      // 亮点数(别名 StockRating,个股评级)
	MACFieldChangeAt1000        MACFieldBit = 0x90                      // 10:00 时点的日内涨幅百分比
	MACFieldChangeAt1030        MACFieldBit = 0x91                      // 10:30 时点的日内涨幅百分比
	MACFieldChangeAt1100        MACFieldBit = 0x92                      // 11:00 时点的日内涨幅百分比
	MACFieldChangeAt1130        MACFieldBit = 0x93                      // 11:30 时点的日内涨幅百分比
	MACFieldChangeAt1330        MACFieldBit = 0x94                      // 13:30 时点的日内涨幅百分比
	MACFieldChangeAt1400        MACFieldBit = 0x95                      // 14:00 时点的日内涨幅百分比
	MACFieldChangeAt1430        MACFieldBit = 0x96                      // 14:30 时点的日内涨幅百分比
	MACFieldSomeBitmap          MACFieldBit = MACFieldStockTagFlags     // 历史遗留别名,等同 StockTagFlags
	MACFieldPreIPOV             MACFieldBit = MACFieldPreIOPV           // 历史遗留别名,等同 PreIOPV
	MACFieldIPOV                MACFieldBit = MACFieldIOPV              // 历史遗留别名,等同 IOPV
	MACFieldGEMStarInfo         MACFieldBit = MACFieldAfterHoursVolume  // 历史遗留别名,等同 AfterHoursVolume
	MACFieldDividendYieldPct    MACFieldBit = MACFieldDividendYieldRate // 历史遗留别名,等同 DividendYieldRate
	MACFieldConstantNegOne      MACFieldBit = MACFieldSafetyScore       // 历史遗留别名,等同 SafetyScore
	MACFieldStockRating         MACFieldBit = MACFieldHighlightCount    // 历史遗留别名,等同 HighlightCount
	MACFieldBid2Volume          MACFieldBit = MACFieldLimitUpCount      // 历史遗留别名,等同 LimitUpCount
	MACFieldAsk2Volume          MACFieldBit = MACFieldLimitDownCount    // 历史遗留别名,等同 LimitDownCount
	MACFieldBid5Volume          MACFieldBit = MACFieldUpCount           // 历史遗留别名,等同 UpCount
	MACFieldAsk5Volume          MACFieldBit = MACFieldDownCount         // 历史遗留别名,等同 DownCount
)

MACField* 位图字段:MAC 动态字段位图中可请求的行情字段,位号与 `proto/mac_board_members_dynamic.go` 的字段映射表一一对应;位图中置位后,服务端才会返回 对应字段。每个字段的具体含义、单位与特殊取值见各常量行尾注释。

标注“语义待确认”的字段协议含义未在映射表中确证,不应据此推断协议细节;块末若干常量为 历史遗留别名,指向同一字段位,保留以兼容旧调用,对应关系见各别名常量行尾注释。

type MACFieldSelector

type MACFieldSelector interface {
	// contains filtered or unexported methods
}

MACFieldSelector 是参与构造 MAC 动态字段位图的选择项接口。

单个字段位(`MACFieldBit`)与一组字段预设(`MACPresetField`)均实现该接口;调用方将 若干选择项传给 `MACFieldBitmap`,由其组合出最终位图。位图中被置位的字段才会在服务端 响应中返回。

type MACFilterType

type MACFilterType uint8

MACFilterType 是 MAC 板块成分的排除条件,每个条件独占一个二进制位;多个条件按位或叠加后 写入请求位图的过滤字节,命中条件的标的将被排除。位定义见 `MACFilter*` 常量;取值 0 表示不 排除任何标的。

const (
	MACFilterNew          MACFilterType = 1   // 排除新股
	MACFilterKCB          MACFilterType = 2   // 排除科创板标的
	MACFilterST           MACFilterType = 4   // 排除风险警示(ST)标的
	MACFilterGEM          MACFilterType = 8   // 排除创业板标的
	MACFilterHKConnect    MACFilterType = 16  // 排除港股通标的
	MACFilterBJ           MACFilterType = 32  // 排除北交所标的
	MACFilterApproval     MACFilterType = 64  // 排除核准制标的
	MACFilterRegistration MACFilterType = 128 // 排除注册制标的
)

MACFilter* 成分股排除条件位图,每个条件独占一个二进制位,可按位或叠加组合;命中任一条件的 标的将被排除出榜单。各条件对应的标的类别见常量行尾注释。

type MACPresetField

type MACPresetField uint8

MACPresetField 表示一组常用 MAC 动态字段预设:一个预设编号对应一组固定字段位,调用方 无需逐位列举字段,即可通过 `MACFieldBitmap` 选中整组字段。

const (
	MACPresetNone        MACPresetField = 0  // 不选择任何字段,位图保持全零
	MACPresetOHLC        MACPresetField = 1  // 仅选中开盘、最高、最低、收盘四个价格字段
	MACPresetBasic       MACPresetField = 2  // 基础行情:开高低收、昨收、成交量
	MACPresetQuote       MACPresetField = 3  // 盘口报价:买一价、卖一价、买一量、卖一量、现量
	MACPresetVolume      MACPresetField = 4  // 量额换手:成交量、成交额、换手率、量比
	MACPresetFundamental MACPresetField = 5  // 基本面:总股本、流通股本、每股收益、净资产
	MACPresetEnhanced    MACPresetField = 6  // 增强行情:开高低收、成交量、流通股本、活跃度
	MACPresetAHCode      MACPresetField = 7  // A/H 辅助信息:开高低收、成交量、A/H 代码、每手、行业
	MACPresetBoardStats  MACPresetField = 8  // 板块涨跌统计:涨停、跌停、上涨、下跌家数
	MACPresetHandicap    MACPresetField = 9  // 五档盘口:五档买卖报价与对应挂单量
	MACPresetCommon      MACPresetField = 10 // 常用字段集合,覆盖普通行情查询所需字段
	MACPresetDebug       MACPresetField = 11 // 调试用,将位图 160 位全部置 1
	MACPresetAll         MACPresetField = 12 // 选中全部已定义字段位
)

MACPreset* 常用字段预设:一次性选中一组 MAC 动态字段,便于直接构造字段位图。各预设包含的 具体字段组见各常量行尾注释。

type MACSortOrder

type MACSortOrder uint8

MACSortOrder 是 MAC 板块成分榜单的排序方向编号,作为请求的排序方向参数传入,控制排序结果 按升序还是降序返回;编号定义见 `MACSortOrder*` 常量。取值 0 表示不指定方向,服务端默认回填 1(降序)。

const (
	MACSortOrderNone MACSortOrder = 0 // 不指定排序方向;请求传 0 时服务端默认回填 1(降序)
	MACSortOrderDesc MACSortOrder = 1 // 降序,排序指标值大的标的排在前面
	MACSortOrderAsc  MACSortOrder = 2 // 升序,排序指标值小的标的排在前面
)

MACSortOrder* 排序方向编号,作为请求的排序方向参数传入;各编号方向语义见常量行尾注释。

type MACSortType

type MACSortType uint16

MACSortType 是 MAC 板块成分榜单的排序字段编号,作为请求的排序字段参数传入,指定结果按 哪一项指标排序;取值为协议约定的排序字段代码,编号定义见 `MACSort*` 常量。取值 0 表示不 指定排序字段,服务端默认回填 14(`MACSortChangePct`,按涨跌幅排序)。

const (
	MACSortCode              MACSortType = 0x00  // 按证券代码排序
	MACSortName              MACSortType = 0x01  // 按证券名称排序
	MACSortPrice             MACSortType = 0x06  // 按最新价排序
	MACSortVol               MACSortType = 0x07  // 按成交量排序
	MACSortAmount            MACSortType = 0x08  // 按成交额排序
	MACSortTotalAmount       MACSortType = 0x0a  // 按总成交额排序
	MACSortLastVolume        MACSortType = 0x0b  // 按现量(最新一笔成交量)排序
	MACSortChange            MACSortType = 0x0c  // 按涨跌额排序
	MACSortIndustry          MACSortType = 0x0d  // 按所属行业排序
	MACSortChangePct         MACSortType = 0x0e  // 按涨跌幅排序;排序字段传 0 时服务端默认回填此编号
	MACSortAmplitudePct      MACSortType = 0x0f  // 按振幅排序
	MACSortShortTurnoverPct  MACSortType = 0xcc  // 按短周期换手率排序
	MACSortVolSpeedPct       MACSortType = 0xd0  // 按量涨速排序
	MACSortChange5DPct       MACSortType = 0xd1  // 按近 5 日涨幅排序
	MACSortChange10DPct      MACSortType = 0xd2  // 按近 10 日涨幅排序
	MACSortMainNetAmount     MACSortType = 0xd4  // 按主力净流入金额排序
	MACSortMainNetRatio      MACSortType = 0xd7  // 按主力净比排序
	MACSortAuctionLimitBuy   MACSortType = 0x102 // 按连续竞价买入上限价排序
	MACSortAuctionLimitSell  MACSortType = 0x103 // 按连续竞价卖出下限价排序
	MACSortLimitUpTime       MACSortType = 0x108 // 按涨停时间排序
	MACSortLimitDownTime     MACSortType = 0x109 // 按跌停时间排序
	MACSortDrawdownPct       MACSortType = 0x11e // 按回撤幅度排序
	MACSortAttackPct         MACSortType = 0x11f // 按攻击幅度排序,具体语义待确认
	MACSortYTDPct            MACSortType = 0x121 // 按年初至今涨幅排序
	MACSortConsecutiveUpDays MACSortType = 0x138 // 按连续上涨天数排序
	MACSortChange3DPct       MACSortType = 0x139 // 按近 3 日涨幅排序
	MACSortDividendYieldRate MACSortType = 0x13a // 按股息率排序
	MACSortChange20DPct      MACSortType = 0x172 // 按近 20 日涨幅排序
	MACSortChange60DPct      MACSortType = 0x173 // 按近 60 日涨幅排序
	MACSortPrevChangePct     MACSortType = 0x17e // 按昨日涨幅排序
	MACSortMTDPct            MACSortType = 0x19c // 按月初至今涨幅排序
	MACSortChange1YPct       MACSortType = 0x19d // 按近一年涨幅排序
	MACSortPETTM             MACSortType = 0x3ee // 按滚动市盈率(PE TTM)排序
	MACSortPEStatic          MACSortType = 0x3ef // 按静态市盈率排序
)

MACSort* 板块成分排序字段编号,作为请求的排序字段参数传入,指定榜单按哪一项指标排序。 各编号对应的排序维度见常量行尾注释;请求排序字段传 0 时服务端默认回填 `MACSortChangePct`。

type Option

type Option func(options *Options)

Option 是用于修改 `Options` 的函数式选项,返回闭包在合并阶段按顺序应用到配置上。

func WithEmptyNodeSwitchDisabled

func WithEmptyNodeSwitchDisabled(disabled bool) Option

WithEmptyNodeSwitchDisabled 设置是否关闭空数据换节点。

参数 `disabled` 为 `true` 时,空数据应答直接返回首次结果,不再并行探测池内其他连接、 不累计节点空数据健康度;为 `false`(默认)时保持原有并行换节点行为。该选项与 `WithPoolSize` 相互独立,可单独关闭换节点而不改变池大小;单连接组合使用时优先选择 `WithSingleConnectionMode`。

func WithExTCPAddress

func WithExTCPAddress(tcpAddress string) Option

WithExTCPAddress 设置扩展行情服务器地址,格式为 `host:port`。

func WithExTCPAddressPool

func WithExTCPAddressPool(ips ...string) Option

WithExTCPAddressPool 设置扩展行情服务器地址池,连接时按顺序或测速结果依次尝试。

参数 `ips` 为 `host:port` 地址序列,整体替换原地址池;不传参数时清空地址池。

func WithFuturesCalendarPath

func WithFuturesCalendarPath(path string) Option

WithFuturesCalendarPath 设置 MAC 期货 K 线自然时间转换使用的 `SQLite` 交易日历路径。

参数 `path` 为日历文件路径;传入空串时关闭期货自然时间转换,保留服务端原始交易时间。

func WithGuardConfig

func WithGuardConfig(failThreshold int, openTimeout time.Duration) Option

WithGuardConfig 设置熔断阈值与冷却时长。

参数 `failThreshold` 为同一命令码连续失败多少次打开熔断,非正数保持默认 5; 参数 `openTimeout` 为熔断打开后冷却多久放行单个试探请求,非正数保持默认 5 秒。 熔断按协议命令码分桶,互不影响。

func WithGuardDisabled

func WithGuardDisabled(disabled bool) Option

WithGuardDisabled 设置是否关闭 `execute` 入口的熔断与防击穿保护。

参数 `disabled` 为 `true` 时关闭保护:请求直接走原有执行路径,不统计失败、 不合并并发;为 `false`(默认)时保持熔断+防击穿。适用于需要完全保留原始 行为(如自定义容错策略)的调用方。

func WithMacExTCPAddress

func WithMacExTCPAddress(tcpAddress string) Option

WithMacExTCPAddress 设置 MAC 扩展行情服务器地址,格式为 `host:port`。

func WithMacExTCPAddressPool

func WithMacExTCPAddressPool(ips ...string) Option

WithMacExTCPAddressPool 设置 MAC 扩展行情服务器地址池,连接时按顺序或测速结果依次尝试。

参数 `ips` 为 `host:port` 地址序列,整体替换原地址池;不传参数时清空地址池。

func WithMacTCPAddress

func WithMacTCPAddress(tcpAddress string) Option

WithMacTCPAddress 设置 MAC 主行情服务器地址,格式为 `host:port`。

func WithMacTCPAddressPool

func WithMacTCPAddressPool(ips ...string) Option

WithMacTCPAddressPool 设置 MAC 主行情服务器地址池,连接时按顺序或测速结果依次尝试。

参数 `ips` 为 `host:port` 地址序列,整体替换原地址池;不传参数时清空地址池。

func WithPoolSize

func WithPoolSize(poolSize int) Option

WithPoolSize 设置连接池大小,即并行可用的 TCP 连接条数。

参数 `poolSize` 为目标连接条数;传入非正数时保持默认池大小。池内连接各自独立握手, 请求按轮询分散到各连接,连接之间并行、单连接内部串行。

func WithSingleConnectionMode

func WithSingleConnectionMode() Option

WithSingleConnectionMode 开启显式单连接模式:把连接池大小设为 1,并关闭空数据换节点。

适用于单并发、追求窄尾延迟的调用方:全程复用一条长连接,获得接近老库固定单连接的稳定 延迟分布;断连自愈(心跳判死、后台补建、重平衡)仍然保留。默认关闭,不传该选项时保持 三连接池与空数据并行换节点行为。需要只关闭换节点、保留多连接池时改用 `WithEmptyNodeSwitchDisabled(true)`。

func WithTCPAddress

func WithTCPAddress(tcpAddress string) Option

WithTCPAddress 设置主行情服务器地址,格式为 `host:port`。

func WithTCPAddressPool

func WithTCPAddressPool(ips ...string) Option

WithTCPAddressPool 设置主行情服务器地址池,连接时按顺序或测速结果依次尝试。

参数 `ips` 为 `host:port` 地址序列,整体替换原地址池;不传参数(空序列)时清空地址池。

func WithTimeoutSec

func WithTimeoutSec(timeoutSec int) Option

WithTimeoutSec 设置连接与读写超时时间,单位秒;传入非正数时保持默认超时。

type Options

type Options struct {
	TCPAddress             string        // 主行情服务器单点地址,格式为 `host:port`;空串时回退到主站地址池
	TCPAddressPool         []string      // 主行情服务器地址池,连接时按顺序或测速结果依次尝试;空切片使用内置默认池
	ExTCPAddress           string        // 扩展行情服务器单点地址,格式为 `host:port`;空串时回退到扩展站地址池
	ExTCPAddressPool       []string      // 扩展行情服务器地址池;空切片使用内置默认池
	MacTCPAddress          string        // MAC 主行情服务器单点地址,格式为 `host:port`;空串时回退到 MAC 主站地址池
	MacTCPAddressPool      []string      // MAC 主行情服务器地址池;空切片使用内置默认池
	MacExTCPAddress        string        // MAC 扩展行情服务器单点地址,格式为 `host:port`;空串时回退到 MAC 扩展站地址池
	MacExTCPAddressPool    []string      // MAC 扩展行情服务器地址池;空切片使用内置默认池
	MaxRetryTimes          int           // 单次请求写失败的重试次数;构造阶段由默认值 3 填充,连接流程中按该值重试
	TimeoutSec             int           // 连接与读写共用的超时时间,单位秒;构造阶段由默认值 2 秒填充,非正数回退默认
	PoolSize               int           // 连接池大小,即并行可用的 TCP 连接条数;构造阶段由默认值 3 填充,非正数回退默认
	DisableEmptyNodeSwitch bool          // 关闭空数据换节点:空应答直接返回首次结果,不并行探测其他连接;默认 `false` 保持池化换节点行为
	GuardEnabled           bool          // 开启 `execute` 入口的熔断与防击穿保护;默认 `true`,四个入口全部数据查询统一受保护
	GuardFailThreshold     int           // 熔断阈值:同一命令码连续失败多少次打开熔断;构造阶段由默认值 5 填充,非正数回退默认
	GuardOpenTimeout       time.Duration // 熔断冷却时长:打开后冷却多久放行单个试探请求;零或负数回退默认 5 秒
	FuturesCalendarPath    string        // 期货交易日历 SQLite 路径;为空时不转换 MAC 期货自然时间
}

Options 保存客户端创建时使用的主站、扩展站、MAC 站地址与地址池、重试次数、超时等全部配置。

该结构体通常不直接构造:`New` 会先应用内置默认配置,再按传入顺序应用各 `Option` 覆盖 对应字段,后传入的选项优先生效。各字段的零值表示"沿用对应默认值",字段级并发读写 应在构造阶段完成,连接建立后不应再修改。

type SubscribeSource

type SubscribeSource[T any] struct {
	Key     string                // 可选数据源标识,相同标识合并轮询
	Fetch   func() (T, error)     // 拉取最新快照,返回错误时跳过本轮轮询
	Changed func(old, new T) bool // 两次快照是否不同;`nil` 时使用深比较
}

SubscribeSource 描述一个可订阅的数据源。

`Key` 为可选的数据源标识:相同 `Key` 的订阅合并到同一个轮询任务,共享一次拉取 (同一 `Key` 下快照类型必须一致,轮询间隔取所有订阅的最小值);未指定 `Key` 时每次订阅独立轮询。`Fetch` 拉取最新快照,返回错误时跳过本轮轮询;`Changed` 判断两次快照是否不同(省略时默认深比较,即任何字段变化都视为变化)。

type Subscriber

type Subscriber struct {
	// contains filtered or unexported fields
}

Subscriber 是通用行情订阅工厂:绑定一个客户端连接,通过 `Subscribe` 对任意 数据源建立订阅;客户端 `Disconnect` 或调用 `Close` 时工厂内全部订阅自动停止。

func (*Subscriber) Close

func (f *Subscriber) Close()

Close 停止工厂内全部订阅并释放轮询循环;之后仍可继续调用 `Subscribe` 建立新订阅。

func (*Subscriber) Subscribe

func (f *Subscriber) Subscribe[T any](source SubscribeSource[T], interval time.Duration, handler func(T) bool) (cancel func(), err error)

Subscribe 对一个数据源建立订阅:注册后立即拉取一次并推送建立基线,此后按 `interval` 轮询拉取,快照发生变化时回调 `handler`。

参数 `source` 描述数据源(`Fetch` 必填,`Key` 可选用于合并订阅);`interval` 为轮询间隔,非正数时使用默认 3 秒;`handler` 接收变化后的最新快照,返回 `false` 即取消本次订阅。返回取消函数,调用后停止该订阅的轮询与推送。拉取失败 (网络波动或拉取函数 panic)自动跳过本轮并下轮重试,不中断订阅。

Directories

Path Synopsis
Package cache 为 gotdx 提供基于 `Redis` 的缓存层,对外方法与 gotdx.Client 同名同签名(仅首位新增 context.Context),并发安全。
Package cache 为 gotdx 提供基于 `Redis` 的缓存层,对外方法与 gotdx.Client 同名同签名(仅首位新增 context.Context),并发安全。
cmd
webviewer command
Command webviewer 启动本地网页行情查看器:内嵌前端页面,通过 HTTP 接口转发 `gotdx` 主站、扩展站、MAC 与 ICFQS 等协议查询,并把响应整理为表格展示在浏览器中。
Command webviewer 启动本地网页行情查看器:内嵌前端页面,通过 HTTP 接口转发 `gotdx` 主站、扩展站、MAC 与 ICFQS 等协议查询,并把响应整理为表格展示在浏览器中。
Command gotdx-examples 是 `gotdx` 整组示例的快速入口:先查询沪深主行情快照,再查询扩展市场(美股)报价;其余专题能力见 `examples` 下各子目录。
Command gotdx-examples 是 `gotdx` 整组示例的快速入口:先查询沪深主行情快照,再查询扩展市场(美股)报价;其余专题能力见 `examples` 下各子目录。
ex_board_list command
Command ex_board_list 演示通过 ExBoardList 拉取扩展市场行业板块列表,并逐行打印板块代码、名称与行情字段。
Command ex_board_list 演示通过 ExBoardList 拉取扩展市场行业板块列表,并逐行打印板块代码、名称与行情字段。
ex_category_list command
Command ex_category_list 演示通过 ExCategoryList 拉取扩展市场分类(港股、美股、期货等)列表并逐行打印。
Command ex_category_list 演示通过 ExCategoryList 拉取扩展市场分类(港股、美股、期货等)列表并逐行打印。
ex_count command
Command ex_count 演示通过 ExCount 获取扩展市场内的标的总数并打印。
Command ex_count 演示通过 ExCount 获取扩展市场内的标的总数并打印。
ex_experiment_2487 command
Command ex_experiment_2487 演示试验协议 `0x2487` 返回的单品种行情原始响应,以美股 `TSLA` 为例打印各字段与尾部十六进制片段。
Command ex_experiment_2487 演示试验协议 `0x2487` 返回的单品种行情原始响应,以美股 `TSLA` 为例打印各字段与尾部十六进制片段。
ex_experiment_2488 command
Command ex_experiment_2488 演示试验协议 `0x2488` 返回的数据记录,以美股 `TSLA` 为例逐条打印; 请求模式与各字段的确切语义待确认。
Command ex_experiment_2488 演示试验协议 `0x2488` 返回的数据记录,以美股 `TSLA` 为例逐条打印; 请求模式与各字段的确切语义待确认。
ex_history command
Command ex_history 演示通过 ExHistoryTransaction 查询扩展市场指定交易日的历史成交明细,以美股 `TSLA` 为例仅打印前 20 条。
Command ex_history 演示通过 ExHistoryTransaction 查询扩展市场指定交易日的历史成交明细,以美股 `TSLA` 为例仅打印前 20 条。
ex_kline command
Command ex_kline 演示通过 ExKLine 获取扩展市场证券 K 线,以美股 `TSLA` 日线为例打印最近 10 根 K 线。
Command ex_kline 演示通过 ExKLine 获取扩展市场证券 K 线,以美股 `TSLA` 日线为例打印最近 10 根 K 线。
ex_kline2 command
Command ex_kline2 演示第二套 K 线协议 ExKLine2 获取扩展市场证券 K 线,以美股 `TSLA` 日线为例打印最近 10 根。
Command ex_kline2 演示第二套 K 线协议 ExKLine2 获取扩展市场证券 K 线,以美股 `TSLA` 日线为例打印最近 10 根。
ex_list command
Command ex_list 演示通过 ExList 分页获取扩展市场证券列表,从偏移 0 开始打印前 20 条。
Command ex_list 演示通过 ExList 分页获取扩展市场证券列表,从偏移 0 开始打印前 20 条。
ex_list_extra command
Command ex_list_extra 演示通过 ExListExtra 获取扩展市场附加列表记录并逐条打印;前两个参数的确切语义待确认。
Command ex_list_extra 演示通过 ExListExtra 获取扩展市场附加列表记录并逐条打印;前两个参数的确切语义待确认。
ex_mapping_2562 command
Command ex_mapping_2562 演示试验协议 `0x2562` 返回的品种映射记录,以中金所期货类别为例打印前 10 条;多数字段含义语义待确认。
Command ex_mapping_2562 演示试验协议 `0x2562` 返回的品种映射记录,以中金所期货类别为例打印前 10 条;多数字段含义语义待确认。
ex_paged_list command
Command ex_paged_list 演示先查询扩展市场标的总数,再按固定页大小循环分页拉取 ExList 列表, 直到取空或达到最大页数限制,并汇总实际拉取条数。
Command ex_paged_list 演示先查询扩展市场标的总数,再按固定页大小循环分页拉取 ExList 列表, 直到取空或达到最大页数限制,并汇总实际拉取条数。
ex_quote command
Command ex_quote 演示通过 ExQuote 查询单只扩展证券的行情报价,以美股 `TSLA` 为例打印开高低收与均价等字段。
Command ex_quote 演示通过 ExQuote 查询单只扩展证券的行情报价,以美股 `TSLA` 为例打印开高低收与均价等字段。
ex_quotes command
Command ex_quotes 演示通过 ExQuotes 批量查询扩展市场行情报价,同时取美股 `TSLA` 与港股主板 `09988` 两只标的。
Command ex_quotes 演示通过 ExQuotes 批量查询扩展市场行情报价,同时取美股 `TSLA` 与港股主板 `09988` 两只标的。
ex_quotes2 command
Command ex_quotes2 演示第二套批量报价协议 ExQuotes2,同时取美股 `TSLA` 与港股主板 `09988`,打印结算价与涨速字段。
Command ex_quotes2 演示第二套批量报价协议 ExQuotes2,同时取美股 `TSLA` 与港股主板 `09988`,打印结算价与涨速字段。
ex_quotes_list command
Command ex_quotes_list 演示通过 ExQuotesList 分页获取扩展市场排序行情列表,美股类别下按代码排序取前 20 条。
Command ex_quotes_list 演示通过 ExQuotesList 分页获取扩展市场排序行情列表,美股类别下按代码排序取前 20 条。
ex_sampling command
Command ex_sampling 演示通过 ExChartSampling 获取分时缩略采样价格序列,以美股 `TSLA` 为例打印前 20 个采样点。
Command ex_sampling 演示通过 ExChartSampling 获取分时缩略采样价格序列,以美股 `TSLA` 为例打印前 20 个采样点。
ex_server_info command
Command ex_server_info 演示手动构造扩展行情客户端:先完成登录握手并打印服务器信息, 再分别查询当日分时与指定交易日历史分时,以美股 `TSLA` 为例。
Command ex_server_info 演示手动构造扩展行情客户端:先完成登录握手并打印服务器信息, 再分别查询当日分时与指定交易日历史分时,以美股 `TSLA` 为例。
ex_single_connection command
Command ex_single_connection 演示显式单连接模式:连接池大小为 1 并关闭空数据换节点, 以美股 `TSLA` 历史成交明细为例,展示单并发场景下接近老库固定单连接的窄尾延迟行为。
Command ex_single_connection 演示显式单连接模式:连接池大小为 1 并关闭空数据换节点, 以美股 `TSLA` 历史成交明细为例,展示单并发场景下接近老库固定单连接的窄尾延迟行为。
ex_table command
Command ex_table 演示通过 ExTable 拉取扩展市场表格文本,按换行拆分后打印前 10 个非空行。
Command ex_table 演示通过 ExTable 拉取扩展市场表格文本,按换行拆分后打印前 10 个非空行。
ex_table_detail command
Command ex_table_detail 演示通过 ExTableDetail 拉取扩展市场表格明细文本,按逗号拆分后打印前 20 个非空条目。
Command ex_table_detail 演示通过 ExTableDetail 拉取扩展市场表格明细文本,按逗号拆分后打印前 20 个非空条目。
ex_tick command
Command ex_tick 演示通过 ExTickChart 获取扩展市场分时图,日期传 0 表示取当日分时,以美股 `TSLA` 为例打印前 20 点。
Command ex_tick 演示通过 ExTickChart 获取扩展市场分时图,日期传 0 表示取当日分时,以美股 `TSLA` 为例打印前 20 点。
goods_overview command
Command goods_overview 依次演示扩展市场商品的总数、列表、品种映射、批量报价与日 K 线接口, 串联展示商品类查询的常用调用顺序。
Command goods_overview 依次演示扩展市场商品的总数、列表、品种映射、批量报价与日 K 线接口, 串联展示商品类查询的常用调用顺序。
host_probe command
Command host_probe 演示对内置主站、扩展站、MAC 主站与 MAC 扩展站四类服务器逐一做 TCP 探测, 打印可达性与延迟;最后通过自动选最快主机接口选出延迟最低的主站。
Command host_probe 演示对内置主站、扩展站、MAC 主站与 MAC 扩展站四类服务器逐一做 TCP 探测, 打印可达性与延迟;最后通过自动选最快主机接口选出延迟最低的主站。
icfqs_raw command
Command icfqs_raw 演示 ICFQS 资讯行情接口:先取话题列表原始响应,再由 ICFQSFormatTables 转换为表格行, 打印第一张表的行数与前 5 行内容。
Command icfqs_raw 演示 ICFQS 资讯行情接口:先取话题列表原始响应,再由 ICFQSFormatTables 转换为表格行, 打印第一张表的行数与前 5 行内容。
internal/exampleutil
Package exampleutil 提供 `examples` 目录下各示例共用的客户端构造、内置主机地址与小工具函数, 屏蔽主站、扩展站、MAC 主站、MAC 扩展站之间的地址配置差异,使示例代码聚焦于协议调用本身。
Package exampleutil 提供 `examples` 目录下各示例共用的客户端构造、内置主机地址与小工具函数, 屏蔽主站、扩展站、MAC 主站、MAC 扩展站之间的地址配置差异,使示例代码聚焦于协议调用本身。
mac_auction command
Command mac_auction 演示通过 MACAuction 获取 MAC 竞价数据,以深市 `000001` 为例打印竞价时间、价格与匹配/未匹配量。
Command mac_auction 演示通过 MACAuction 获取 MAC 竞价数据,以深市 `000001` 为例打印竞价时间、价格与匹配/未匹配量。
mac_board_list command
Command mac_board_list 演示先查询全部类型板块的总数,再按该总数拉取 MAC 板块列表并逐行打印。
Command mac_board_list 演示先查询全部类型板块的总数,再按该总数拉取 MAC 板块列表并逐行打印。
mac_board_members command
Command mac_board_members 演示 MACBoardMembersWithSort 获取板块 `880761` 的成分股列表, 按指定排序类型与顺序取前 20 只并打印代码、市场与名称。
Command mac_board_members 演示 MACBoardMembersWithSort 获取板块 `880761` 的成分股列表, 按指定排序类型与顺序取前 20 只并打印代码、市场与名称。
mac_board_members_quotes command
Command mac_board_members_quotes 演示 MACBoardMembersQuotesWithSort 获取板块 `880761` 的成分股报价, 按指定排序类型与顺序取前 20 只并打印行情字段。
Command mac_board_members_quotes 演示 MACBoardMembersQuotesWithSort 获取板块 `880761` 的成分股报价, 按指定排序类型与顺序取前 20 只并打印行情字段。
mac_board_members_quotes_dynamic command
Command mac_board_members_quotes_dynamic 演示按字段位图动态解析板块成分报价:在通用字段预设基础上 追加主力净流入占比与涨跌类型字段,按涨幅百分比降序排列并过滤 `ST` 标的,取板块 `880761` 前 10 只。
Command mac_board_members_quotes_dynamic 演示按字段位图动态解析板块成分报价:在通用字段预设基础上 追加主力净流入占比与涨跌类型字段,按涨幅百分比降序排列并过滤 `ST` 标的,取板块 `880761` 前 10 只。
mac_capital_flow command
Command mac_capital_flow 演示通过 MACCapitalFlow 查询个股资金流向,以深市 `000001` 为例打印今日与五日主力、散户净流入。
Command mac_capital_flow 演示通过 MACCapitalFlow 查询个股资金流向,以深市 `000001` 为例打印今日与五日主力、散户净流入。
mac_file_query command
Command mac_file_query 演示 MAC 文件两步操作:先查询 `StockInfo.dat` 的元信息(偏移、大小、标志、哈希), 再按元信息中的大小循环下载完整文件并打印字节数。
Command mac_file_query 演示 MAC 文件两步操作:先查询 `StockInfo.dat` 的元信息(偏移、大小、标志、哈希), 再按元信息中的大小循环下载完整文件并打印字节数。
mac_kline_offset command
Command mac_kline_offset 演示通过 MACKLineOffset 获取 MAC K 线偏移信息,从偏移 0 开始按默认条数请求, 打印服务端返回的总数与本次返回条数。
Command mac_kline_offset 演示通过 MACKLineOffset 获取 MAC K 线偏移信息,从偏移 0 开始按默认条数请求, 打印服务端返回的总数与本次返回条数。
mac_market_monitor command
Command mac_market_monitor 演示通过 MACMarketMonitor 获取市场异动监控数据,深市类别下从偏移 0 取前 20 条, 打印异动描述、数值与各原始字段。
Command mac_market_monitor 演示通过 MACMarketMonitor 获取市场异动监控数据,深市类别下从偏移 0 取前 20 条, 打印异动描述、数值与各原始字段。
mac_quotes command
Command mac_quotes 演示通过 MAC 协议接口 `MACQuotes` 查询单只证券的实时报价及其分时图表数据并打印。
Command mac_quotes 演示通过 MAC 协议接口 `MACQuotes` 查询单只证券的实时报价及其分时图表数据并打印。
mac_server_info command
Command mac_server_info 演示查询 MAC 行情服务器的交易日、会话与市场参数等基本信息并打印。
Command mac_server_info 演示查询 MAC 行情服务器的交易日、会话与市场参数等基本信息并打印。
mac_symbol_bars command
Command mac_symbol_bars 演示通过 MAC 协议接口 `MACSymbolBars` 查询证券 K 线并逐根打印行情字段。
Command mac_symbol_bars 演示通过 MAC 协议接口 `MACSymbolBars` 查询证券 K 线并逐根打印行情字段。
mac_symbol_belong_board command
Command mac_symbol_belong_board 演示查询证券所属板块列表,并打印板块类型、代码、名称与价格。
Command mac_symbol_belong_board 演示查询证券所属板块列表,并打印板块类型、代码、名称与价格。
mac_symbol_info command
Command mac_symbol_info 演示通过 MAC 协议接口 `MACSymbolInfo` 查询单只证券的行情摘要信息并打印。
Command mac_symbol_info 演示通过 MAC 协议接口 `MACSymbolInfo` 查询单只证券的行情摘要信息并打印。
mac_symbol_quotes command
Command mac_symbol_quotes 演示通过 MAC 协议批量查询沪深两只证券的动态报价并打印命中字段与取值。
Command mac_symbol_quotes 演示通过 MAC 协议批量查询沪深两只证券的动态报价并打印命中字段与取值。
mac_tick_charts command
Command mac_tick_charts 演示通过 MAC 协议查询最近多个交易日的分时图及其逐时点价格并打印。
Command mac_tick_charts 演示通过 MAC 协议查询最近多个交易日的分时图及其逐时点价格并打印。
mac_transactions command
Command mac_transactions 演示通过 MAC 协议查询证券逐笔成交明细,并打印时间、价格、数量与买卖方向。
Command mac_transactions 演示通过 MAC 协议查询证券逐笔成交明细,并打印时间、价格、数量与买卖方向。
main_experimental command
Command main_experimental 演示主站若干语义未公开的试验协议:逐条发起请求,打印应答长度与原始十六进制预览。
Command main_experimental 演示主站若干语义未公开的试验协议:逐条发起请求,打印应答长度与原始十六进制预览。
stock_all command
Command stock_all 演示一次性拉取深市、沪市、北交所全部证券代码,按普通股票类型过滤后打印代码与名称并统计数量。
Command stock_all 演示一次性拉取深市、沪市、北交所全部证券代码,按普通股票类型过滤后打印代码与名称并统计数量。
stock_batch_quotes command
Command stock_batch_quotes 演示批量查询多只沪深证券的行情快照,并打印价格、涨跌额、成交量、涨速与换手率。
Command stock_batch_quotes 演示批量查询多只沪深证券的行情快照,并打印价格、涨跌额、成交量、涨速与换手率。
stock_block_raw command
Command stock_block_raw 演示板块文件的元信息查询、分块下载与整包下载,并分别按扁平列表、按板块分组两种方式解析板块文件。
Command stock_block_raw 演示板块文件的元信息查询、分块下载与整包下载,并分别按扁平列表、按板块分组两种方式解析板块文件。
stock_block_raw_cache command
Command stock_block_raw_cache 演示板块文件能力(`block.go` 导出方法)的缓存调用: 首次调用回源下载文件并解析、结果写入 `Redis`,二次调用直接命中缓存不再触碰行情源, 通过 `Stats` 观察命中/回源计数变化。
Command stock_block_raw_cache 演示板块文件能力(`block.go` 导出方法)的缓存调用: 首次调用回源下载文件并解析、结果写入 `Redis`,二次调用直接命中缓存不再触碰行情源, 通过 `Stats` 观察命中/回源计数变化。
stock_company_raw command
Command stock_company_raw 演示公司资料分类、章节正文、财务摘要、除权除息记录以及聚合打包接口的原始结果获取与打印。
Command stock_company_raw 演示公司资料分类、章节正文、财务摘要、除权除息记录以及聚合打包接口的原始结果获取与打印。
stock_count command
Command stock_count 演示分别查询深市、沪市、北交所三个市场的证券总数并打印。
Command stock_count 演示分别查询深市、沪市、北交所三个市场的证券总数并打印。
stock_f10_block command
Command stock_f10_block 演示查询证券 F10 资料打包结果,并加载概念板块清单打印前若干条板块成分。
Command stock_f10_block 演示查询证券 F10 资料打包结果,并加载概念板块清单打印前若干条板块成分。
stock_feature_452 command
Command stock_feature_452 演示调用试验协议 `0x452` 拉取证券特征记录,并打印市场、代码与两个待确认语义的特征数值。
Command stock_feature_452 演示调用试验协议 `0x452` 拉取证券特征记录,并打印市场、代码与两个待确认语义的特征数值。
stock_history command
Command stock_history 演示查询指定历史日期的历史分时图与历史逐笔成交两类数据,并分别打印字段。
Command stock_history 演示查询指定历史日期的历史分时图与历史逐笔成交两类数据,并分别打印字段。
stock_history_transaction_with_trans command
Command stock_history_transaction_with_trans 演示查询指定历史日期带买卖方向标注的逐笔成交明细,并打印时间、价格、数量与方向。
Command stock_history_transaction_with_trans 演示查询指定历史日期带买卖方向标注的逐笔成交明细,并打印时间、价格、数量与方向。
stock_index_tools command
Command stock_index_tools 演示指数实时信息、指数动量序列、指数 K 线以及分时采样价格四类指数相关接口的查询与打印。
Command stock_index_tools 演示指数实时信息、指数动量序列、指数 K 线以及分时采样价格四类指数相关接口的查询与打印。
stock_kline command
Command stock_kline 演示通过统一接口 StockKLine 查询沪深市场 K 线并逐根打印字段。
Command stock_kline 演示通过统一接口 StockKLine 查询沪深市场 K 线并逐根打印字段。
stock_kline_offset command
Command stock_kline_offset 演示通过偏移分页接口 `StockKLineOffset` 查询日 K 线,并逐根打印开高低收、成交量与换手率。
Command stock_kline_offset 演示通过偏移分页接口 `StockKLineOffset` 查询日 K 线,并逐根打印开高低收、成交量与换手率。
stock_list command
Command stock_list 演示按市场、偏移与数量分页查询证券清单,并打印代码、名称、昨收价与成交量单位。
Command stock_list 演示按市场、偏移与数量分页查询证券清单,并打印代码、名称、昨收价与成交量单位。
stock_list_old command
Command stock_list_old 演示使用旧版证券列表协议查询深市证券清单,并打印代码、名称、昨收价与成交量单位。
Command stock_list_old 演示使用旧版证券列表协议查询深市证券清单,并打印代码、名称、昨收价与成交量单位。
stock_lowlevel_quote command
Command stock_lowlevel_quote 演示不经过统一封装,直接调用低层协议依次完成握手连接、证券计数、列表、快照、分时与逐笔查询。
Command stock_lowlevel_quote 演示不经过统一封装,直接调用低层协议依次完成握手连接、证券计数、列表、快照、分时与逐笔查询。
stock_market_watch command
Command stock_market_watch 演示集合竞价、涨幅榜、异动提示与成交分布等市场监控数据的查询与打印。
Command stock_market_watch 演示集合竞价、涨幅榜、异动提示与成交分布等市场监控数据的查询与打印。
stock_paged_list command
Command stock_paged_list 演示先查询市场证券总数,再按固定页大小逐页翻页遍历深市证券列表,并打印每页首尾证券。
Command stock_paged_list 演示先查询市场证券总数,再按固定页大小逐页翻页遍历深市证券列表,并打印每页首尾证券。
stock_quotes command
Command stock_quotes 演示通过统一接口 `StockQuotesDetail` 批量查询沪深证券主行情快照,并打印时间、价格、成交量与换手率。
Command stock_quotes 演示通过统一接口 `StockQuotesDetail` 批量查询沪深证券主行情快照,并打印时间、价格、成交量与换手率。
stock_quotes_encrypt command
Command stock_quotes_encrypt 演示加密行情快照协议批量查询沪深证券报价,并打印最新价、开高低收与买卖盘档位数量。
Command stock_quotes_encrypt 演示加密行情快照协议批量查询沪深证券报价,并打印最新价、开高低收与买卖盘档位数量。
stock_quotes_list command
Command stock_quotes_list 演示按板块分类、排序方式与数量查询行情排行榜列表,并打印价格、涨跌额、成交额与换手率。
Command stock_quotes_list 演示按板块分类、排序方式与数量查询行情排行榜列表,并打印价格、涨跌额、成交额与换手率。
stock_server_info command
Command stock_server_info 演示主站握手、服务器心跳、服务器信息、主站公告与交易所公告等服务端信息接口的查询与预览打印。
Command stock_server_info 演示主站握手、服务器心跳、服务器信息、主站公告与交易所公告等服务端信息接口的查询与预览打印。
stock_tick command
Command stock_tick 演示查询证券当日分时图序列,并打印每个时点的价格、均价与累计成交量。
Command stock_tick 演示查询证券当日分时图序列,并打印每个时点的价格、均价与累计成交量。
stock_transaction command
Command stock_transaction 演示查询证券当日逐笔成交明细,并打印时间、价格、笔数与买卖方向。
Command stock_transaction 演示查询证券当日逐笔成交明细,并打印时间、价格、笔数与买卖方向。
unified_watchlist command
Command unified_watchlist 演示统一客户端在同一会话内同时查询 A 股行情、A 股 K 线、港股与美股报价以及扩展市场分时采样。
Command unified_watchlist 演示统一客户端在同一会话内同时查询 A 股行情、A 股 K 线、港股与美股报价以及扩展市场分时采样。
Package proto 实现通达信行情协议的请求构造与响应解码,是 `gotdx` 客户端的协议层。
Package proto 实现通达信行情协议的请求构造与响应解码,是 `gotdx` 客户端的协议层。
Package types 提供 `gotdx` 客户端与协议共用的共享类型、枚举常量与代码工具。
Package types 提供 `gotdx` 客户端与协议共用的共享类型、枚举常量与代码工具。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
⌂ 换网址