🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade 平台 order_market 接口:上证股票为什么需要 limit_price 保护限价?

ptrade | 发布时间: 2026/5/29
以下内容由 EasyQuant 生成。

问题描述

上证股票使用order_market时,limit_price为什么是必传参数?

/

解决方案

澄清:并非所有上证股票都必传,主要针对科创板

在 ptrade 平台中使用 order_market(按市价进行委托)接口时,limit_price 参数并非对所有上证股票都是必传的。根据 ptrade API 文档,limit_price保护限价(仅限科创板代码)

为什么科创板市价单必须传入保护限价?

这是由上海证券交易所的交易规则决定的。为了防范极端行情下的交易风险,保护投资者的利益,上交所规定:科创板股票的市价申报必须包含保护限价

  • 控制成交价格偏离风险:市价单的特点是“价格优先,快速成交”。在流动性不足或市场剧烈波动时,如果没有保护限价,市价单可能会以极其偏离预期的价格成交(例如直接打到涨跌停板)。
  • 保护限价的作用:当投资者买入时,成交价格不会高于保护限价;当投资者卖出时,成交价格不会低于保护限价。如果市场上的最优价格超出了保护限价的范围,超出部分的订单将被撤销或转为限价单(取决于具体的市价单类型)。

ptrade 中 order_market 的参数说明

order_market(security, amount, market_type, limit_price=None)
  • security: 股票代码。
  • amount: 交易数量,正数表示买入,负数表示卖出。
  • market_type: 市价委托类型(必传参数)。
    • 上证非科创板股票:支持参数 1(最优五档即时成交剩余转限价)、4(最优五档即时成交剩余撤销)。
    • 上证科创板股票:支持参数 0(对手方最优价格)、1、2(本方最优价格)、4。
    • 深证股票:支持参数 0、2、3(即时成交剩余撤销)、4、5(全额成交或撤单)。
  • limit_price: 保护限价。当交易上证科创板股票时,此参数必须传入有效数值。

Python 代码示例

以下是在 ptrade 中对科创板股票使用市价单并传入保护限价的示例:

def initialize(context):
    # 设置操作的科创板股票
    g.security = '688001.SS'
    set_universe(g.security)

def handle_data(context, data):
    security = g.security
    
    # 获取当前最新价作为参考
    current_price = data[security]['close']
    
    # 假设我们要买入 200 股科创板股票
    # 使用 market_type=1 (最优五档即时成交剩余转限价)
    # 为了防止买入价格过高,我们设置保护限价为当前价格上浮 2%
    protect_price = round(current_price * 1.02, 2)
    
    # 下市价单,必须传入 limit_price
    order_market(security, 200, 1, limit_price=protect_price)
    log.info(f"已下达科创板市价买入委托,保护限价: {protect_price}")

总结:在使用 ptrade 编写策略时,务必区分主板和科创板的交易规则差异。对于上证科创板股票,调用 order_market 时切记计算并传入合理的 limit_price,否则会导致委托失败。