# 获取分笔行情get_tick_data

# 根据股票代码和日期,获取指定日期的分笔成交数据

get_tick_data(
    stock_code: str,
    date: str,
    startxh: int = 0,
    wantnum: int = 0
) -> Dict
1
2
3
4
5
6

# 输入参数

参数 是否必选 参数类型 参数说明
stock_code Y str 单只证券代码,例如 688318.SH
date Y str 分笔数据日期,支持 YYYYMMDD、YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS
startxh N int 起始分笔序号,从 0 开始
wantnum N int 请求返回的分笔数据条数,建议取值范围为 1~2000

# 返回数据

数据字段 默认返回 数据类型 数据说明
BSFlag N List[str] 买卖方向 0买 1卖 2未知
Price Y List[str] 成交价格
Time Y List[str] 成交时间
TotalNum N int / str 分笔数据总数
Volume Y List[str] 成交量

# 接口使用

获取 688318.SH 在 2026-08-20 的前 10 条分笔成交数据。

from tqserver import tqs

ticks = tqs.get_tick_data(
    stock_code="688318.SH",
    date="2026-08-20",
    startxh=0,
    wantnum=10,
)

print(ticks)
1
2
3
4
5
6
7
8
9
10

# 数据样本

{
    "BSFlag": ["2", "0", "0", "1", "1", "1", "1", "1", "0", "1"],
    "Price": ["76.26", "76.61", "76.62", "76.61", "76.61", "76.61", "76.61", "76.71", "76.97", "76.62"],
    "Time": ["092504", "093000", "093003", "093006", "093009", "093014", "093018", "093022", "093026", "093030"],
    "TotalNum": 10,
    "Volume": ["43", "2", "9", "29", "7", "18", "6", "19", "16", "53"]
}
1
2
3
4
5
6
7

# 获取指定日期分时数据 get_minute_data

# 根据单只股票代码和日期,获取指定交易日的分时数据

get_minute_data(
    stock_code: str = "",
    date: str = "",
    field_list: Optional[Iterable[str]] = None
) -> Dict
1
2
3
4
5

# 输入参数

参数 是否必选 参数类型 参数说明
stock_code Y str 单只证券代码,例如 000001.SZ
date Y str 查询日期,支持 YYYYMMDDYYYY-MM-DD 或完整时间格式
field_list N Iterable[str] / None 返回字段筛选,传 None 或空列表时返回全部字段

# 参数说明

  • stock_code 只支持传入单只证券代码,不传股票列表。
  • 股票代码需要带市场后缀,例如:
    • 000001.SZ
    • 600000.SH
    • 688318.SH
  • date 支持以下格式:
20260821
2026-08-21
2026-08-21 00:00:00
1
2
3
  • field_list 不传、传 None 或传空列表时,返回全部字段。
  • field_list 非空时,只返回指定字段。
  • 字段名称区分大小写,应使用接口返回的原始字段名。

# 返回数据

返回 dict,当前实际返回字段如下:

Average
Price
Time
TotalNum
Volume
1
2
3
4
5
数据字段 数据类型 数据说明
TotalNum int 本次返回的分时记录数
Time List[str] 分时数据时间,格式通常为 HHMMSS
Price List[str] 分时成交价格
Average List[str] 分时均价
Volume List[str] 分时成交量
  • TimePriceAverageVolume 是并行数组。
  • 同一数组下标的数据属于同一条分时记录。
  • TotalNum 表示本次返回的分时记录数量。
  • 使用 field_list 筛选后,返回结果只保留指定字段,可能不再包含 TotalNum

# 接口使用

获取 000001.SZ2026-08-21 的全部分时数据。

from tqserver import tqs

minute_data = tqs.get_minute_data(
    stock_code="000001.SZ",
    date="2026-08-21",
)

print(minute_data)
1
2
3
4
5
6
7
8

# 字段筛选使用

获取 000001.SZ2026-08-21 的分时时间和价格。

from tqserver import tqs

minute_data = tqs.get_minute_data(
    stock_code="000001.SZ",
    date="2026-08-21",
    field_list=["Time", "Price"],
)

print(minute_data)
1
2
3
4
5
6
7
8
9

# 数据样本

