3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在上海证券交易所科创板股票交易中,为了防止由于市场流动性不足导致的异常大幅滑点,交易所规定市价申报必须包含保护限价(Protection Limit Price)。ptrade 平台通过 order_market 函数提供了对科创板市价单及保护限价的完整支持。
order_market 用于在交易模块中按指定市价类型进行下单委托。
order_market(security, amount, market_type, limit_price=None)
'688500.SS'。0: 对手方最优价格1: 最优五档即时成交剩余转限价2: 本方最优价格4: 最优五档即时成交剩余撤销在挂科创板市价单时,保护限价的设置需结合实时行情快照(get_snapshot)或涨跌停价:
买入时的保护限价应高于当前最新价或卖一价(如加上一定比例的容忍滑点,如 1%~2%),但不能超过涨停价。
卖出时的保护限价应低于当前最新价或买一价(如扣除一定比例的容忍滑点),但不能低于跌停价。
以下示例展示了如何在 ptrade 盘中 handle_data 事件中,获取科创板股票快照并安全地挂出带保护限价的市价单:
def initialize(context):
g.security = '688500.SS' # 科创板标的
set_universe(g.security)
def handle_data(context, data):
security = g.security
snapshot = get_snapshot(security)
if not snapshot or security not in snapshot:
log.error("获取行情快照失败")
return
last_price = snapshot[security]['last_px']
up_limit = snapshot[security]['up_px']
down_limit = snapshot[security]['down_px']
# 示例1:以“最优五档即时成交剩余撤销(market_type=4)”买入 100 股
# 保护限价设置为当前最新价上涨 1.5%,且不超过涨停价
buy_limit_price = round(min(last_price * 1.015, up_limit), 2)
order_market(security, 100, market_type=4, limit_price=buy_limit_price)
log.info("挂出科创板买入市价单,保护限价: %s" % buy_limit_price)
# 示例2:卖出 100 股,保护限价设置为当前最新价下跌 1.5%,且不低于跌停价
# sell_limit_price = round(max(last_price * 0.985, down_limit), 2)
# order_market(security, -100, market_type=4, limit_price=sell_limit_price)
round(price, 2)),如果入参精度不符合柜台规范会导致委托失败报废单。limit_price 可能会被券商柜台直接打回(废单)。check_limit(security) 检查股票是否已处于涨跌停状态,避免在跌停板上挂市价卖单或涨停板上挂市价买单。