通达信行情协议的 Go 客户端,覆盖主行情、扩展市场、MAC 板块/统一行情、F10/文件接口,以及一个可直接运行的 Web Viewer。
快速开始 · 能力概览 · 示例 · Web Viewer · API 速览 · 测试 · 协议文档
gotdx 把通达信协议里常用的查询能力整理成更偏 Go 的调用方式。你可以直接查主行情和扩展市场的快照、K 线、分时、逐笔,也可以继续往下钻到 F10、财务、板块文件、扩展表格和 MAC 板块协议;如果只是想先看接口返回长什么样,仓库里还带了一个可以直接打开的网页查看器。
- 一个
Client同时管理主站和扩展市场,适合做统一监控和跨市场抓取。 - 提供两套入口:高阶统一接口
Stock* / Ex* / MAC*,以及面向协议细节的底层Get* / ExGet*。 - 地址池、超时、重试都可配,适合对接不稳定的真实行情站点。
- 内置主站、扩展、MAC、券商 host/IP 列表,并支持 TCP 测速选最快节点。
- 自带 30+ 个示例,覆盖从列表、快照、K 线、分时到 F10、板块、扩展表格。
- 自带
cmd/webviewer,不写代码也能直接调方法、填参数、看返回字段。 - 协议实现、示例和 Web Viewer 已整理为统一风格,便于继续补协议、核字段和排查差异。
go get github.com/bensema/gotdxpackage main
import (
"log"
"github.com/bensema/gotdx"
)
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.WithAutoSelectFastest(true),
gotdx.WithTimeoutSec(6),
)
defer client.Disconnect()
stocks, err := client.StockQuotesDetail(
[]uint8{gotdx.MarketSZ, gotdx.MarketSH},
[]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{gotdx.ExCategoryUSStock},
[]string{"TSLA"},
)
if err != nil {
log.Fatal(err)
}
for _, item := range exQuotes {
log.Printf("ex: %+v", item)
}
}- 想尽快拿到业务数据:优先用
Stock* / Ex* / MAC*统一高阶入口。 - 想逐个协议排查字段:用
Get* / ExGet* / GetMAC*底层接口。 - 想先确认请求参数和返回格式:直接运行
go run ./cmd/webviewer。
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.WithAutoSelectFastest(true),
gotdx.WithTimeoutSec(6),
)可用列表包括:MainHosts、BrokerHosts、ExHosts、MACHosts、MACExHosts,以及对应的 *HostAddresses 便捷函数。
| 模块 | 典型能力 | 代表接口 |
|---|---|---|
| 主行情 | 股票/指数列表、快照、K 线、分时、逐笔、指数工具、异动、集合竞价 | StockQuotesDetail, StockKLine, StockIndexInfo, StockUnusual, StockAuction |
| 扩展市场 | 美股/港股/期货等扩展标的列表、报价、K 线、历史成交、表格 | ExQuotes, ExKLine, ExHistoryTransaction, ExTable |
| F10 与文件 | 公司信息分类、正文、财务、除权除息、文件下载、板块文件 | GetCompanyInfo, GetFinanceInfo, GetXDXRInfo, DownloadFullFile |
| MAC 协议 | 板块列表、成分股、成分报价、动态成分报价、单只快照、所属板块、统一 K 线 | MACBoardList, MACBoardMembers, MACBoardMembersWithSort, MACBoardMembersQuotes, MACBoardMembersQuotesWithSort, MACBoardMembersQuotesDynamic, MACQuotes, MACSymbolBars |
| 协议调试 | 原始协议响应、扩展实验接口、网页查看器 | MainTodoB, MainClient26AD, ExExperiment2487, cmd/webviewer |
proto/: 各协议的请求/响应序列化与反序列化实现。client_quote.go: 主行情底层接口。client_exquote.go: 扩展市场底层接口。client_mac.go: MAC 协议接口。client_unified.go:Stock* / Ex* / MAC*高阶统一入口。cmd/webviewer/: 浏览器调试界面。examples/: 可直接运行的示例。
下面这些命令可以直接运行:
| 场景 | 命令 |
|---|---|
| 主行情快照 | 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_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 |
| 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_quotes / go run ./examples/mac_symbol_belong_board / go run ./examples/mac_symbol_bars |
| 统一监控示例 | go run ./examples/unified_watchlist |
查看完整示例目录
examples/stock_countexamples/stock_server_infoexamples/stock_listexamples/stock_list_oldexamples/stock_paged_listexamples/stock_batch_quotesexamples/stock_quotesexamples/stock_quotes_encryptexamples/stock_lowlevel_quoteexamples/stock_quotes_listexamples/stock_klineexamples/stock_kline_offsetexamples/stock_feature_452examples/stock_index_toolsexamples/stock_tickexamples/stock_historyexamples/stock_history_transaction_with_transexamples/stock_market_watchexamples/host_probeexamples/stock_transactionexamples/stock_f10_blockexamples/stock_company_rawexamples/stock_block_rawexamples/main_experimentalexamples/ex_countexamples/ex_quoteexamples/ex_listexamples/ex_list_extraexamples/ex_paged_listexamples/ex_quotesexamples/ex_quotes2examples/ex_quotes_listexamples/ex_klineexamples/ex_kline2examples/ex_board_listexamples/ex_experiment_2487examples/ex_experiment_2488examples/ex_mapping_2562examples/ex_historyexamples/ex_tickexamples/ex_server_infoexamples/ex_samplingexamples/ex_category_listexamples/ex_tableexamples/ex_table_detailexamples/mac_board_listexamples/mac_board_membersexamples/mac_board_members_quotesexamples/mac_board_members_quotes_dynamicexamples/mac_quotesexamples/mac_symbol_belong_boardexamples/mac_symbol_barsexamples/unified_watchlist
仓库内置了一个轻量的网页查看器,适合在这些场景下使用:
- 先确认某个方法应该填哪些参数。
- 快速查看返回字段,而不是先写一段测试代码。
- 对照 MAC 动态位图字段,直接看
bit/name/format/description。 - 直接检查主站文件、表格文件和 CSV 文件的结构化结果。
- 对比不同主机返回的数据差异。
- 调试实验协议或原始接口。
启动:
go run ./cmd/webviewer默认地址:
http://127.0.0.1:8080
StockQuotesDetail、StockQuotesList、StockQuotes、StockKLine、StockKLineOffset、StockVolumeProfile会在可获取到流通股本时尽力补齐Turnover。- 主行情:
StockCount,StockList,StockQuotesDetail,StockKLine,StockTickChart,StockIndexInfo,StockIndexMomentum,StockChartSampling,StockAuction,StockTopBoard,StockUnusual,StockVolumeProfile,StockHistoryOrders,StockHistoryTransaction,StockF10 - 扩展市场:
ExCount,ExList,ExQuote,ExQuotes,ExKLine,ExTickChart,ExHistoryTransaction,ExTable - MAC:
MACBoardList,MACBoardMembers,MACBoardMembersWithSort,MACBoardMembersQuotes,MACBoardMembersQuotesWithSort,MACBoardMembersQuotesDynamic,MACQuotes,MACSymbolBelongBoard,MACSymbolBars
- 主行情:
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
- 内置列表:
MainHosts,BrokerHosts,ExHosts,MACHosts,MACExHosts - 地址便捷函数:
MainHostAddresses,BrokerHostAddresses,ExHostAddresses,MACHostAddresses,MACExHostAddresses - 测速函数:
ProbeHosts,ProbeAddresses,FastestHost,FastestAddress - 客户端能力:
Client.ProbeHosts,Client.FastestHost,WithAutoSelectFastest
- 主站试验:
MainTodoB,MainTodoFDE,MainClient264B,MainClient26AC,MainClient26AD,MainClient26AE,MainClient26B1 - 主站兼容:
StockListOld,StockFeature452,StockQuotesEncrypt,StockKLineOffset,StockHistoryTransactionWithTrans - 扩展试验:
ExListExtra,ExExperiment2487,ExExperiment2488,ExKLine2,ExMapping2562
查看更完整的接口分组
Connect,DisconnectGetExchangeAnnouncement,GetServerHeartbeat,GetAnnouncement,GetServerInfoGetSecurityCount,GetSecurityQuotes,GetQuotesDetail,GetQuotesEncryptGetSecurityList,GetSecurityListOld,GetSecurityListRangeGetKLine,GetSecurityBars,GetSecurityBarsOffset,GetIndexBarsGetIndexMomentum,GetIndexInfo,GetMinuteTimeData,GetTickChart,GetHistoryMinuteTimeData,GetHistoryTickChartGetChartSampling,GetAuction,GetTopBoard,GetUnusualGetTransactionData,GetHistoryOrders,GetHistoryTransactionData,GetHistoryTransactionDataWithTrans
GetCompanyCategories,GetCompanyContent,GetFinanceInfo,GetXDXRInfo,GetCompanyInfoGetFileMeta,DownloadFile,DownloadFullFileGetBlockFile,GetTableFile,GetCSVFile,GetParsedBlockFile,GetGroupedBlockFile
ConnectEx,GetExServerInfoExGetCount,ExGetCategoryList,ExGetList,ExGetListExtraExGetQuotesList,ExGetQuote,ExGetQuotes,ExGetQuotes2ExGetKLine,ExGetKLine2ExGetHistoryTransaction,ExGetTickChart,ExGetHistoryTickChart,ExGetChartSamplingExGetBoardList,ExGetMapping2562ExGetFileMeta,ExDownloadFile,ExDownloadFullFileExGetTable,ExGetTableDetail
NewMAC,NewMACEx,ConnectMACGetMACBoardCount,GetMACBoardList,GetMACBoardMembers,GetMACBoardMembersQuotes,GetMACBoardMembersQuotesDynamic,GetMACQuotesGetMACSymbolBelongBoard,GetMACSymbolBarsMACBoardCount,MACBoardList,MACBoardMembers,MACBoardMembersWithSort,MACBoardMembersQuotes,MACBoardMembersQuotesWithSort,MACBoardMembersQuotesDynamic,MACQuotesMACSymbolBelongBoard,MACSymbolBars- 位图辅助:
DefaultMACBoardMembersQuotesFieldBitmap,FullMACBoardMembersQuotesFieldBitmap,MACBoardMembersQuotesFieldBitmapFromBits
单元测试:
go test ./...连接真实站点的集成测试默认跳过;如需开启:
GOTDX_INTEGRATION=1 go test ./...- TdxProtocol.md: 协议分析笔记
- docs/images/webviewer-screenshot.png: Web Viewer 截图
本项目使用 MIT License 开源,详见 LICENSE。
