实现EA开启和关闭自动交易按钮的难度和意义
- 首先"自动交易"按钮属于MT4和MT5交易软件的,由用户通过鼠标点击执行。
- EA程序输入MT4或MT5的子程序,权限低于MT4和MT5平台,无法实现开关自动交易功能
- 实现EA开启和关闭自动交易,可实现远程风控系统,通过网络通信来集中控制多个MT4或者MT5终端的自动交易的开启
EA开启和关闭自动交易的思想及代码实施
- 虽然EA的权限低于MT4和MT5,但权限最高的是操作系统,而EA可以通过DLL调用操作系统的功能来间接实现。
- TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) 函数获取当前终端自动交易状态。
- (HANDLE)ChartGetInteger(ChartID(), CHART_WINDOW_HANDLE) 获取当前窗口的句柄;
- 将指定窗口句柄传入 GetAncestor函数获取先祖窗口的句柄,也就是MT4和MT5终端的窗口句柄。
- 直接通过 PostMessageW 函数向指定窗口句柄传入指令来实现对窗口指定构件的控制。
#ifdef __MQL5__
#define MT_WMCMD_EXPERTS 32851
#define WM_COMMAND 0x0111
#define GA_ROOT 2
#include <WinAPI\winapi.mqh>
#endif
#ifdef __MQL4__