MT4连接断开重试刷新脚本,解决MT4连接不稳定连接断线问题,MQL4断线重试脚本
介绍: MT4连接断开重试刷新脚本,解决MT4连接不稳定连接断线问题,MQL4断线重试脚本
原理: 先获取主窗口句柄,通过发送消息命令重新扫描服务器,然后更新刷新重连
来自: 策汇在线: http://www.fxchs.com
MQL4/ MQL4/Scripts/ 策汇在线.url 必须读我.txt MQL4/Scripts/MT4连接断开重试刷新脚本.mq4MQL4/Scripts/MT4连接断开重试刷新脚本.mq4代码片段:
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| MT4连接断开重试刷新脚本.mq4 | //| 策汇在线 http://www.fxchs.com | //| http://www.fxchs.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #property copyright "策汇在线 http://www.fxchs.com" #property link "http://www.fxchs.com" #property version "1.00" //+------------------------------------------------------------------+ /////////////////////////////////////////////////////////////////////// // // // // 介绍: MT4连接断开重试刷新脚本 // // // // 原理: 先获取主窗口句柄,通过发送消息命令重新扫描服务器,然后更新刷新 // // // // 来自: 策汇在线: http://www.fxchs.com // // // ////////////////////////////////////////////////////////////////////// //+------------------------------------------------------------------+ #import "user32.dll" // 发送命令 #define WM_COMMAND 0x0111 // 注册消息 int RegisterWindowMessageW(string lpString); // 获取父窗口句柄 int GetAncestor(int hWnd, int gaFlags); // 发送消息 int PostMessageW(int hWnd, int Msg, int wParam, int lParam); #import //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| //| Script program start function //| //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void OnStart() { // 如果移除脚本 while(!IsStopped()) { // 是否已经断线 if(!IsConnected()) { // 获取主窗口句柄 int hMetaTrader = GetAncestor(WindowHandle(Symbol(), Period()), 2); // 发送重新扫描服务器的命令 if(hMetaTrader != 0)PostMessageW(hMetaTrader, WM_COMMAND, 37400, 0); // 获取当前窗口句柄 int hWnd = WindowHandle(Symbol(), Period()); // 注册MT4内部消息 int MT4InternalMsg = RegisterWindowMessageW("MetaTrader4_Internal_Message"); // 发送tick更新消息,相当于刷新 PostMessageW(hWnd, MT4InternalMsg, 2, 1); } // 每秒执行 Sleep(1000); } } //+------------------------------------------------------------------+