讯投 QMT 使用小技巧:判断当前时段是交易/非交易/竞价/盘后等时间段
A股的交易时间段
A股的交易时段分为开盘集合竞价、连续竞价(早盘、午盘)和收盘集合竞价三个阶段,具体时间如下:
1. 交易日安排
- 周一至周五(法定节假日除外)
- 不交易:周末(周六、周日)和法定节假日(如春节、国庆节等)。
2. 交易时段明细
时段 | 时间 | 备注 |
---|---|---|
开盘集合竞价 | 9:15 - 9:25 | - 9:15-9:20:可申报或撤单。- 9:20-9:25:可申报,不可撤单。 |
早盘连续竞价 | 9:30 - 11:30 | 正常交易时段,可自由买卖。 |
午间休市 | 11:30 - 13:00 | 不接受委托,未成交的订单仍有效。 |
午盘连续竞价 | 13:00 - 14:57 | 正常交易时段。 |
收盘集合竞价 | 14:57 - 15:00 | 可申报,不可撤单,以最大成交量撮合收盘价。 |
3. 其他规则
- 科创板(688开头) & 创业板(300开头):
- 新增盘后固定价格交易(15:05-15:30),按当日收盘价成交(需手动挂单)。
- 大宗交易:
- 通常为15:00-15:30,需满足最低交易数量或金额门槛。
注意事项
- 非交易时段(如夜间)的委托单会被暂存,次日9:15进入系统。
- 集合竞价的成交价格遵循“最大成交量”原则,所有交易按同一价格成交。
QMT中的函数判断
以下是一个 Python 函数,用于判断当前时间属于 A 股的哪个交易时段(包括科创板和创业板的盘后交易),如果不是交易时段则返回 “非交易时段”:
import datetime
def get_a_share_trading_period():
now = datetime.datetime.now()
current_time = now.time()
weekday = now.weekday() # 0-4 是周一到周五
# 检查是否为交易日(周一至周五,非节假日)
if weekday >= 5: # 周六、周日
return "非交易时段(周末休市)"
# 定义交易时段
trading_periods = [
{"name": "开盘集合竞价", "start": "09:15:00", "end": "09:25:00", "can_cancel": True},
{"name": "早盘连续竞价", "start": "09:30:00", "end": "11:30:00", "can_cancel": True},
{"name": "午间休市", "start": "11:30:00", "end": "13:00:00", "can_cancel": False},
{"name": "午盘连续竞价", "start": "13:00:00", "end": "14:57:00", "can_cancel": True},
{"name": "收盘集合竞价", "start": "14:57:00", "end": "15:00:00", "can_cancel": False},
]
# 科创板和创业板的盘后交易(15:05-15:30)
kechuang_cyb_period = {"name": "科创/创业板盘后交易", "start": "15:05:00", "end": "15:30:00", "can_cancel": False}
# 检查当前是否在交易时段
for period in trading_periods:
start_time = datetime.datetime.strptime(period["start"], "%H:%M:%S").time()
end_time = datetime.datetime.strptime(period["end"], "%H:%M:%S").time()
if start_time <= current_time <= end_time:
return f"{period['name']}(可撤单: {'是' if period['can_cancel'] else '否'})"
# 检查是否在科创/创业板盘后交易时段
kechuang_start = datetime.datetime.strptime(kechuang_cyb_period["start"], "%H:%M:%S").time()
kechuang_end = datetime.datetime.strptime(kechuang_cyb_period["end"], "%H:%M:%S").time()
if kechuang_start <= current_time <= kechuang_end:
return f"{kechuang_cyb_period['name']}(按收盘价交易,不可撤单)"
# 不在任何交易时段
return "非交易时段"
# 测试
print(get_a_share_trading_period())
输出示例
- 如果当前时间是 09:20:00,返回:
开盘集合竞价(可撤单: 是)
- 如果当前时间是 12:30:00,返回:
午间休市(可撤单: 否)
- 如果当前时间是 15:15:00,返回:
科创/创业板盘后交易(按收盘价交易,不可撤单)
- 如果当前时间是 16:00:00 或周末,返回:
非交易时段
功能说明
- 判断交易日:仅周一到周五有效,周末返回非交易时段。
- 标准交易时段:包括集合竞价、连续竞价和收盘竞价。
- 科创/创业板盘后交易:15:05-15:30 额外判断。
- 撤单规则:集合竞价部分时段不可撤单(如 9:20-9:25)。
如果需要进一步扩展(如节假日判断),当天是不是交易日,请阅读我们提供的另外一个讯投qmt使用小技巧: 如何判断今天是不是交易日 https://invest.wtsolutions.cn/qmt-is-today-a-trading-day。
扫码添加我的微信,或关注 WTSolutions微信公众号
