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

PTrade 平台 etf_basket_order 接口中 price_style 参数设置指南

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: PTrade ETF 实盘交易:etf_basket_order 挂单价位 (price_style) 设置详解

Question: 在 PTrade 中使用 etf_basket_order 进行 ETF 篮子下单时,如何正确设置 price_style 参数?

解决方案

PTrade etf_basket_order 接口 price_style 参数设置详解

在 PTrade 量化交易系统中,etf_basket_order 函数专门用于 ETF 成分券一键篮子下单。正确设置委托价位参数 price_style,能够有效提高成分券的成交效率或降低滑点成本。


一、price_style 参数可选值

price_style 用于指定成分券下单时的盘口挂单价位,入参类型为 str。默认值为 'new'(最新价)。

支持的具体可选参数值如下:

参数值 含义 适用场景
'new' 最新价(默认值) 市场流动性好、希望平稳成交
'B1' ~ 'B5' 买一价 至 买五价 卖出篮子股票或希望低价挂单买入
'S1' ~ 'S5' 卖一价 至 卖五价 买入篮子股票(追价快速成交)或高价卖出

二、语法与函数定义

etf_basket_order(etf_code, amount, price_style=None, position=True, info=None)

参数说明:

  • etf_code (str): 单支 ETF 代码(如 '510050.SS')。
  • amount (int): 下单篮子份数。正数表示买入篮子,负数表示卖出篮子。
  • price_style (str): 设定委托价位(如 'B1', 'S3', 'new' 等)。
  • position (bool): 仅买入时有效。是否使用持仓替代(True 为优先使用已有持仓,False 为全额买入)。
  • info (dict): 单独指定个别成分券的买卖细节(如单独设定 limit_price)。如果 info 中未设定具体价格,则默认使用 price_style 的设定。

三、策略代码示例

以下示例展示了如何在 handle_data 盘中事件中使用 price_style 进行 ETF 成分券篮子下单:

def initialize(context):
    # 设置初始股票池
    g.security = '510050.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 示例 1:以卖三价(S3)买入 1 份 510050 的成分券篮子,提高成交速度
    etf_basket_order('510050.SS', 1, price_style='S3', position=True)
    
    # 示例 2:针对个别股票单独定价,其余股票统一使用卖二价(S2)
    stock_info = {
        '600000.SS': {
            'cash_replace_flag': 1,      # 1为允许现金替代
            'position_replace_flag': 1,  # 允许持仓替代
            'limit_price': 12.0          # 针对 600000 单独设置保护限价
        }
    }
    
    # 下单:未在 stock_info 中指定的成分券将统一按 S2 挂单
    etf_basket_order('510050.SS', 1, price_style='S2', position=False, info=stock_info)

四、注意事项

  1. 适用环境etf_basket_order 仅支持 PTrade 客户端,且仅在股票交易模块可用,回测模块暂不支持。
  2. 组合优先级:如果在 info 参数字典中为某只成分券显式传入了 limit_price,则该成分券的价格以 info 中的设置优先,其余成分券继续使用 price_style 参数。
  3. 滑点与撮合风险:在快速行情的买入场景中,推荐使用 'S1' ~ 'S3' 以保证成分券能够迅速补齐,避免因个别成分券未成交而影响后续的 ETF 申赎操作。