MQL4如何在更改帐户期间检测状态(完成历史交易下载)

时间:2015-04-07 18:33:09

标签: metatrader4 mql4

在MT4中,存在一个阶段/状态:当我们从AccountA切换到AccountB时,建立Connection并且MT4触发init()和start();但在“blinnnggg”(声音)之前,所有历史/未完成的交易都是从服务器加载的。

切换帐户>建立连接>触发器Init()/ Start()事件>开始下载未完成/历史交易>完成下载(发出“bliinng”声音)。

我需要知道(在MQL4中)所有交易都是从tradeServer下载的 - 要知道该帐户真的是空的-vs-仍然从tradeServer下载历史记录。

任何指针都将受到赞赏。我探讨了IsTradeAllowed() IsContextBusy()IsConnected()。所有这些都处于“正常”状态,并且init()和start()事件都被激活了。但我无法弄清楚历史/未完成的交易清单是否已完成下载。

2 个答案:

答案 0 :(得分:1)

更新:我最终实施的最终解决方法是使用OrdersHistoryTotal()。显然,在下载订单历史记录时,此编号将为零(0)。并且它永远不会为零(由于初始存款)。所以,我最终把它当作“旗帜”。

答案 1 :(得分:0)

观察

问题发布后,似乎没有MT4终端的“集成”方法。

IsTradeAllowed() 反映帐户的行政状态/访问交易服务的执行{ IsTradeAllowed | !IsTradeAllowed }

IsConnected() 反映了在尝试设置/维护localhost< - >之间的在线连接时使用的可见性/登录凭据/连接的技术状态。服务器{ IsConnected() | !IsConnected() }

init() {...} 是一站式设置工具,在本地主机上启动MT4程序{ ExpertAdvisor | Script | TechnicalIndicator }后即被调用。强烈建议该设施不阻塞且不可重入。从用户account_A到另一个用户account_B的更改通常(通过MT4配置选项)停止执行先前加载的MQL4代码的原因(无论是EA /脚本/技术指标))

start() {...} 是一个事件处理程序工具,无休止地等待下一次出现的FX-Market事件外观(由Broker MT4-Server自动化传播下去) )通过已建立的连接向下宣告到MT4终端进程,在本地主机上运行。

变通方法解决方案

据了解,可以间接检测和处理问题。

虽然MT4平台似乎没有直接方法来区分{ current | historical }交易清单的完整/完整刷新,但我要提出一种间接检测方法。

尝试启动“信号” - 交易(挂单,几乎在几乎远处,在PriceDOMAIN中,从当前询问 / 出价) -levels)。

一旦此交易将进行端到端注册(服务器端确认),本地方将确认db.POOL的有效状态

将此作为localhost / MT4-Server进程之间的请求/响应模式,localhost int init(){...} / int start(){...}功能可能因此反映了双方在{中同步记录状态的时刻{1}}