【PTrade】PTrade如何判断涨停或跌停?check_limit()完整教程

  本方案由 EasyQuant AI量化助手 提供。

问题背景

实盘策略中,股票触及涨跌停后,普通买卖逻辑可能无法正常成交。若不提前判断涨跌停状态,容易出现买入失败、卖出失败或重复委托。

PTrade 提供 check_limit() 接口,可快速获取股票当前的涨跌停状态。

状态说明

  • 2:触板涨停,已到涨停价但仍有卖盘。

  • 1:涨停。

  • 0:未涨停、未跌停。

  • -1:跌停。

  • -2:触板跌停,已到跌停价但仍有买盘。

完整代码示例

def initialize(context):
    g.stocks = [
        "510300.SS",
        "600519.SS",
        "000001.SZ"
    ]

    set_universe(g.stocks)


def handle_data(context, data):
    # 批量查询涨跌停状态
    limit_status = check_limit(g.stocks)

    if not limit_status:
        log.info("未获取到涨跌停状态")
        return

    for stock in g.stocks:
        status = limit_status.get(stock, 0)

        if status == 1:
            log.info("%s 当前涨停,不追涨买入" % stock)

        elif status == 2:
            log.info("%s 当前触板涨停,存在开板风险" % stock)

        elif status == -1:
            log.info("%s 当前跌停,卖出可能无法成交" % stock)

        elif status == -2:
            log.info("%s 当前触板跌停,关注买盘变化" % stock)

        else:
            log.info("%s 当前未触及涨跌停" % stock)


def can_buy(stock):
    """
    涨停或触板涨停时不买入。
    """
    status = check_limit(stock).get(stock, 0)

    return status not in [1, 2]


def can_sell(stock):
    """
    跌停或触板跌停时不卖出。
    """
    status = check_limit(stock).get(stock, 0)

    return status not in [-1, -2]


def trade_example(context, data):
    stock = "510300.SS"

    # 买入前检查涨停状态
    if can_buy(stock):
        order(stock, 100)
        log.info("提交买入委托:%s" % stock)
    else:
        log.info("涨停状态,不提交买入委托")

注意事项

  1. check_limit() 仅支持 PTrade 交易模块。

  2. 触板状态不等于一定成交,盘口可能随时变化。

  3. 涨跌停判断应与持仓、未完成订单和可用资金检查一起使用。

  4. 股票无涨跌停限制时,不能仅按普通涨跌停逻辑处理。

  5. 避免在每个极短周期内反复查询和反复下单。

总结

check_limit() 是 PTrade 实盘策略的重要交易状态接口。将其加入买入、卖出和撤单逻辑中,可减少涨跌停环境下的无效委托。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值