🚀 AI 一键生成 ptrade 策略代码

如何解决 Tushare "每分钟最多访问该接口600次" 报错?附 Ptrade 本地数据替代方案

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

问题描述

使用tushare时出现如下信息,Exception: 抱歉,您每分钟最多访问该接口600次,权限的具体详情访问:https://tushare.pro/document/1?doc_id=108。

/

解决方案

这个报错是因为您当前 Tushare 账号的积分对应的接口访问权限达到了上限(每分钟 600 次)。在量化策略编写中,频繁在循环中调用网络 API 很容易触发此类限制。以下是几种有效的解决方案,特别是如果您正在使用 Ptrade 量化平台,我们强烈建议您使用平台自带的本地数据接口。

方案一:代码层面优化(继续使用 Tushare)

如果您必须使用 Tushare,可以通过以下方式优化代码:

1. 增加请求延时 (Sleep)
在循环请求中加入 time.sleep(),强制降低请求频率。

import tushare as ts
import time

pro = ts.pro_api('your_token')
stock_list = ['000001.SZ', '000002.SZ', ...] # 假设有1000只股票

for stock in stock_list:
    df = pro.daily(ts_code=stock, start_date='20230101', end_date='20231001')
    # 每次请求后暂停 0.11 秒,确保每分钟请求不超过 600 次 (60秒 / 600次 = 0.1秒/次)
    time.sleep(0.11) 

2. 批量获取代替单只获取
Tushare 很多接口支持一次性获取多只股票或整个市场某一天的数据。尽量按天获取全市场数据,然后在本地进行筛选,而不是按股票代码循环获取。

# 推荐:一次性获取某一天全市场的日线数据(仅消耗1次请求)
df = pro.daily(trade_date='20231010')

3. 本地缓存数据
将获取到的数据保存到本地(如 CSV、SQLite、HDF5),下次使用时先读取本地文件,避免重复请求。


方案二:使用 Ptrade 平台自带数据接口(强烈推荐)

如果您是在 Ptrade 量化交易平台 上运行策略,完全不需要依赖 Tushare。Ptrade 平台内置了极速的本地金融数据库,不仅数据全面,而且没有类似 Tushare 这样严格的分钟级网络请求限制(尽管也有防滥用的流控,但额度极大且速度极快)。

以下是 Tushare 常用功能在 Ptrade 中的完美替代方案:

1. 获取历史 K 线数据

替代 Tushare 的 pro.daily。Ptrade 提供 get_historyget_price

def initialize(context):
    g.security = ['600570.SS', '000001.SZ']
    set_universe(g.security)

def handle_data(context, data):
    # 获取股票池中股票过去 5 天的收盘价,直接从本地内存/数据库读取,极快
    his = get_history(5, '1d', 'close', security_list=g.security)
    log.info(his)

2. 获取财务数据

替代 Tushare 的 pro.fina_indicator 等。Ptrade 提供 get_fundamentals

def before_trading_start(context, data):
    # 获取恒生电子的资产负债表数据
    # 注意:Ptrade 财务接口单次最大调用量是500条,每秒不超过100次,远比 Tushare 宽松
    funda_data = get_fundamentals('600570.SS', 'balance_statement', 'total_assets')
    log.info(funda_data)

3. 获取股票列表

替代 Tushare 的 pro.stock_basic。Ptrade 提供 get_Asharesget_index_stocks 等。

def before_trading_start(context, data):
    # 获取当前所有 A 股代码
    all_stocks = get_Ashares()
    # 获取沪深300成分股
    hs300_stocks = get_index_stocks('000300.SS')

总结

  • 短期应急:在 Tushare 请求代码中加入 time.sleep(0.11)
  • 长期最优:如果您在 Ptrade 环境中,请全面迁移至 Ptrade 原生 API(如 get_history, get_fundamentals)。这不仅能彻底解决频率限制问题,还能大幅提升策略的回测和实盘运行速度,避免因外部网络波动导致的策略异常。