3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 量化交易系统中,etf_basket_order 函数专门用于 ETF 成分券一键篮子下单。正确设置委托价位参数 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)
etf_basket_order 仅支持 PTrade 客户端,且仅在股票交易模块可用,回测模块暂不支持。info 参数字典中为某只成分券显式传入了 limit_price,则该成分券的价格以 info 中的设置优先,其余成分券继续使用 price_style 参数。'S1' ~ 'S3' 以保证成分券能够迅速补齐,避免因个别成分券未成交而影响后续的 ETF 申赎操作。