讯投 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 或周末,返回:
    非交易时段

功能说明

  1. 判断交易日:仅周一到周五有效,周末返回非交易时段。
  2. 标准交易时段:包括集合竞价、连续竞价和收盘竞价。
  3. 科创/创业板盘后交易:15:05-15:30 额外判断。
  4. 撤单规则:集合竞价部分时段不可撤单(如 9:20-9:25)。

如果需要进一步扩展(如节假日判断),当天是不是交易日,请阅读我们提供的另外一个讯投qmt使用小技巧: 如何判断今天是不是交易日 https://invest.wtsolutions.cn/posts/qmt-is-today-a-trading-day

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值