跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.tickflow.org/llms.txt

Use this file to discover all available pages before exploring further.

K 线数据

klines.get() 默认返回最近 100 根 K 线。如需更多数据,请显式设置 count 参数:
# 默认只返回 100 根
df = tf.klines.get("600000.SH", period="1d", as_dataframe=True)
print(len(df))  # 100

# 设置 count 获取更多
df = tf.klines.get("600000.SH", period="1d", count=10000, as_dataframe=True)
print(len(df))  # 取决于该标的可用数据量
也可以通过 start_timeend_time 指定时间范围来获取数据。
TickFlow 支持 5 种复权方式,通过 adjust 参数指定:
adjust说明算法
"none"不复权原始价格
"forward"前复权-比例(默认乘除法,价格 × 累计复权因子
"backward"后复权-比例乘除法,价格 × 累计复权因子
"forward_additive"前复权-差值加减法,价格 ± 累计差值
"backward_additive"后复权-差值加减法,价格 ± 累计差值
东方财富、同花顺等软件默认使用的是差值前复权(加减法),对应 adjust="forward_additive"TickFlow 的默认值 "forward" 是比例前复权(乘除法),两者结果不同。如需与这些软件的价格对齐,请使用 "forward_additive"
# 比例前复权(TickFlow 默认)
df_ratio = tf.klines.get("600000.SH", period="1d", count=1000, adjust="forward", as_dataframe=True)

# 差值前复权(东方财富/同花顺默认,价格与这些软件一致)
df_additive = tf.klines.get("600000.SH", period="1d", count=1000, adjust="forward_additive", as_dataframe=True)

# 不复权
df_raw = tf.klines.get("600000.SH", period="1d", count=1000, adjust="none", as_dataframe=True)

# 比例后复权
df_back = tf.klines.get("600000.SH", period="1d", count=1000, adjust="backward", as_dataframe=True)

# 差值后复权
df_back_add = tf.klines.get("600000.SH", period="1d", count=1000, adjust="backward_additive", as_dataframe=True)
比例 vs 差值的区别:比例复权保持涨跌幅不变(适合收益率计算),差值复权保持价差不变(适合与行情软件对比价格)。如需查看除权因子:
factors = tf.klines.ex_factors(["600000.SH"], as_dataframe=True)
print(factors)
付费订阅一般不会触发频率限制。如果遇到,大概率是用法问题——逐只标的循环调用单只接口会产生大量请求。推荐使用批量接口,一次请求获取多只标的的数据:
# ❌ 不推荐:逐只调用,100 只标的 = 100 次请求
for symbol in symbols:
    df = tf.klines.get(symbol, period="1d", count=1000, as_dataframe=True)

# ✅ 推荐:批量接口,100 只标的 = 1 次请求
dfs = tf.klines.batch(
    symbols,
    period="1d",
    count=1000,
    as_dataframe=True,
    show_progress=True,
)
# dfs 是 dict[str, DataFrame]
print(dfs["600000.SH"].tail())
日内分钟线同理:
# ✅ 批量获取日内分钟 K 线
dfs = tf.klines.intraday_batch(symbols, as_dataframe=True, show_progress=True)
周期参数值说明
1 分钟1m需付费订阅
5 分钟5m从 1m 聚合
15 分钟15m从 1m 聚合
30 分钟30m从 1m 聚合
60 分钟60m从 1m 聚合
日线1d免费服务可用
周线1w从日线聚合
月线1M从日线聚合
季线1Q从日线聚合
年线1Y从日线聚合
免费服务仅支持日线及以上周期,分钟级 K 线需付费订阅。

行情数据

请依次检查:1. 确认标的代码格式正确标的代码格式为 代码.市场后缀,例如 600000.SHAAPL.US00700.HK常见错误:
  • 600000 — 缺少市场后缀
  • SH600000 — 后缀位置错误
  • 600000.sh — 后缀必须大写
2. 确认系统中存在该标的使用标的信息查询接口确认:
inst = tf.instruments.get("600000.SH")
if inst:
    print(f"找到标的: {inst['symbol']} - {inst['name']}")
else:
    print("标的不存在,请检查代码是否正确")
3. 确认标的属于已支持的市场目前支持的市场后缀:SHSZBJ(A 股)、SHFDCEZCECFXINEGFE(期货)、US(美股)、HK(港股)。4. 确认数据时段
  • 实时行情仅在交易时段有更新
  • 免费服务的日 K 数据为盘后更新,盘中不会实时变动
免费服务付费服务
实时行情✅ 盘中实时更新
分钟 K 线
日 K 线✅ 盘后更新✅ 盘中实时更新
WebSocket 推送✅ 需开启 WebSocket 实时行情功能
频率限制较严格宽松
免费服务地址:https://free-api.tickflow.org
tf = TickFlow.free()  # 使用免费服务

标的代码

使用标的池接口查看:
# 列出所有标的池
universes = tf.universes.list()
for u in universes:
    print(f"{u['id']}: {u['name']} ({u['symbol_count']} 只)")

# 获取某个标的池的全部标的
a_shares = tf.universes.get("CN_Equity_A")
print(f"A 股共 {len(a_shares['symbols'])} 只")
格式为 代码.市场后缀(英文点号分隔),后缀必须大写。
后缀市场示例
SH上海证券交易所600000.SH
SZ深圳证券交易所000001.SZ
BJ北京证券交易所920662.BJ
SHF上海期货交易所au2604.SHF
DCE大连商品交易所i2605.DCE
ZCE郑州商品交易所CF505.ZCE
CFX中国金融期货交易所IF2504.CFX
US美股AAPL.US
HK港股00700.HK

连接问题

如果在使用 TickFlow API 时遇到连接超时(timeout)、连接被拒绝(connection refused)等问题,请按以下步骤逐步排查:第一步:测试网络连通性分别 ping 如下 API 端点,观察延迟和丢包率,选择表现更好的端点:
ping api.tickflow.org
ping hk-api.tickflow.org
ping sg-api.tickflow.org
ping us-api.tickflow.org
选择延迟低、丢包少的端点作为你的 API 地址。第二步:测试 HTTPS 访问使用 curl 测试能否正常建立 HTTPS 连接:
curl -v https://api.tickflow.org
curl -v https://hk-api.tickflow.org
curl -v https://sg-api.tickflow.org
curl -v https://us-api.tickflow.org
返回 404 是正常的(根路径没有对应的页面),说明连接已经成功建立。关键是观察 TLS 握手和连接建立过程是否正常。如果连接失败且 curl 输出中显示走了代理(proxy),请尝试关闭代理或确保代理配置正确。
第三步:通过 Python SDK 验证确认网络畅通后,使用 SDK 实际发起一次数据请求来验证端到端连通性:
from tickflow import TickFlow

# 使用默认端点
tf = TickFlow(api_key="your-api-key")
df = tf.klines.get("000001.SZ", period="1d", count=5, as_dataframe=True)
print(df)

# 如果默认端点不通,尝试备用端点
tf_hk = TickFlow(api_key="your-api-key", base_url="https://hk-api.tickflow.org")
df_hk = tf_hk.klines.get("000001.SZ", period="1d", count=5, as_dataframe=True)
print(df_hk)

tf_sg = TickFlow(api_key="your-api-key", base_url="https://sg-api.tickflow.org")
df_sg = tf_sg.klines.get("000001.SZ", period="1d", count=5, as_dataframe=True)
print(df_sg)
如果能获取到 K 线数据,说明连接正常。如果仍然失败,请检查:
  • 是否开启了 VPN/代理,尝试关闭后重试
  • 防火墙是否拦截了 HTTPS 出站流量
  • DNS 解析是否正常(可尝试 nslookup api.tickflow.org
下面的 API 端点提供完全相同的服务,区别仅在于部署位置:
端点说明
https://api.tickflow.org默认端点
https://hk-api.tickflow.org备用端点,部分地区访问更稳定
https://sg-api.tickflow.org备用端点,亚太地区访问更稳定
https://us-api.tickflow.org备用端点,欧美地区访问更稳定
建议根据实际网络测试结果(ping 延迟和丢包率)选择更适合的端点。

WebSocket 实时行情

WebSocket 实时行情是独立的付费功能,需要:
  • 订阅 Expert 套餐(已包含 WebSocket 实时行情),或
  • 自定义套餐中单独开启「WebSocket 实时行情」功能
每个连接的最大订阅标的数由套餐决定(Expert 默认 100 个标的)。
  • 401:API Key 无效或过期,请检查 Key 是否正确
  • 403:当前套餐不包含 WebSocket 实时行情功能,需升级套餐
遇到 401/403 时不应自动重连,请先检查 API Key 和套餐权限。
不会。连接断开后服务端自动清除该连接的所有订阅。重连后需要重新发送 subscribe 恢复订阅。使用 Python SDK 时,SDK 会自动处理断线重连和订阅恢复。