3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您遇到的现象并非 API 的 Bug,而是交易所的订单撮合规则导致的正常现象。
在您的代码中,使用了 price_type = xtconstant.MARKET_PEER_PRICE_FIRST(对手方最优价格委托)。
根据交易所规则,对手方最优价格委托的含义是:
当股票涨停时,盘口上的卖单通常已经被全部吃光(即卖一价不存在或卖一量为0)。此时,如果您提交“对手方最优价格”的买单,交易所系统在盘口上找不到对手方(卖方)的价格,无法确定您的委托价,因此会直接将该笔委托作废(状态变为“已撤”或“废单”)。
而当股票未涨停时,盘口有正常的卖一价,所以订单能够正常下达并成交。
要在涨停板上买入股票,您的目的是以涨停价在买一位置排队。为了实现这一点,您需要更改 price_type(报价类型)。
以下是两种推荐的修改方案:
无论股票是否涨停,直接计算出该股票的涨停价,并以**限价单(FIX_PRICE)**的方式申报。这样即使涨停,您的订单也会以涨停价加入买一的排队队列中。
# 假设您已经获取到了该股票的涨停价 limit_up_price
order_id = self.xt_trader.order_stock(
self.account,
stock_code=xq_stock_code,
order_type=xtconstant.STOCK_BUY,
order_volume=buy_vol,
price=limit_up_price, # 传入具体的涨停价格
price_type=xtconstant.FIX_PRICE, # 改为指定价/限价单
strategy_name=remark,
order_remark=''
)
如果您不想手动计算涨停价,可以使用 MARKET_MINE_PRICE_FIRST(本方最优价格委托)。
order_id = self.xt_trader.order_stock(
self.account,
stock_code=xq_stock_code,
order_type=xtconstant.STOCK_BUY,
order_volume=buy_vol,
price=price,
price_type=xtconstant.MARKET_MINE_PRICE_FIRST, # 改为本方最优价格委托
strategy_name=remark,
order_remark=''
)
注意:使用本方最优时,如果盘口瞬间剧烈波动导致买一价回落,您的委托价也会随之变为回落后的买一价,可能无法保证一定是涨停价打板。因此,严格的打板策略通常采用方案一。