传入浮点数作为day参数时报错“参数类型错误”,get_trading_day函数的day参数类型要求是什么?
/
问题描述
解决方案
在 ptrade 量化交易平台中,调用 get_trading_day(day) 函数时,如果传入浮点数(如 1.0 或 -2.5)会导致“参数类型错误”。
day 参数类型要求
根据 ptrade API 文档规定,day 参数的类型必须是 整数(int)。
- 正整数:表示获取当前时间数天后的交易日期(例如
1表示后一个交易日)。 - 负整数:表示获取当前时间数天前的交易日期(例如
-1表示前一个交易日)。 - 0:表示获取当前交易日。如果当前日期为非交易日,则返回下一交易日的日期。默认取值为
0。
解决方法与正确示例
请确保传入的参数是标准的 Python 整数。如果您在计算过程中得到了浮点数,请使用 int() 函数将其转换为整数。
正确示例:
def initialize(context):
g.security = ['600670.SS', '000001.SZ']
set_universe(g.security)
def handle_data(context, data):
# 正确:传入整数 1,获取后一天的交易日期
previous_trading_date = get_trading_day(1)
log.info(f"后一天的交易日期: {previous_trading_date}")
# 正确:传入整数 -1,获取前一天的交易日期
next_trading_date = get_trading_day(-1)
log.info(f"前一天的交易日期: {next_trading_date}")
# 如果有浮点数变量,需先转换为整数
float_day = -2.0
valid_day = int(float_day)
target_date = get_trading_day(valid_day)
log.info(f"前两天的交易日期: {target_date}")
注意:不建议获取交易所还未公布的交易日期,以免返回结果不准确。