3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!针对您在聚宽(JoinQuant)平台上获取可转债数据返回 NaN 以及下单失败的问题,主要由以下两个原因导致:
get_price 获取可转债数据全是 NaN原因分析:
在聚宽的 get_price 函数中,默认的复权参数是 fq='pre'(前复权)。由于可转债的除权除息逻辑与股票不同,聚宽底层可能并未对可转债计算前复权因子,或者该标的在指定时间段内没有复权数据,从而导致默认前复权下返回 NaN。
解决方法:
获取可转债行情时,建议将复权参数设置为不复权,即传入 fq=None。
修改后的代码:
df = get_price("110043.XSHG",
count=5,
end_date='2023-01-31 10:56:00',
frequency='1m',
fields=['open', 'close', 'high', 'low', 'high_limit', 'low_limit', 'volume', 'money'],
panel=False,
fq=None) # 关键修改:增加 fq=None
print(df)
原因分析:
从您的报错信息 Order(security=110043.XSHG mode=OrderTargetValue: _value=0.1 ...) 可以看出,您使用的是按目标价值下单的函数(如 order_target_value),并且传入的目标价值是 0.1 元。
根据交易所规则,可转债的面值通常为 100 元/张,且最低交易单位为 1 手(10 张,即至少需要 1000 元左右的资金)。您设定的目标持仓价值仅为 0.1 元,连 1 张可转债都买不到。聚宽的撮合引擎在计算实际可买数量时,向下取整后得出的委托数量为 0,因此直接拦截并提示“下单数量为0”。
解决方法:
请确保您下单的金额或数量符合交易所的最低交易门槛。如果您想买入可转债,请提供足够的资金价值,或者直接使用按数量下单的 order 函数。
正确的下单示例:
# 方式一:按目标价值下单(确保价值足够大,例如 10000 元)
order_target_value('110043.XSHG', 10000)
# 方式二:按数量下单(买入 10 张,即 1 手)
order('110043.XSHG', 10)
fq=None,以获取真实的交易价格。