Python使用forexconnect下载外汇历史价格数据报QuotesServerConnectionError 52错误
报错触发原因
错误码52对应cURL的CURLE_GOT_NOTHING错误,即本地向FXCM的历史报价归档服务器发起请求后,服务器主动断开连接且未返回任何数据,结合报错指向的路径/pricearchive/catalog.xml,具体触发原因分两类:
- FXCM平台侧调整:近期Demo环境的历史数据接口权限收缩,旧版本forexconnect内置的报价服务器地址已失效,或者Demo账号不再支持拉取1990年至今跨度超过30年的超长周期历史数据
- 网络链路问题:本地网络到FXCM海外报价归档服务器的路由被阻断、或存在运营商QoS限制,普通网页访问正常不代表到该特定服务端口的链路连通
修复方案
按优先级依次尝试:
1. 调整请求参数缩小数据范围
不要直接从1990年开始拉取,改成每次拉取1-2年的时间区间,分段拼接数据,示例修改:
# 把start_date改成近10年的时间先测试,不要拉取30年跨度的数据 start_date = pd.Timestamp('2020-01-01') # 也可以指定结束日期,避免拉取范围过大 end_date = pd.Timestamp('2024-01-01') history = fx.get_history(pair_string, time_interval_string, start_date, end_date)
2. 更换登录的服务器节点
把默认的Demo服务器地址换成其他可用接入节点,常见可替换的登录地址如下:
# 替换原有login行的服务器地址,优先尝试第二个 # 原代码行:fx.login("D261296694", "Oop5f", "fxcorporate.com/Hosts.jsp", "Demo", session_status_callback=session_status_changed) # 替换为带https前缀的地址 fx.login("D261296694", "Oop5f", "https://fxcmcorporate.com/Hosts.jsp", "Demo", session_status_callback=session_status_changed) # 或者尝试亚太节点 fx.login("D261296694", "Oop5f", "ap.fxcorporate.com/Hosts.jsp", "Demo", session_status_callback=session_status_changed)
3. 配置网络代理
如果是链路阻断问题,给运行环境配置全局HTTP/HTTPS代理,确保能正常访问FXCM的海外服务节点后再运行代码。
4. 更新forexconnect版本
如果上述方案都无效,联系forexconnect官方支持获取最新版本的安装包,更新内置的报价服务器地址配置即可。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

