3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,进行 ETF 成分券篮子下单时,如果遇到成分股停牌,通常需要将其设置为必须现金替代。这可以通过 etf_basket_order 接口中的 info 参数进行精细化配置。
根据 ptrade API 文档,现金替代标志的取值定义如下:
'0' —— 禁止替代'1' —— 允许替代'2' —— 必须替代'3' —— 非沪市退补现金替代'4' —— 非沪市必须现金替代'5' —— 非沪深退补现金替代'6' —— 非沪深必须现金替代对于停牌的成分股,我们需要将其 cash_replace_flag 设置为 2(必须替代)或根据市场规则设置为 4 / 6。
etf_basket_order(etf_code, amount, price_style=None, position=True, info=None)
info: 字典类型,用于设定成分股的个性化信息。Key 为成分股代码,Value 为包含 cash_replace_flag 等字段的字典。以下示例展示了如何在 handle_data 中,针对 ETF(如 510050.SS)的停牌成分股(假设为 600000.SS)设置“必须现金替代”并进行篮子下单:
def initialize(context):
# 设置我们要操作的股票池
g.security = ['510050.SS', '600000.SS']
set_universe(g.security)
g.flag = False
def handle_data(context, data):
if not g.flag:
etf_code = '510050.SS'
halt_stock = '600000.SS' # 假设该成分股已停牌
# 配置成分股个性化信息:设置必须现金替代 (cash_replace_flag = 2)
stock_info = {
halt_stock: {
'cash_replace_flag': 2, # 2 代表必须现金替代
'position_replace_flag': 0, # 不使用持仓替代
'limit_price': 12.0 # 设定委托价格
}
}
# 进行 ETF 成分券篮子下单(买入 1 份篮子)
# position=False 表示申购时不使用已有持仓替代
result = etf_basket_order(
etf_code=etf_code,
amount=1,
price_style='S2', # 卖二价委托
position=False,
info=stock_info
)
log.info("ETF 篮子下单发送完成,订单 ID 详情: %s" % result)
g.flag = True
info 中指定 limit_price 时需注意精度处理,避免委托失败。