{
    "Average": [
        "11.39",
        "11.39",
        "11.39"
    ],
    "Price": [
        "11.36",
        "11.36",
        "11.37"
    ],
    "Time": [
        "093000",
        "093100",
        "093200"
    ],
    "TotalNum": 240,
    "Volume": [
        "3049",
        "1737",
        "1547"
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 注意事项

  • 返回数据是否完整取决于指定股票和日期是否有可用分时数据。
  • 日期不是交易日、股票代码无效或服务端没有数据时,可能返回空结果。

# 获取指数成分股 get_zzgz_stocklist

# 根据指数代码,获取指定指数的成分股列表

get_zzgz_stocklist(
    index_code: str = "",
    list_type: int = 0
) -> List
1
2
3
4

# 输入参数

参数 是否必选 参数类型 参数说明
index_code Y str 指数代码,例如 000300.SH
list_type N int 成分股返回类型,默认值为 0

# 参数说明

  • index_code 必须传入指数代码,不能为空。
  • 指数代码建议带市场后缀,例如:
000300.SH
000905.SH
000852.SH
1
2
3
  • list_type 默认值为 0
  • list_type 的具体枚举含义由底层 TdxAiData.dll 数据服务定义。
  • 当前已验证:
get_zzgz_stocklist(
    index_code="000300.SH",
    list_type=0,
)
1
2
3
4

可以返回沪深 300 成分股代码列表。

# 返回数据

返回 listdict,当前 list_type=0 的实际返回类型为股票代码列表。

返回列表中的股票代码带市场后缀,例如:

000001.SZ
000002.SZ
000063.SZ
600000.SH
1
2
3
4

# 接口使用

获取沪深 300 指数 000300.SH 的成分股列表。

from tqserver import tqs

stock_list = tqs.get_zzgz_stocklist(
    index_code="000300.SH",
    list_type=0,
)

print(stock_list)
1
2
3
4
5
6
7
8

# 数据样本

[
    "000001.SZ",
    "000002.SZ",
    "000063.SZ",
    "000100.SZ",
    "000157.SZ",
    "000166.SZ",
    "000301.SZ",
    "000333.SZ",
    "000338.SZ",
    "000408.SZ"
]
1
2
3
4
5
6
7
8
9
10
11
12

# 实际返回说明

使用以下参数进行实际验证:

tqs.get_zzgz_stocklist(
    index_code="000300.SH",
    list_type=0,
)
1
2
3
4

实际返回:

返回类型:list
返回数量:300
1
2

# 注意事项

  • index_code 不能为空。
  • list_type 必须为整数。
  • 指数代码无效、指数市场不支持或服务端没有数据时,可能返回空列表或空对象。

# 订阅实时行情 subscribe

# 订阅指定股票的实时行情,通过回调函数接收真实行情数据,并可保存到本地文件

subscribe(
    stock_list: List[str] = [],
    callback: Optional[Callable[[str], Any]] = None
) -> None
1
2
3
4

# 输入参数

参数 是否必选 参数类型 参数说明
stock_list Y List[str] 待订阅的证券代码列表
callback Y Callable 行情回调函数,接收一个行情数据字符串参数

# 参数说明

  • stock_list 必须传入股票代码列表,不能为空。
  • 股票代码需要带市场后缀,例如:
    • 000001.SZ
    • 600000.SH
    • 600519.SH
  • callback 必须是可调用对象。
  • 回调函数只接收一个参数:
data: str
1
  • data 是底层行情服务返回的 JSON 字符串。
  • subscribe 调用成功后,行情数据会通过回调函数异步返回。
  • subscribe 本身不会返回行情数据。
  • 主程序需要持续运行,否则 Python 进程退出后将无法继续接收行情。
  • 取消订阅使用:
unsubscribe(stock_list)
1

# 返回数据

subscribe 本身返回:

None
1

实时行情通过回调函数返回,回调参数为 JSON 字符串。

实际回调数据的基本结构如下:

{
    "Error": "",
    "ErrorId": 0,
    "ResultSets": [
        {
            "ColDes": [
                "code",
                "decimal",
                "price",
                "pre_close",
                "open",
                "high",
                "low",
                "refresh_time",
                "volume",
                "bond_match_price",
                "limit_up",
                "limit_down",
                "accrued_interest",
                "cage_up",
                "cage_down",
                "after_hours_flag",
                "tomorrow_limit_up",
                "tomorrow_limit_down",
                "sdunit_status",
                "seal_amount",
                "ask1",
                "ask2",
                "ask3",
                "ask4",
                "ask5",
                "ask_vol1",
                "ask_vol2",
                "ask_vol3",
                "ask_vol4",
                "ask_vol5",
                "bid1",
                "bid2",
                "bid3",
                "bid4",
                "bid5",
                "bid_vol1",
                "bid_vol2",
                "bid_vol3",
                "bid_vol4",
                "bid_vol5"
            ],
            "Content": [
                [
                    "000001.SZ",
                    2,
                    11.350,
                    11.400,
                    11.360,
                    11.430,
                    11.340,
                    95024,
                    155267,
                    0.0,
                    12.540,
                    10.260,
                    5.490,
                    11.590,
                    11.120,
                    0,
                    0.0,
                    0.0,
                    3,
                    0.0,
                    11.360,
                    11.370,
                    11.380,
                    11.390,
                    11.400,
                    343,
                    1043,
                    1276,
                    1396,
                    6887,
                    11.350,
                    11.340,
                    11.330,
                    11.320,
                    11.310,
                    1061,
                    2660,
                    4393,
                    4078,
                    5048
                ]
            ]
        }
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

# 返回字段

ColDes 是字段名数组,Content 是数据数组。

Content 中每一行数据与 ColDes 按相同下标对应。

字段 数据说明
code 证券代码
decimal 价格小数位数或价格精度
price 最新价
pre_close 昨收价
open 开盘价
high 最高价
low 最低价
refresh_time 行情刷新时间,通常为 HHMMSS 数字
volume 成交量
bond_match_price 债券匹配价格
limit_up 涨停价
limit_down 跌停价
accrued_interest 应计利息
cage_up 上限价格
cage_down 下限价格
after_hours_flag 盘后标志
tomorrow_limit_up 下一交易日涨停价
tomorrow_limit_down 下一交易日跌停价
sdunit_status 证券状态
seal_amount 封单金额
ask1 ~ ask5 五档卖价
ask_vol1 ~ ask_vol5 五档卖量
bid1 ~ bid5 五档买价
bid_vol1 ~ bid_vol5 五档买量

# 接口使用

订阅 000001.SZ600000.SH600519.SH 的实时行情,并持续运行 30 秒。

import time

from tqserver import tqs


def on_quote(data: str) -> None:
    print("收到实时行情:")
    print(data)


stock_list = [
    "000001.SZ",
    "600000.SH",
    "600519.SH",
]

subscribed = False

try:
    tqs.subscribe(
        stock_list=stock_list,
        callback=on_quote,
    )
    subscribed = True

    print("订阅成功")
    print("当前订阅列表:")
    print(tqs.get_subscribe_hq_stock_list())

    time.sleep(30)

finally:
    if subscribed:
        tqs.unsubscribe(stock_list)
        print("已取消订阅")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 解析回调数据

import json

from tqserver import tqs


def on_quote(data: str) -> None:
    try:
        quote_data = json.loads(data)

        if quote_data.get("ErrorId") not in (0, "0", None):
            print("行情服务返回错误:", quote_data)
            return

        result_sets = quote_data.get("ResultSets", [])

        for result_set in result_sets:
            field_names = result_set.get("ColDes", [])
            content = result_set.get("Content", [])

            for row in content:
                quote = dict(zip(field_names, row))
                print(
                    quote.get("code"),
                    quote.get("price"),
                    quote.get("volume"),
                )

    except json.JSONDecodeError:
        print("回调数据不是有效 JSON:", data)
    except Exception as exc:
        print("解析行情回调失败:", exc)


stock_list = ["000001.SZ"]

try:
    tqs.subscribe(stock_list, on_quote)
    input("订阅已建立,按回车取消订阅...")
finally:
    tqs.unsubscribe(stock_list)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# 注意事项

  • subscribe 不会自动为业务程序创建永久运行逻辑。
  • 如果调用 subscribe 后程序没有其他阻塞逻辑,主线程执行结束后程序会退出。
  • 可以使用 while True、事件等待或其他业务循环保持程序运行。
  • subscribe 回调收到的是原始 JSON 字符串,不是已经转换好的字典。
  • 需要使用 json.loads(data) 将回调字符串解析为 Python 对象。
  • Content 中每行数据与 ColDes 按下标对应。
  • 行情回调可能在短时间内连续触发多次。
  • 回调函数不建议执行耗时计算、网络请求或长时间文件操作。
  • 保存数据时建议使用追加写入方式,避免覆盖之前的行情记录。
  • 策略程序必须保持运行,否则订阅会随 Python 进程退出而终止。
  • 程序退出前应调用 unsubscribe 释放订阅。
  • 当前底层取消订阅为全局取消订阅,即使传入部分股票,也可能取消全部底层订阅。

# 取消实时行情订阅 unsubscribe

####取消指定股票的实时行情订阅

unsubscribe() -> None
1

# 返回数据

unsubscribe 无返回数据,返回值为:

None
1

# 接口使用

订阅两只股票,运行 30 秒后取消订阅。

import time

from tqserver import tqs


stock_list = [
    "000001.SZ",
    "600000.SH",
]

subscribed = False

try:
    tqs.subscribe(
        stock_list=stock_list,
        callback=lambda data: print(data),
    )
    subscribed = True

    print("当前订阅列表:")
    print(tqs.get_subscribe_hq_stock_list())

    time.sleep(30)

finally:
    if subscribed:
        tqs.unsubscribe()
        print("已取消订阅")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 注意事项

  • 取消订阅后,不再接收对应行情回调。
  • 当前实现为全局取消订阅接口,不是只取消传入的部分股票。
  • 如果需要保留其他股票的订阅,应在取消后重新调用 subscribe
  • 建议在 finally 代码块中调用 unsubscribe,确保程序异常退出时也能释放订阅。