🚀 AI 一键生成 ptrade 策略代码

为什么在 ptrade/iQuant 中使用 requests 爬虫或 tushare/akshare 会提示超时?

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

问题描述

国信iquant requests 爬虫 获取数据 还有使用 tushare,akshare 无法连接,提示超时

经过验证,比如把下面的代码放入到国信的iquant里运行
#encoding:gbk


import requests

def get_baidu():

url = 'https://www.baidu.com'
req = requests.get(url,headers={'User-Agent':'Mozilla/5.0'})
print(req.text)

def init(ContextInfo):
get_baidu()

def handlebar(ContextInfo):
pass

会报错,同时访问baidu.com 超时:

解决方案

问题原因:券商服务器的网络隔离机制

在国信 iQuant、ptrade 等券商提供的量化交易平台中,当您尝试使用 requests 访问外部网站(如百度),或者使用依赖外网接口的第三方数据库(如 tushareakshare)时,通常会遇到**连接超时(Timeout)**的报错。

这是因为券商的实盘和模拟交易服务器出于极高的安全与合规要求,实行了严格的网络物理隔离或白名单机制。策略运行环境通常被禁止直接访问公共互联网。因此,任何向外网发起的 HTTP/HTTPS 请求都会被防火墙直接拦截或丢弃,导致程序一直等待响应直到超时。


解决方案与替代思路

既然无法直接在策略中联网爬取数据,您可以采用以下几种替代方案来满足数据需求:

方案一:使用量化平台内置的 API 获取数据(推荐)

绝大多数券商量化平台(如 ptrade)已经内置了极其丰富的行情数据、财务数据和特色数据接口,这些接口直接连接券商内网的高速数据源,不仅速度快,而且稳定合法。您完全可以使用内置 API 替代 tushareakshare

ptrade 常用数据获取接口示例:

  • 获取历史 K 线数据:使用 get_history()get_price()
  • 获取财务数据:使用 get_fundamentals()(支持资产负债表、利润表、现金流量表及各类财务指标)。
  • 获取股票基础信息:使用 get_stock_info()get_stock_blocks()(获取所属板块)。

示例:在 ptrade 中获取历史行情替代外部请求

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

def handle_data(context, data):
    # 直接使用内置接口获取过去5天的收盘价,无需使用 tushare
    df = get_history(5, '1d', 'close', g.security, fq='pre', include=False)
    log.info(df)

方案二:在本地获取数据后,通过文件(CSV)导入平台

如果您需要的数据(如某些特定的宏观经济数据、另类情绪数据)平台 API 确实无法提供,您可以采用“本地爬取 -> 存为文件 -> 上传平台 -> 策略读取”的异步方式。

  1. 本地爬取:在您自己的个人电脑上运行 Python 脚本,使用 requestsaksharetushare 获取所需数据。
  2. 保存文件:将数据保存为 .csv 格式。
  3. 上传文件:将该 CSV 文件上传到量化平台的研究环境(Research)目录下。
  4. 策略读取:在策略代码中,使用 pandas.read_csv() 或平台提供的文件读取接口加载数据。

示例:在 ptrade 中读取上传的 CSV 文件

import pandas as pd

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 获取研究环境的根目录路径
    path = get_research_path()
    # 读取您提前上传好的外部数据文件
    g.custom_data = pd.read_csv(path + 'my_akshare_data.csv')
    log.info("外部数据加载成功!")

def handle_data(context, data):
    pass

方案三:联系券商申请网络白名单(仅限部分机构客户)

如果您是资金量较大的机构客户或专业私募,且策略确实强依赖于某个特定的外部数据源(如您公司自建的信号服务器),您可以尝试联系券商的客户经理或技术支持,申请将您的目标服务器 IP 或域名加入防火墙白名单。不过,出于合规考量,券商对此类申请的审批通常非常严格,普通个人投资者一般无法获批。

总结

在券商量化环境中,“断网”是常态。转变思路,充分挖掘和利用平台自带的 API 接口,或者通过离线文件的方式引入外部数据,是解决此类问题的最佳实践。