3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在进行 ETF 套利或申赎交易时,准确查询 ETF 成分股的现金替代标志及溢价比例是至关重要的一步。ptrade 提供了专门的 get_etf_stock_info 接口来获取成分股的详细申赎属性。
get_etf_stock_info该函数仅支持 Ptrade 客户端可用,并且仅在股票交易模块中生效。
get_etf_stock_info(etf_code, security)
etf_code (str): 单支 ETF 代码,例如 '510050.SS'。security (str 或 list[str]): 单只股票代码或多只股票代码构成的列表,例如 '600000.SS' 或 ['600000.SS', '600036.SS']。接口调用成功后返回一个 dict 对象,key 为成分股代码,value 为包含成分股属性的字典:
cash_replace_flag (str): 现金替代标志
'0': 禁止替代'1': 允许替代'2': 必须替代'3': 非沪市退补现金替代'4': 非沪市必须现金替代'5': 非沪深退补现金替代'6': 非沪深必须现金替代replace_ratio (float): 保证金率(溢价比率),仅在允许现金替代时有效。replace_balance (float): 替代金额,仅在必须现金替代时有效。code_num (float): 成分券数量。is_open (int): 停牌标志,0 表示停牌,1 表示非停牌。以下示例展示了如何在 handle_data 盘中事件中查询华夏上证50ETF(510050.SS)成分股(浦发银行 600000.SS、招商银行 600036.SS)的现金替代标志及替代溢价率:
def initialize(context):
g.etf = '510050.SS'
g.stocks = ['600000.SS', '600036.SS']
set_universe(g.etf)
def handle_data(context, data):
# 查询 ETF 成分股的详细替代信息
stocks_info = get_etf_stock_info(g.etf, g.stocks)
log.info("ETF成分股属性: %s" % stocks_info)
for stock_code, info in stocks_info.items():
flag = info.get('cash_replace_flag')
ratio = info.get('replace_ratio')
balance = info.get('replace_balance')
log.info("标的代码: %s, 现金替代标志: %s, 替代溢价比率: %s, 替代金额: %s" % (
stock_code, flag, ratio, balance
))
etf_basket_order 进行成分股篮子下单时,可将查询到的替代标志传入 info 参数,实现灵活控制现金替代与持仓替代策略。