🚀 AI 一键生成 joinquant 策略代码

聚宽平台 get_price 获取可转债数据返回 NaN 与下单失败的解决方法

joinquant | 发布时间: 2026/5/22
以下内容由 EasyQuant 生成。

问题描述

聚宽get_price获取可转债数据问题求助。

最近看聚宽已经有了可转债数据,但是按照聚宽给的demo获取可转债数据,为啥获取不了呢?

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)

2023-12-21 09:30:00 - INFO - open close high ... low_limit volume money
2023-01-31 10:52:00 NaN NaN NaN ... NaN NaN NaN
2023-01-31 10:53:00 NaN NaN NaN ... NaN NaN NaN
2023-01-31 10:54:00 NaN NaN NaN ... NaN NaN NaN
2023-01-31 10:55:00 NaN NaN NaN ... NaN NaN NaN
2023-01-31 10:56:00 NaN NaN NaN ... NaN NaN NaN

而且下单也是失败的:

下单失败,初步检查下单数量为0: Order(security=110043.XSHG mode=OrderTargetValue: _value=0.1 style=MarketOrderStyle: _limit_price=0.0 side=long margin=False entrust_time=None)

解决方案

您好!针对您在聚宽(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)

问题二:下单失败,提示“下单数量为0”

原因分析:
从您的报错信息 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)

总结建议

  1. 数据获取:对于可转债、期权等非股票类资产,获取行情时习惯性加上 fq=None,以获取真实的交易价格。
  2. 交易规则:在编写策略前,需留意不同交易品种的最小交易单位(股票是100股,可转债通常是10张/1手),避免因资金分配过小导致引擎计算出的委托数量为0而被废单。