3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 量化交易平台中,获取 ETF 的现金差额(Cash Balance)和最小申赎单位(Report Unit)可以通过调用 get_etf_info 接口来实现。
该接口仅在股票交易模块(实盘或仿真交易)中可用,回测模式下通常不支持此特定数据的获取。
以下是具体的代码实现及字段说明:
def initialize(context):
# 设置需要查询的 ETF 代码,例如上证50ETF
g.etf_code = '510050.SS'
set_universe(g.etf_code)
def handle_data(context, data):
# 调用接口获取 ETF 信息
# 注意:该函数返回的是一个字典,key为ETF代码,value为包含详细信息的字典
etf_info_dict = get_etf_info(g.etf_code)
if etf_info_dict and g.etf_code in etf_info_dict:
# 获取该 ETF 的具体信息对象
info = etf_info_dict[g.etf_code]
# 获取现金差额 (cash_balance)
cash_balance = info.get('cash_balance')
# 获取最小申赎单位 (report_unit)
report_unit = info.get('report_unit')
# 打印结果
log.info("ETF代码: %s" % g.etf_code)
log.info("现金差额 (cash_balance): %s" % cash_balance)
log.info("最小申赎单位 (report_unit): %s" % report_unit)
else:
log.info("未获取到 ETF: %s 的信息" % g.etf_code)
调用 get_etf_info(etf_code) 后,返回的数据字典中包含以下关键字段:
cash_balance (现金差额)
str:float)。report_unit (最小申赎单位)
str:int)。get_etf_info) 仅支持 PTrade 客户端的股票交易模块。如果在回测环境中调用,可能会返回空数据或报错。etf_code 可以是单个字符串(如 '510050.SS')或代码列表。Q1: get_etf_info 接口还能获取哪些其他 ETF 信息?
A1: 除了现金差额和最小申赎单位外,该接口还可以获取是否发布 IOPV (publish)、现金替代比例上限 (max_cash_ratio)、T-1 日申购基准单位现金余额 (pre_cash_componet)、T-1 日基金单位净值 (nav_pre)、申购上限 (allot_max) 和赎回上限 (redeem_max) 等信息。
Q2: 如果我想进行 ETF 的申购或赎回交易,应该使用哪个函数?
A2: 在 PTrade 交易模块中,可以使用 etf_purchase_redemption(etf_code, amount, limit_price=None) 函数。其中 amount 为正数表示申购,负数表示赎回,且 amount 的绝对值必须是 report_unit(最小申赎单位)的整数倍。
Q3: 为什么我在回测中调用 get_etf_info 返回了空字典?
A3: get_etf_info 是柜台交易类接口,依赖于实盘柜台或仿真柜台推送的实时参考数据(如 PCF 清单)。回测环境通常只包含历史行情数据,不包含历史的每日申赎清单数据,因此该接口在回测中通常不可用。