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

 
HIDDEN >> :

对策略测试器的软件控制感兴趣。

1.从专家顾问中打开它(找到代码)

2. 按 "开始 "按钮

等。一般来说,最好能有这个窗口的所有代码,按钮等。

你想轻松脱身。:))

这里有很多复杂的事情。


1. 打开测试器窗口

2.打开EA列表,按名称从列表中选择一个特定的EA(可以跳过,事先在列表中留出一个位置)。

3.打开符号列表,从列表中按名称选择一个给定的符号(你可以通过事先在列表中留出一个位置来跳过这个步骤)。

4. 打开方法列表,通过名称或编号从列表中选择一个特定的方法。

5.打开时期列表,通过名称或编号从列表中选择特定时期

6.勾选 "使用日期 "框,勾选它

7.勾选 "优化 "复选框,勾选该复选框。 10.

8.勾选 "可视化 "框,取消勾选(可选)。

9.在 "从 "窗口中输入给定的日期(如果可能)。

10.在 "至 "窗口中输入设定的日期(如果可能)。

11. 按 "开始 "按钮

12.接收一个优化结束的信号,即文本 "开始 "返回到按钮上(可以使用一个计时器)。

13.关闭测试器窗口


那是如果我还没有错过什么的话。

 
granit77 >> :

你想轻松脱身。:))

这里有很多复杂的东西。


1. 打开测试器窗口

2.打开专家顾问列表,从列表中按名称选择一个特定的专家顾问(可以跳过,事先在列表中留一个位置)。

3.打开符号列表,按名称从列表中选择一个给定的符号(你可以事先在列表中留下一个位置来跳过它)。

4. 打开方法列表,按名称或编号从列表中选择一个特定的方法。

5.打开时期列表,通过名称或编号从列表中选择特定时期

6.勾选 "使用日期 "框,勾选它

7.勾选 "优化 "复选框,勾选该复选框。 10.

8.勾选 "可视化 "框,取消勾选(可选)。

9.在 "从 "窗口中输入给定的日期(如果可能)。

10.在 "至 "窗口中输入设定的日期(如果可能)。

11. 按 "开始 "按钮

12.接收一个优化结束的信号,即文本 "开始 "返回到按钮上(可以使用一个计时器)。

13.关闭测试器窗口


如果我还没有错过什么

在测试器文件夹里有一个lastparameters.ini文件,是什么阻止了它在专家顾问中的准备,在测试器中写入和打开,并按下启动按钮。事实证明,有一半的物品已经丢失。

 

这是正确的,我忘了。

如果你已经用它工作过,跑完了清单,也许你真正需要做的就是按下'开始'?

 
granit77 >> :

对了,我忘了。

如果你已经用它工作过,跑遍了列表,也许你真的只需要按 "开始"?

optimization=0 //优化开启和关闭
genetic=1 //遗传学
健康=0
method=0 //测试方法
use_date=0 //按日期计算
from=1226620800 //从1970年开始,以秒为单位的起始日期
to=1226620800 //结束日期


对EA来说也是如此,在测试和优化之后,手动完成一次参数的保存,并随心所欲地改变。我仍然需要按下启动按钮,哦,我多么需要....


如果对在图表上交易的专家顾问进行优化,可以按F6代码,相应地,专家顾问和货币对被自动选择,即又错过了一些点。

 
HIDDEN >> :

我仍然需要按下启动按钮,哦,我多么需要....

我不是特别受宠若惊。通过定期优化的人工运行还没有产生明确的积极结果。

此外,选择最佳参数集的问题也悬而未决,每个人都会想出一个新的办法。

Mathemat已经答应写一篇文章,也许会让人明白一些。

但有了这个工具,可能性将增加一个数量级;这将是一个突破。

 

从附近的一个主题Eric建议


按钮代码在Spy++中查询(控制ID)。

而它们是用来获取按钮描述符的。

hButtonStart = GetDlgItem(hTester, 0x40A);



我要醒过来,想办法把它连接起来。

 

Strategy Tester 窗口中执行任何操作之前,你应该首先了解MetaTrader中的窗口树是如何安排的,其次,确定
其系统描述符。然后,使用GetDlgItem(int hDlg,int nIDDlgItem) 函数,你可以获得必要控件的ID


下图显示了Spy++中MetaTrader窗口树的一部分。 红色 标记表示其根部。黄色 标记显示 "终端 "窗口在树中的位置,等等。
因此,为了获得 "开始 "按钮的系统标识符(图中用蓝色 标记),你应该依次通过所有更高级别的
。为了说明问题,每个级别都用一种颜色标记。




这里是MQL中的一个示例代码,以获得 "开始 "按钮的描述符。

#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);
   hButtonStart = GetDlgItem(GetDlgItem(hTester,0x81BF),0x40A);  //дескриптор кнопки "Старт"
}

为了确定描述符,GetDlgItem() 函数的第二个参数是向窗口组件传递控制ID。它可以通过右击调用
菜单项 "属性... "来定义。例如,在下图中,"终端 "窗口的控制ID(0xE81E)被标记为红色


 
Ilnur >> :

在策略测试器窗口中进行任何操作之前,你必须首先了解MetaTrader的窗口树是如何结构的,其次,确定


谢谢你的教程。开始按钮被安全地按下,就像控制面板上的其他必要按钮一样,称为MetaTrader 4。

 

Eh....它想到了。


美国人派了一名游客到苏联的潜艇上。他在第一天就喝醉了。 早上他醒来,看到船长拿着警棍在水手们后面跑来跑去,大喊大叫。"谁按下了红色按钮?谁按下了红色按钮?"美国人斥责他。
- 你知道,先生,我们在美国没有像这样的船长!"。
- 再也没有美国了!谁按下了红色按钮?

 
HIDDEN писал(а)>>

Eh....我被提醒了。

美国人派了一名游客乘坐苏联的潜艇。他在第一天就喝醉了。早上他醒来时,看到船长拿着警棍追着水手大喊。"谁按下了红色按钮?谁按下了红色按钮?"美国人斥责他。
- 你知道,先生,我们在美国没有像这样的船长!"。
- 再也没有美国了!谁按下了红色按钮?

这是一个很好的终端:-)))