3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 中,查询一只 ETF 是否发布 IOPV(基金份额参考净值)以及其最小申赎单位,可以使用 get_etf_info 函数。
get_etf_info(etf_code) 获取指定 ETF 的信息字典。publish 字段。
1:表示需要发布 IOPV。0:表示不需要发布。report_unit 字段。etf_code 为字符串(如 '510050.SS')。以下代码展示了如何在策略中获取并打印上证50ETF(510050.SS)的相关信息:
def initialize(context):
# 设置要查询的ETF代码,例如上证50ETF
g.etf_code = '510050.SS'
set_universe(g.etf_code)
def handle_data(context, data):
# 调用API获取ETF信息
# 注意:get_etf_info 仅在交易模块可用,回测中可能返回空或报错
etf_info_map = get_etf_info(g.etf_code)
# 检查是否成功获取数据
if etf_info_map and g.etf_code in etf_info_map:
info = etf_info_map[g.etf_code]
# 1. 获取是否发布IOPV
# 字段 'publish': 1是需要发布,0是不需要发布
publish_flag = info.get('publish')
# 2. 获取最小申购、赎回单位
# 字段 'report_unit': 最小申购、赎回单位(int)
min_unit = info.get('report_unit')
# 打印结果
log.info("ETF代码: %s" % g.etf_code)
if publish_flag == 1:
log.info("IOPV发布状态: 是 (1)")
else:
log.info("IOPV发布状态: 否 (0)")
log.info("最小申赎单位: %s" % min_unit)
# 打印完整信息以便查看其他字段
log.info("完整ETF信息: %s" % info)
else:
log.info("未能获取到 %s 的ETF信息,请检查是否处于交易环境。" % g.etf_code)
Q: get_etf_info 函数还能获取哪些其他信息?
A: 除了 IOPV 发布状态和最小申赎单位外,该函数还可以获取:
cash_balance: 现金差额max_cash_ratio: 现金替代比例上限nav_percu: T-1日申购基准单位净值nav_pre: T-1日基金单位净值allot_max: 申购上限redeem_max: 赎回上限etf_redemption_code: 申赎代码Q: 为什么我在回测中调用 get_etf_info 返回为空?
A: 根据 PTrade API 文档,get_etf_info 仅支持 PTrade 客户端且仅在股票交易模块(实盘或模拟盘)可用。回测环境通常不支持获取此类柜台相关的实时业务数据。
Q: report_unit 的单位是什么?
A: report_unit 返回的是整数(int),代表最小申购或赎回的份数。例如返回 1000000,表示最小申赎单位为 100 万份。