带有按钮和鼠标点击拦截的自动化。 - 页 12

 
Ilnur Iksanov:
#include <WinUser32.mqh>

#import "user32.dll"
   int GetAncestor(int hWnd, int gaFlags);
   int GetDlgItem(int hDlg, int nIDDlgItem);
#import

void start()
{
   int hMetaTrader, hTerminal, hTester, hButtonStart;
      
   hMetaTrader = GetAncestor(WindowHandle(Symbol(),Period()),2); //дескриптор основного окна терминала
        
   hTerminal = GetDlgItem(hMetaTrader,0xE81E);
   hTester = GetDlgItem(hTerminal,0x53); // Return zero here
   hButtonStart = GetDlgItem(GetDlgItem(hTester,0x81BF),0x40A);  //дескриптор кнопки "Старт"
        
   PostMessageA(GetDlgItem(hTester,0x81BF),WM_COMMAND,0x40A,hButtonStart); //нажимаем кнопку старт
   
   Print("Запуск тестера стратегий");
   string sButtonStartName = "";
   while(!IsStopped()) 
   {
      Sleep(3000);
      GetWindowTextA(hButtonStart,sButtonStartName,6); //считываем текст кнопки запуска тестера
      if(sButtonStartName=="Старт")                    
      {
         Print("Работа тестера завершена");
         break;
      }
   }
}



这是很好的东西。谢谢你的分享。

但这对我来说是行不通的。Metatrader和终端ID是确定的,但它找不到测试器窗口。我猜你的解决方案是针对MT4的,而我使用的是MT5。也可能是语言问题(我的MT5是葡萄牙语)。有什么其他方法可以发现测试器窗口的正确ID?非常感谢你。我真的很抱歉用(糟糕的)英语来回答。

 

下午好。

伙计们,请帮助解决1点击交易时的买卖脚本。简单,没有改变地段大小的麻烦...等...

已经打破了我的头--没有得到任何东西。

我事先非常感谢你。重新阅读该主题,没有发现类似的情况。

 
axis:

下午好。

伙计们,请帮助解决1点击交易时的买卖脚本。简单,没有改变地段大小的麻烦...等...

已经打破了我的头--没有得到任何东西。

我事先非常感谢你。Vetku重新阅读,没有发现类似的情况。


在这里传播你无法得到的东西(代码),或在一个新的帖子中,你会被告知什么是错的。一键式交易是否会妨碍脚本的交易?也许只是 自动交易按钮 没有被激活?或者你的经纪公司不允许自动交易。

你至少应该尝试公布期刊上的错误代码,或者更好的是公布源代码。

 

但是,仍然有一个合理的方法,以程序化方式设置测试EA的日期?我认为Yuriy Zaytsev 之前描述的方法是可行的,但是有一些函数可以解决像DateTimePicker这样的元素,像这样。

DateTime_SetSystemtime(GetDlgItem(hwndDlg, IDD_Date1), GDT_VALID, &SysTime)

只是还不能实施。对此有什么想法吗?