get_price传入start_date和count参数后报错是什么原因?
使用get_price函数时,同时传入start_date和count参数后提示参数互斥错误,应该如何正确调用?
问题描述
解决方案
报错原因
在 ptrade 量化平台中,使用 get_price 函数获取历史行情数据时,start_date(开始时间)和 count(K线数量)是互斥参数。根据 ptrade API 文档的规定:
start_date与count必须且只能选择输入一个,不能同时输入或者同时都不输入。
因此,如果您在调用 get_price 时同时传入了这两个参数,系统就会抛出参数互斥的错误。
正确的调用方法
为了正确获取历史数据,您需要根据实际需求选择以下两种组合方式之一:
方式一:使用 start_date 和 end_date 组合
如果您想获取某个具体时间段内的数据,请同时传入 start_date 和 end_date。
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取 2015年1月1日 到 2015年1月31日 的日线开盘价数据
price_open = get_price('600570.SS', start_date='20150101', end_date='20150131', frequency='1d')['open']
log.info(price_open)
方式二:使用 end_date 和 count 组合
如果您想获取指定结束日期往前推算 N 根 K 线的数据,请传入 end_date 和 count。
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取 2015年1月31日 往前推 10 个交易日的日线开盘价数据
price_open = get_price('600570.SS', end_date='20150131', frequency='1d', count=10)['open']
log.info(price_open)
注意事项
- 频率限制:
count参数只针对特定的频率有效,如'1d','1m','5m','1w'等。对于不支持的频率,只能使用start_date和end_date组合。 - 周线/月线/季线/年线限制:对于
'1w','mo','1q','1y'等频率,不支持start_date和end_date组合,只支持end_date和count组合。 - 不包含当天:
get_price返回的数据内容不包括当天的数据。