Metadata-Version: 2.4
Name: tdx-python
Version: 0.1.5
Summary: Python 通达信 SDK
Home-page: https://github.com/lyj0309/tdx-py
Author: lyj0309
License: MIT
Project-URL: 源代码, https://github.com/lyj0309/tdx-py
Project-URL: Go 核心, https://github.com/lyj0309/tdx
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-python
Dynamic: summary

# tdx-python

一个 Python 通达信 SDK，可用于连接通达信行情服务器，获取实时行情、个股 K 线和
指数 K 线数据。

## 安装

```bash
pip install tdx-python
```

当前预编译包支持 Python 3.12、3.13、3.14，以及 Linux x86_64、
Windows x86_64、macOS x86_64 和 Apple Silicon（arm64）。

## 快速开始

```python
from tdx_py import api

# 地址留空时自动选择可用行情服务器。
client = api.dial("", 5000, True)

try:
    quotes = client.get_quote(["sz000001", "sh600519"])
    for quote in quotes:
        print(quote.code, quote.kline.close / 1000)

    # category=9 表示日 K 线。
    page = client.get_kline(9, "sh600519", 0, 100)
    for item in page.list:
        print(item.time, item.open / 1000, item.close / 1000, item.volume)

    # 结构化结果是强类型模型，不是 dict。
    securities = client.get_code(api.EXCHANGE_SH, 0)
    for security in securities.list:
        print(security.code, security.name)

    finance = client.get_finance_info(api.EXCHANGE_SH, "600519")
    print(finance.code, finance.jing_li_run)
finally:
    client.close()
```

证券代码需要市场前缀，例如 `sz000001`、`sh600519`。价格字段使用整数保存，单位为
人民币千分之一元，除以 `1000` 即可得到以元为单位的价格。

## 功能范围

| 模块 | 主要接口 |
| --- | --- |
| 连接 | `dial`、`dial_ex_hq`、`set_timeout`、`close` |
| 证券与行情 | `get_count`、`get_code`、`get_code_all`、`get_quote`、`get_call_auction` |
| K 线 | `get_kline*`、`get_index*`，包含全部周期的分页、全量和按时间接口 |
| 分时成交 | `get_minute*`、`get_trade*`、`get_history_trade*` |
| 资料数据 | `get_gbbq*`、`get_company*`、`get_finance_info` |
| 板块文件 | `get_block*`、`get_tdx_*`、`get_sp_block`、`get_xgsg` |
| 扩展行情 | `ex_markets`、`ex_quote*`、`ex_bars*`、`ex_minute*`、`ex_trade*` |

K 线周期常用值：`0` 为 5 分钟、`1` 为 15 分钟、`2` 为 30 分钟、`3` 为
60 分钟、`5` 为周线、`6` 为月线、`7` 为 1 分钟、`9` 为日线、`10` 为季线、
`11` 为年线。

结构化结果返回带完整字段类型的 `dataclass` 模型，字段名为 `snake_case`；K 线返回
`KlinePage`，原始文件返回 `bytes`。包内附带 `py.typed` 和类型声明，IDE 与 mypy
可以直接检查参数、返回值和字段。连接失败、参数错误或请求失败时会抛出
`RuntimeError`。全部公开方法、具体模型、参数、返回值和示例请查看
[GitHub README](https://github.com/lyj0309/tdx-py#readme)。

底层协议实现复用 [`lyj0309/tdx`](https://github.com/lyj0309/tdx)。
