问题描述
这是帮助文档里,python下获取合约的行情数据的例子
# 获取10001313.XSHG期权合约的分钟行情
p=get_price('10001313.XSHG','2018-12-21 09:00:00','2018-12-21 12:00:00','1m')
print(p)
这是帮助文档里,R下获取行情数据的例子
df < - request('get_price',code='000001.XSHE',count=10,unit='1d',end_date='2019-02-01')
我的问题是, R里面似乎不能设定get_price的参数 start_date?运行没有报错,但是返回的数据如下。
df < - request('get_price',code='000001.XSHE','2019-01-01','2019-02-01','1d')
> df
[[1]]
[1] "error: unit错误"
解决方案
在 JoinQuant 的 R 语言环境中,通过 request 函数调用底层的 Python API 时,强烈建议使用显式的命名参数(Named Arguments),而不是依赖参数的位置顺序。
报错原因分析
您运行的代码是:
df <- request('get_price',code='000001.XSHE','2019-01-01','2019-02-01','1d')
出现 [1] "error: unit错误" 的原因在于,R 语言在解析未命名的参数时,按照底层接口默认的参数顺序进行了错误匹配。它很可能把 '2019-01-01' 或者 '2019-02-01' 错误地传给了 unit(或 frequency)参数,导致底层引擎识别到无效的时间单位,从而抛出 unit错误。
解决方法
在 R 中调用时,只需将 start_date 和 end_date 等参数显式命名即可。正确的写法如下:
# 显式指定 start_date, end_date 和 unit 参数
df <- request('get_price',
code='000001.XSHE',
start_date='2019-01-01',
end_date='2019-02-01',
unit='1d')
print(df)
参数说明补充
对应 Python API 的 get_price,在 R 的 request 封装中常用的参数映射如下:
- code (对应 Python 的
security): 标的代码,如'000001.XSHE'。 - start_date: 开始时间,字符串格式如
'2019-01-01'。 - end_date: 结束时间,字符串格式如
'2019-02-01'。 - unit (对应 Python 的
frequency): 数据频率,如'1d'(天)或'1m'(分钟)。 - count: 获取的数据条数(注意:
count和start_date通常只能二选一,不能同时使用)。
只要把参数名写清楚,就可以完美解决参数错位导致的报错问题了。