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

ptrade 平台 get_price 获取周线/月线数据报错怎么办?

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

问题描述

get_price获取周线/月线数据时使用日期范围报错怎么办?

使用get_price获取周线数据时,传入start_date和end_date参数后报错,为什么?

解决方案

报错原因分析

在 ptrade 量化平台中,使用 get_price 接口获取历史行情数据时,对于不同频率(frequency)的数据,参数的支持情况有所不同。

根据 ptrade API 文档规定:当频率为周线('weekly', '1w')、月线('monthly', 'mo')、季线('quarter', '1q')和年线('yearly', '1y')时,不支持 start_dateend_date 组合的入参形式。

如果您在获取这些长周期数据时同时传入了 start_dateend_date,系统就会抛出错误。

正确的解决方法

要获取周线、月线等长周期数据,必须使用 end_datecount 组合的入参形式

  • end_date:指定获取数据的结束日期。
  • count:指定获取结束日期往前推的 K 线根数。

代码示例

以下是获取周线和月线数据的正确代码示例:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 错误用法(会报错):
    # wrong_data = get_price('600570.SS', start_date='20230101', end_date='20231231', frequency='1w')

    # 正确用法 1:获取指定结束日期前 10 周的周线数据
    week_data = get_price('600570.SS', end_date='20231231', frequency='1w', count=10)
    log.info("获取的周线数据:\n%s" % week_data)

    # 正确用法 2:获取指定结束日期前 5 个月的月线数据
    month_data = get_price('600570.SS', end_date='20231231', frequency='mo', count=5)
    log.info("获取的月线数据:\n%s" % month_data)

补充说明

  • count 参数只针对特定的频率有效,包括:'daily', 'weekly', 'monthly', 'quarter', 'yearly', '1d', '1m', '5m', '15m', '30m', '60m', '120m', '1w', 'mo', '1q', '1y'。
  • 返回的周线、月线数据是由日线数据合成的。
  • 如果确实需要获取特定时间段(如 2023年1月1日 到 2023年12月31日)的周线数据,您需要先计算出该时间段内包含多少周(即 count 的值),然后再使用 end_datecount 进行获取。