Skip to content

Python SDK 历史 K 线开启夜盘后仍无法返回 20:00-04:00 ET 数据 #1088

@imcamo

Description

@imcamo

Python SDK 历史 K 线开启夜盘后仍无法返回 20:00-04:00 ET 数据

你好,我们在使用 Python SDK 拉取美股历史 1m K 线时,发现即使账号已有 Nasdaq Basic、并且开启了 overnight 配置,history_candlesticks_by_offset(..., TradeSessions.All) 仍然不会返回美股夜盘 20:00-04:00 ET 数据。

环境

  • Python SDK: longbridge 4.3.2
  • 也测试过旧包:longport 3.0.23
  • Symbol: NVDA.US, QQQ.US, SPY.US
  • Period: Period.Min_1
  • AdjustType: AdjustType.ForwardAdjust
  • Trade session: TradeSessions.All
  • 环境变量:
    • LONGBRIDGE_ENABLE_OVERNIGHT=true
    • LONGPORT_ENABLE_OVERNIGHT=true

账号行情包

quote_package_details() 可以看到:

US_QBBO: 纳斯达克 Basic 行情 | 纳斯达克实时成交行情及最优买卖一档报价

根据最新文档,夜盘行情已包含在 Nasdaq Basic 中免费提供,仅需开启 LONGBRIDGE_ENABLE_OVERNIGHT=true

参考文档:

复现代码

from datetime import datetime
from zoneinfo import ZoneInfo

from longbridge.openapi import Config, QuoteContext, Period, AdjustType, TradeSessions

config = Config.from_apikey(
    app_key,
    app_secret,
    access_token,
    enable_overnight=True,
)

ctx = QuoteContext(config)

ny = ZoneInfo("America/New_York")

for start in [
    datetime(2026, 6, 11, 20, 0, tzinfo=ny),
    datetime(2026, 6, 11, 23, 0, tzinfo=ny),
    datetime(2026, 6, 12, 2, 0, tzinfo=ny),
    datetime(2026, 6, 12, 3, 59, tzinfo=ny),
]:
    rows = ctx.history_candlesticks_by_offset(
        "NVDA.US",
        Period.Min_1,
        AdjustType.ForwardAdjust,
        True,
        20,
        start,
        TradeSessions.All,
    )

    first = rows[0] if rows else None
    print(start, len(rows), first.timestamp if first else None, first.trade_session if first else None)

实际结果

从夜盘窗口内任意时间开始请求,第一根都跳到 04:00 ET 的盘前数据:

start=2026-06-11T20:00:00-04:00 -> first=2026-06-12T04:00:00-04:00 session=TradeSession.Pre
start=2026-06-11T23:00:00-04:00 -> first=2026-06-12T04:00:00-04:00 session=TradeSession.Pre
start=2026-06-12T02:00:00-04:00 -> first=2026-06-12T04:00:00-04:00 session=TradeSession.Pre
start=2026-06-12T03:59:00-04:00 -> first=2026-06-12T04:00:00-04:00 session=TradeSession.Pre

同时按日期拉取一天数据:

rows = ctx.history_candlesticks_by_date(
    "NVDA.US",
    Period.Min_1,
    AdjustType.ForwardAdjust,
    date(2026, 6, 12),
    date(2026, 6, 12),
    TradeSessions.All,
)

返回 960 根,即 04:00-19:59 ET,sessions 只有:

TradeSession.Pre
TradeSession.Intraday
TradeSession.Post

没有 Overnight

期望结果

根据文档,开启 enable_overnight=true 且账号已有 Nasdaq Basic 后,历史 K 线使用所有延长时段时应该可以返回:

20:00-04:00 ET

的夜盘数据。

问题

请帮忙确认:

  1. Python SDK 的 TradeSessions.All 是否等价于历史 K 线文档里的 trade_session=100
  2. 如果不是,Python SDK 应该如何传 raw trade_session=100
  3. 如果 TradeSessions.All 已经等价于 trade_session=100,为什么账号已有 US_QBBOenable_overnight=true 时,历史 K 线仍然只返回 Pre / Intraday / Post,不返回 Overnight
  4. 是否需要更新 Python SDK 或服务端配置,才能让历史 K 线返回 overnight bars?

谢谢。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions