禁用自动交易,但仅适用于特定 EA - MetaTrader 4 库

该脚本用于禁用图表上的 EA 交易,自动单击图像上的以下按钮:

在下面的代码中,它获取主Metatrader的句柄并打开Expert选项卡(命令33048在mt4中,对于mt5是不同的)
整数hMetaTrader = GetAncestor(WindowHandle(象征(),时期()),2); PostMessageA (hMetaTrader, WM_COMMAND ,33048,0);睡觉(200); //重要的是要保持至少0.2秒才能让窗口正确打开
然后我们需要检查当前所在的选项卡,我们获取选项卡的名称并自动更正以转到正确的选项卡:
整数孩子=get(hMetaTrader); 细绳顶部=名字(孩子); 如果(顶==“常见的 ”){//如果窗口已经是正确的窗口(公共部分选项卡),只需找到该按钮,单击它,然后单击“确定” 孩子=提前(孩子); 整数is_checked=check_state(孩子); 如果(已检查){打印(“按钮当前已选中”);} 别的{打印(“当前未选中按钮”);} 睡觉(10); PostMessageW(孩子,WM_LBUTTONDOWN,1,0);//按下鼠标左键 睡觉(10); PostMessageW(孩子,WM_LBUTTONUP,1,0);//释放它 睡觉(10); PostMessageA(孩子,WM_KEYDOWN,0x0D,0);//按回车键确认选择 返回 0; } 别的 如果(顶==””){//如果选项卡是“关于”部分,请按 ctrl+tab(向前移动 1 个选项卡) 打印(“第一的”); 睡觉(10); keybd_事件(17 号,0,0,0); 睡觉(10); keybd_事件(9,0,0,0); 睡觉(10); keybd_事件(9,0,KEYEVENTF_KEYUP,0); 睡觉(10); keybd_事件(17 号,0,KEYEVENTF_KEYUP,0); 睡觉(10); } 别的{//如果选项卡是“输入”,则按 ctrl+maj+tab (返回 1 个选项卡) keybd_事件(17 号,0,0,0); 睡觉(10); keybd_事件(16,0,0,0); 睡觉(10); keybd_事件(9,0,0,0); 睡觉(10); keybd_事件(9,0,KEYEVENTF_KEYUP,0); 睡觉(10); keybd_事件(16,0,KEYEVENTF_KEYUP,0); 睡觉(10); keybd_事件(17 号,0,KEYEVENTF_KEYUP,0); 睡觉(10); }
最后,如果该选项卡不正确,请找到“允许自动交易”按钮并按下它以将其禁用:
睡觉(100); 孩子=get(hMetaTrader); 孩子=提前(孩子); 睡觉(100); 布尔值is_checked=check_state(孩子); 如果(已检查){打印(“按钮当前已选中”);} 别的{打印(“当前未选中按钮”);} 打印(名字(孩子)); PostMessageW(孩子,WM_LBUTTONDOWN,1,0); 睡觉(10); PostMessageW(孩子,WM_LBUTTONUP,1,0); 睡觉(10); PostMessageA(孩子,WM_KEYDOWN,0x0D,0);
我忘了提及,即使自动交易是,代码也会单击这个特定按钮已经关闭所以 它会激活它,禁用它,激活它..这就是为什么我做了一个特殊的函数来获取按钮的当前状态,你可以修改 您想要更改的代码使用此函数获取按钮状态:
整数Kid=<按钮手柄>布尔值is_checked=check_state(孩子);布尔值检查状态(整数处理){ 返回(布尔值)SendMessageA(句柄,0x00F0,0,0); }
附件下载
📎 disable_current.mq4 (8.26 KB)
📎 winuser32.mqh (37.64 KB)
Source: MQL5 #29022
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
