欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

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

author emer | 101 人阅读 | 0 人评论 |

Disable auto trading but ONLY for a specific EA - library for MetaTrader 4

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

Disable auto trading but ONLY for a specific EA - library for MetaTrader 4

在下面的代码中,它获取主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小时后评论,即可解锁附件下载
立即登录