| 功能 | 状态 | 主要方法 |
|---|---|---|
| 盘口(5档报价) | ✅ 已完成 | GetQuote |
| 代码数量/列表 | ✅ 已完成 | GetCount GetCode GetCodeAll |
| 分时图 / 历史分时图 | ✅ 已完成 | GetMinute GetHistoryMinute |
| 分时成交 / 历史分时成交 | ✅ 已完成 | GetTrade GetHistoryTrade |
| K线 / 历史K线 / 指数 | ✅ 已完成 | GetKline* GetIndex* |
| 股本变迁(除权除息) | ✅ 已完成 | GetGbbq GetGbbqAll |
| 前/后复权(对齐通达信) | ✅ 已完成 | Gbbq.QFQKlineDay HFQKlineDay QFQ HFQ |
| 集合竞价 | ✅ 已完成 | GetCallAuction |
| 财务信息 | ✅ 已完成 | GetFinanceInfo |
| F10 公司资料 | ✅ 已完成 | GetCompanyCategory GetCompanyContent |
| 板块成分(地域/概念/指数) | ✅ 已完成 | GetBlockData GetBlockDataWithIndex |
| 行业归属(通达信/申万) | ✅ 已完成 | GetTdxHy |
| 报表/配置文件下载 | ✅ 已完成 | GetReportFile GetZHBFiles |
| 板块指数代码(id)映射 | ✅ 已完成 | GetTdxZs GetTdxBk |
| 个股统计 / 资金流向 | ✅ 已完成 | GetTdxStat GetTdxStat2 |
| 新股申购 | ✅ 已完成 | GetXgsg |
| 扩展行情(期货/港股/外盘) | ✅ 已完成 | DialExHq + ExQuote ExBars ExTrade 等 |
package main
import (
"fmt"
"github.com/injoyai/tdx"
)
func main() {
// 连接服务器,开启日志,支持断线重连
c, err := tdx.Dial("124.71.187.122:7709", tdx.WithDebug(), tdx.WithRedial())
if err != nil {
panic(err)
}
// 获取行情
resp, err := c.GetQuote("sz000001", "sh600008")
if err != nil {
panic(err)
}
for _, v := range resp {
fmt.Printf("%#v\n", v)
}
<-c.Done()
}板块成分文件(block_*.dat)本身不含板块指数代码(id),id 映射在 tdxzs.cfg(全称),而成分文件用简称,二者经 tdxbk.cfg(简称↔全称) 桥接。GetBlockDataWithIndex 自动完成关联(命中率约 100%)。
c, _ := tdx.DialDefault()
defer c.Close()
// 板块成分 + 板块指数代码(id)。file 可选: protocol.BlockFileGN(概念)/FG(地域风格)/ZS(指数)
blocks, _ := c.GetBlockDataWithIndex(protocol.BlockFileGN)
for _, b := range blocks {
fmt.Printf("板块=%s id=%s 类型=%d 成分数=%d\n", b.Name, b.Index, b.Type, len(b.Codes))
}
// 仅成分(无 id, 不额外下载 zhb.zip)
plain, _ := c.GetBlockData(protocol.BlockFileGN)
_ = plain复权基于股本变迁(gbbq)的除权除息事件做仿射变换 price_adj = QFQMul × price_raw + QFQAdd,
结果四舍五入到分(2 位小数),与电脑端通达信桌面端逐日对齐(含配股、大比例送转、股改停牌复合事件均已实盘核验)。
成交量/额不复权。Gbbq 内置 gbbq 数据自动更新与本地缓存(sqlite)。
c, _ := tdx.DialDefault()
defer c.Close()
gb, _ := tdx.NewGbbq(tdx.WithGbbqClient(c)) // 首次会拉取并缓存 gbbq
// 方式一: 一步到位拉取全量历史 + 复权
qfq, _ := gb.QFQKlineDay("sh600519") // 前复权日线
hfq, _ := gb.HFQKlineDay("sh600519") // 后复权日线
for _, k := range qfq {
fmt.Printf("%s 开%.2f 高%.2f 低%.2f 收%.2f\n",
k.Time.Format("2006-01-02"), k.Open.Float64(), k.High.Float64(), k.Low.Float64(), k.Close.Float64())
}
// 方式二: 已有不复权 K 线时直接复权
resp, _ := c.GetKlineDayAll("sh600519")
qfq2 := gb.QFQ("sh600519", resp.List)
_ = qfq2
// 方式三: 仅取复权因子(每个除权区间一个仿射系数), 自行施加
fs := gb.GetFactors("sh600519", resp.List)
for _, f := range fs {
_ = f.QFQPrice(protocol.Yuan(100)) // 对任意原始价做前复权
}价格类型
protocol.Price为 int64, 单位厘(元×1000),.Float64()得元。股票最小变动 0.01 元(分),ETF/可转债/指数到 0.001 元(厘)。 完整演示见example/GetQFQKline。
c, _ := tdx.DialDefault()
defer c.Close()
// 财务/基本面: 流通股本/总股本/上市日期/股东户数/净利润等
fi, _ := c.GetFinanceInfo(protocol.ExchangeSH, "600519")
fmt.Println(fi.LiuTongGuBen, fi.ZongGuBen, fi.GuDongRenShu, fi.JingLiRun)
// F10 公司资料: 先取分类, 再读正文
cats, _ := c.GetCompanyCategory(protocol.ExchangeSH, "600519")
content, _ := c.GetCompanyContent(protocol.ExchangeSH, "600519", cats[0].Filename, cats[0].Start, cats[0].Length)
_ = content
// 行业归属(通达信新行业 T + 申万行业 X), 全市场
hy, _ := c.GetTdxHy()
for _, v := range hy { _ = v.TdxHy; _ = v.SwHy }通达信板块/配置文件以 zhb.zip 总包经 report file 协议(0x06B9)整体下发,含 44 个文件(tdxzs.cfg/tdxbk.cfg/incon.dat/tdxstat.cfg 等)。
// 任意报表文件原始字节(无需预查大小, 自动分块拉取)
raw, _ := c.GetReportFile("zhb.zip")
// 下载 zhb.zip 并解压 → 文件名→原始字节
files, _ := c.GetZHBFiles()
for name := range files { fmt.Println(name) }
// 板块名↔指数代码(id) / 概念简称↔全称
zs, _ := c.GetTdxZs() // []*protocol.TdxZs{Name, Code(880xxx), Type, ...}
bk, _ := c.GetTdxBk() // []*protocol.TdxBk{Short, Full}
_ = zs; _ = bk来自 zhb.zip 的全市场逐股数据。tdxstat.cfg 字段经 10 只大市值股对照实盘核验(见 protocol/model_stat.go 命中率注释),未核验字段保留在 Fields。
// 个股综合统计: 市盈TTM/静态市盈/股息率/涨跌幅/连涨连跌天数/区间涨跌幅(5/10/20/60日/YTD, 均已核验)
stat, _ := c.GetTdxStat()
for _, s := range stat {
fmt.Printf("%s PE_TTM=%.2f 静PE=%.2f 股息=%.2f%% 连涨跌=%d 5日=%.2f%% 20日=%.2f%% YTD=%.2f%%\n",
s.Code, s.PETTM, s.PEStatic, s.DivYield, s.TrendDays, s.Chg5, s.Chg20, s.ChgYTD)
}
// 资金流向 + 板块归属(股→板块id 反向映射)
stat2, _ := c.GetTdxStat2()
s2b := protocol.StockBlockIndex(stat2) // map[证券代码]板块指数代码
_ = s2b
// 新股申购
xgsg, _ := c.GetXgsg()
for _, x := range xgsg {
fmt.Printf("%s %s 申购日=%s 发行价=%.3f\n", x.Code, x.Name, x.Date, x.IssuePrice)
}完整演示见
example/DumpReportFile:下载 zhb.zip、解压、解析、板块 id 关联一条龙。
扩展行情走独立服务(端口 7727),需用 DialExHq* 单独连接。
ex, err := tdx.DialExHqDefault() // 或 DialExHq(addr) / DialExHqHosts(hosts)
if err != nil { panic(err) }
defer ex.Close()
markets, _ := ex.ExMarkets() // 市场代码表
n, _ := ex.ExCount() // 品种数量
insts, _ := ex.ExInstruments(0, 100) // 品种(代码)列表分页
q, _ := ex.ExQuote(market, code) // 单品种五档行情
bars, _ := ex.ExBars(category, market, code, 0, 20) // K线
ticks, _ := ex.ExTrade(market, code, 0, 30) // 分笔成交
_ = markets; _ = n; _ = insts; _ = q; _ = bars; _ = ticks| IP | 测试时间 | 运营商 | 结果 |
|---|---|---|---|
| 124.71.187.122 | 2026-05-16 | 华为 | ✅️ |
| 122.51.120.217 | 2026-05-16 | 腾讯 | ✅️ |
| 111.229.247.189 | 2026-05-16 | 腾讯 | ✅️ |
| 122.51.232.182 | 2026-05-16 | 腾讯 | ✅️ |
| 118.25.98.114 | 2026-05-16 | 腾讯 | ✅️ |
| 124.70.199.56 | 2026-05-16 | 华为 | ✅️ |
| 121.36.225.169 | 2026-05-16 | 华为 | ✅️ |
| 123.60.70.228 | 2026-05-16 | 华为 | ✅️ |
| 123.60.73.44 | 2026-05-16 | 华为 | ✅️ |
| 124.70.133.119 | 2026-05-16 | 华为 | ✅️ |
| 124.71.187.72 | 2026-05-16 | 华为 | ✅️ |
| 123.60.84.66 | 2026-05-16 | 华为 | ✅️ |
| 124.223.163.242 | 2026-05-16 | 腾讯云 | ✅️ |
| 150.158.160.2 | 2026-05-16 | 腾讯云 | ✅️ |
| 101.35.121.35 | 2026-05-16 | 腾讯云 | ✅️ |
| 111.231.113.208 | 2026-05-16 | 腾讯云 | ✅️ |
| IP | 测试时间 | 运营商 | 结果 |
|---|---|---|---|
| 62.234.50.143 | 2026-05-16 | 腾讯云 | ✅️ |
| 81.70.151.186 | 2026-05-16 | 腾讯云 | ✅️ |
| 101.42.240.54 | 2026-05-16 | 腾讯云 | ✅️ |
| 101.43.159.194 | 2026-05-16 | 腾讯云 | ✅️ |
| 120.53.8.251 | 2026-05-16 | 腾讯云 | ✅️ |
| 152.136.191.169 | 2026-05-16 | 腾讯云 | ✅️ |
| 49.232.15.141 | 2026-05-16 | 腾讯云 | ✅️ |
| 82.156.174.84 | 2026-05-16 | 腾讯云 | ✅️ |
| 101.42.164.241 | 2026-05-16 | 腾讯云 | ✅️ |
| IP | 测试时间 | 运营商 | 结果 |
|---|---|---|---|
| 124.71.9.153" | 2026-05-16 | 华为 | ✅️ |
| 116.205.163.254" | 2026-05-16 | 华为 | ✅️ |
| 116.205.171.132" | 2026-05-16 | 华为 | ✅️ |
| 116.205.183.150" | 2026-05-16 | 华为 | ✅️ |
| 111.230.186.52" | 2026-05-16 | 腾讯 | ✅️ |
| 110.41.2.72" | 2026-05-16 | 华为 | ✅️ |
| 110.41.147.114" | 2026-05-16 | 华为 | ✅️ |
| 101.33.225.16" | 2026-05-16 | 腾讯云 | ✅️ |
| 175.178.112.197" | 2026-05-16 | 腾讯云 | ✅️ |
| 175.178.128.227" | 2026-05-16 | 腾讯云 | ✅️ |
| 43.139.95.83" | 2026-05-16 | 腾讯云 | ✅️ |
| 159.75.29.111" | 2026-05-16 | 腾讯云 | ✅️ |
| 43.139.18.171" | 2026-05-16 | 腾讯云 | ✅️ |
| 81.71.32.47" | 2026-05-16 | 腾讯云 | ✅️ |
| 129.204.230.128" | 2026-05-16 | 腾讯云 | ✅️ |
| IP | 测试时间 | 运营商 | 结果 |
|---|---|---|---|
| 119.97.185.59 | 2026-01-26 | 电信 | ✅️ |
- 本项目仅供 学习、研究和技术交流 使用,禁止用于任何商业或非法用途。
- 使用本项目产生的任何数据、损失或法律责任,作者 不承担任何责任。
- 对第三方服务器或服务的访问,用户需自行遵守相关法律法规及服务协议。
- 请勿将本项目用于侵犯他人权益或违反监管规定的行为。
MIT License - 详见 LICENSE
⭐ 喜欢这个项目吗?点个 Star 支持一下吧!