我正在尝试为 MetaTrader 构建一个可以发出异步互联网请求的自定义指标是否可行,以便将数据发布到具有 PHP 接口的服务器。
这些请求可能需要一些时间让网络服务器处理,所以我担心如果它们以同步方式执行,它们会阻止指标不断更新新的分时数据。
是否有任何可用于 MT4 的异步库?
我正在尝试为 MetaTrader 构建一个可以发出异步互联网请求的自定义指标是否可行,以便将数据发布到具有 PHP 接口的服务器。
这些请求可能需要一些时间让网络服务器处理,所以我担心如果它们以同步方式执行,它们会阻止指标不断更新新的分时数据。
是否有任何可用于 MT4 的异步库?
MT4 可以直接使用现成的绑定来实现出色的平台到平台和进程到进程的消息传递库,无论是它ZeroMQ
还是nanomsg
.
使用前者几年后,MQL4
进程可以形成一个非同步的(即独立于aMarketEVENT
到达 aka quote
,或者更准确地称为“ tick
”)ExpertAdvisor
->script
或script
->script
进程间通信解决方案,允许构建强大的增强型用于专业交易的 GUI 服务以及用于软实时系统和低强度 HFT 集群的许多其他功能。
另一方面,在MT4 EA
同一个消息传递技术平台上,可能会配备一些必不可少的服务:
keyboard
为正在运行的 EA 添加一个类似于 CLI 界面的交互式远程file-IO
为 HFT 服务添加远程(非阻塞 (!!))syslog
为(非阻塞)日志添加远程/集中服务GPU-based
AI/ML 实时模型从设计/架构的角度来看,MT4
指标线程有一定的限制,应该注意。
对远程 WebServer 上的进程的其他基于通用POST
的发布php
肯定会花费数十毫秒以上的时间,这对上述正式架构造成了不可避免的问题。
宁愿将处理的所有MT4.CustomIndicator
嵌入部分最小化,以避免处理落后于下一aMarketEVENT
到达,从而防止计算值的同步性偏差。
这可以通过在代码范围“外部”调度所有非核心功能MT4.CustomIndicator
(使用ZeroMQ
进程到进程通信框架)并在MT4
. 后处理是最小的问题,握手和值的更新和重新传输逻辑是从非常脆弱的线程同步中卸载的焦点MT4
(人们可能已经观察到这个问题在最近的构建。许多强大的增强型 GUI 解决方案在 7xx 后的构建中开始出现不稳定的响应,需要对其核心实时控制循环进行轻微调整,以恢复其 UI 鲁棒性和重负载下的平滑 UI 响应性)
不要犹豫,询问有关此 MQL4 或 HFT 或其他主题的更多详细信息。