🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade get_price 报错:start_date与count参数互斥原因及正确用法

ptrade | 发布时间: 2026/6/4
以下内容由 EasyQuant 生成。

问题描述

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_dateend_date 组合

如果您想获取某个具体时间段内的数据,请同时传入 start_dateend_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_datecount 组合

如果您想获取指定结束日期往前推算 N 根 K 线的数据,请传入 end_datecount

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)

注意事项

  1. 频率限制count 参数只针对特定的频率有效,如 '1d', '1m', '5m', '1w' 等。对于不支持的频率,只能使用 start_dateend_date 组合。
  2. 周线/月线/季线/年线限制:对于 '1w', 'mo', '1q', '1y' 等频率,不支持 start_dateend_date 组合,只支持 end_datecount 组合。
  3. 不包含当天get_price 返回的数据内容不包括当天的数据。