程序一直报错

| 发表于 2026-3-19 22:18:04 | 显示全部楼层 |复制链接
026.03.19 18:33:48.341        Virtual Hosting        failed to get list of virtual hosts [1009] (raw - read failed, 10054 wsa error, 1 bytes needed)

EA MT5的,无法运行;一直报这个代码;防火墙已经关闭了,哪个大神来帮忙解决一下

ScreenShot_2026-03-19_221823_634.png
举报

评论 使用道具

精彩评论3

westwuwei
DDD
| 发表于 2026-3-20 11:01:50 | 显示全部楼层
MetaTrader的“Virtual Hosting”(虚拟主机)服务,本质上是在MQ公司的服务器上为您的MT5终端创建一个隔离的、标准化的运行环境 。这个环境为了安全和稳定,施加了非常严格的限制。您的EA无法运行,最可能触碰了以下两条红线:

DLL调用被彻底禁止:这是最常见的原因。MQL5的虚拟主机为了安全,物理上就不允许任何形式的DLL(动态链接库)调用 。如果您的EA需要使用外部DLL文件来完成某些功能(例如,连接特殊硬件、调用复杂的第三方库、或者某些加密/通讯功能),那么在同步到虚拟主机时,就会触发类似10054的连接中断错误,因为虚拟主机直接拒绝了EA的非法请求 。EA在本地运行正常,但一上虚拟主机就报错,这完全符合DLL被禁用的特征。

WebRequest权限问题:如果您的EA不需要DLL,但需要通过WebRequest()函数访问互联网上的某个地址(例如,获取外部数据或发送通知),那么在虚拟主机上,您必须在MT5的“智能交易系统”设置中,预先为该URL授权 。如果这个权限没有正确设置,或者EA访问的URL不在白名单内,连接同样会被强制中断。

举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2026-3-20 11:13:21 | 显示全部楼层
上面回复信息被 EAHub提示“评论需要审核,请等待通过”,可能需要等待很久,我给你简单回答一下:

你的 EA 有可能内置有“访问某些第三方后台控制”的代码,例如需要别人后台控制它才能顺利执行(例如最简单的授权控制,有可能是复杂的择时控制)。一般安装这类EA的人,看不出自己的EA是实时地把内部信息给传出去的。

而你的 VPS 或者你的 MT5 可能禁止了相关的联网功能,或者关闭了 WebRequest 权限,这才暴露出来。

解决办法是:如果你有源代码,去看源代码中相关实时对外联网的代码,一般来说最好是直接删除掉。如果没有源代码,而你又认为EA的对第三方联网功能是“安全的”,那么你可以把你的 VPS 上的安全级(例如能不能调用特殊DLL、能不能开放哪些端口、能不能支持某些udp、tcp、http协议等等)彻底降低,允许任意联网。

如果是租的国外的VPS,最简单方法是换租其它厂商的VPS。
举报

点赞 评论 使用道具

westwuwei
DDD
| 发表于 2026-3-20 11:20:13 | 显示全部楼层
再说得简单一点儿,如果这个EA在你本地测试时能跑,放到VPS主机上就不能跑了,你通常的设置也做了,那可能就是你租的那个 VPS 的“级别太低了”(阉割版的系统,太廉价了),比如说它用1台电脑给100个客户提供 EA 部署。那么你只能去租一个贵一点的主机,因为贵一点的通常提供一个功能更全的操作系统。
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册