港股通交易偶尔会有废单的情况。

09:29:08,快手的买单不在交易时间段,成为了废单。
需要对交易时间做个简单的判断,避开不可下单的时间段。
开市前时段
●9:00-9:15:为竞价买卖盘时段,投资者可以申报,也可以撤单。
●9:15-9:20:是对盘前时段,投资者可以申报,但不可以撤单。
●9:20-9:28:为对盘时段,投资者不可以进行申报,也不可以撤单,系统会对委托予以对盘撮合。
●9:28-9:30:为暂停时段,不可申报,不可撤单,也不进行任何处理。
收盘竞价时段
● 16:00-16:01:不可挂单、撤单。
● 16:01-16:06:可挂单撤单。
● 16:06-16:08:可挂单、不可撤单。
● 16:08-16:10:可挂单、不可撤单,在这一时间段随机收市。
因此,9:20-9:30和16:00-16:01阶段,港股通不可下单。除了这两个阶段,港股通12:00-12:30也不可下单,但这个时间段本来也没有k线tick,不会运行handlebar,就不需要判断了。
def is_hk_trading_restricted(stock_code):
"""
检查港股通是否处于不可下单时段
港股通不可下单时段:
- 9:20-9:30: 开市前对盘/暂停时段,不可下单
- 16:00-16:01: 收市竞价暂停时段,不可下单
返回: (is_restricted, reason)
"""
# 只检查港股通标的
if not (stock_code.endswith('.SGT') or stock_code.endswith('.HGT')):
return False, ""
_, _, _, dt = get_current_time_info() # dt 已是中国时区 (UTC+8)
# 用 hour/minute 直接比较,避免 time 对象的 tzinfo 问题
current_minutes = dt.hour * 60 + dt.minute # 当前时间转为分钟数
# 9:20-9:30 不可下单(开市前对盘/暂停时段)
if 9 * 60 + 20
return True, f"港股通 处于开市前对盘/暂停时段(9:20-9:30),不可下单"
# 16:00-16:01 不可下单(收市竞价暂停时段)
if 16 * 60
return True, f"港股通 处于收市竞价暂停时段(16:00-16:01),不可下单"
return False, ""











