程序库: 多功能测试仪 - 页 49

 
fxsaber #:
您确定使用的是当前版本的 MTTester.mqh?有以下代码。

我记得我更新到了最新版本,但我不知道为什么会错过更新该文件。现在一切正常。

 
Добрый день!

Перестал компилироваться прилагаемый скрипт.
Выдается ошибка:
不允许将参数类型 'short[260]' 转换为 'ushort[] &' MTTester.mqh 156 39
int user32::GetClassNameW(long,ushort&[],int) winuser.mqh 1414 37

Может быть что-то нужно поменять в MTTester.mqh ?

Может быть что-то нужно поменятьв MTTester.mqh ?

Не могли бы помочь?

Суважением, Александр
附加的文件:
_Noc.mq5  62 kb
 
klycko #:
所附脚本停止编译。

关于交易、自动交易系统和交易策略测试的论坛。

库:MultiTester

fxsaber, 2025.06.08 16:57

我从 KB 下载源代码时只点击相应的文件,如图所示。

我只是以这种方式下载检查 - 编译无误。

 
fxsaber #:

非常感谢!

一切都恢复正常了!

 

如上图所示下载,但 cmopile 中出现错误

Mttester.mqh 编译错误,请检查新版本 MT5 V5 BULD 5142


ERRROS :


参数转换类型 'short[260]' to 'ushort[] &' is not allowed MTTester.mqh 135 39

'ReadFile'--没有一个重载可以应用于函数调用 MTTester.mqh 1283 21


 
dave365 #:

如上图所示下载,但 cmopile 中出现错误

关于交易、自动交易系统和测试交易策略的论坛

库:多重测试器

fxsaber, 2025.06.12 14:55

当前版本的MTTester.mqh 文件大小为123,822 字节。

 

你好@fxsaber

希望你一切顺利。

我一直在关注您在 multitester 上的工作。我阅读了关于如何使用该库的示例和说明,但不知道如何使用。

我编写了一个 EA,用于测试/优化 9 种符号的指标。我在 EA 中执行了以下代码。

//+------------------------------------------------------------------+
//|MultiTesterBase.mq5
//|2025年,MetaQuotes有限公司版权所有。|
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <fxsaber\MultiTester\MultiTester.mqh>

#define  EA_NAME "IndicatorTesting\\EAs\\ash_indicator_testing.ex5"

// 该函数负责生成任务列表
void SetTesterSettings()
{
   TesterSettings.Add(EA_NAME, "EURUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "AUDNZD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "EURGBP", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "AUDCAD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "CHFJPY", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "CADSGD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "BTCUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "XAUUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "US500", PERIOD_CURRENT);
}
//+------------------------------------------------------------------+

但我不知道之后该怎么做,因为我想根据给定的符号优化参数,在测试器中我必须选择ash_indicator_testing EA,因为如果不这样做,就不会有优化参数。这样做之后,我将上述粘贴的代码片段(multitester ea)应用到图表上!因为我没有找到足够的使用信息。

请给我指导。

致以最崇高的敬意

 
Hafiz Tamur Ahmed #:

请指导我

从历史上看,MultiTester.mqh 不用于编写与 Tester 的交互,因为它使用的事件模型过于复杂。因此,我建议立即使用另一种方法--通过MTTester.mqh


下面就是一个很好的例子。

交易、自动交易系统和交易策略测试论坛。

库:MultiTester

fxsaber, 2024.01.17 12:13 AM

#include <fxsaber\MultiTester\MTTester.mqh>    //https://www.mql5.com/zh/code/26132

#define _CS(A) ((!IsStopped()) && (A))
#define  PAUSE 200

void Run( const string Settings )
{
  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);

  MTTESTER::CloseNotChart();
    
  if (_CS(MTTESTER::SetSettings2(Settings)))
    MTTESTER::ClickStart(false);

  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);
}

void OnStart()
{
  string Settings[] = {"[Tester]\n" +
                       "Expert=Input_String_Example_Alternative.ex5\n" +
                       "Symbol=EURUSD\n" +
                       "Period=M1\n" +
                       "Optimization=2\n" +
                       "Model=4\n" +
                       "FromDate=2023.01.01\n" +
                       "ToDate=2024.01.01\n" +
                       "ForwardMode=0\n" +
                       "Deposit=1000000000\n" +
                       "Currency=USD\n" +
                       "ProfitInPips=1\n" +
                       "Leverage=100\n" +
                       "ExecutionMode=0\n" +
                       "OptimizationCriterion=6\n" +
                       "[TesterInputs]\n" +
                       "inAmount=1||1||1||10||N\n" +
                       "inCount=2||2||1||20||N\n" +
                       "inPeriod=3||3||1||30||N\n" +
                       "inKoef=4.56||4.56||0.456000||45.600000||N\n" +
                       "inLog=7.89||7.89||0.789000||78.900000||N\n" +
                       "inFlag=true||false||0||true||N"
                      };

  for (uint i = ArraySize(Settings); (bool)i--;)
    Run(Settings[i]);
}

测试仪设置通过 CTRL+C/V 保存。您可以将它们保存到单独的文件中,然后用其中的数据填充上述源代码中的Settings[] 数组。


附加示例

Optimize EA over a time window
Optimize EA over a time window
  • 2025.06.30
  • Maker
  • www.mql5.com
Is it possible to make the Strategy Tester to Optimize EA running it automatically multiple times over a range of time windows...
 

感谢您的回复,但我无法理解控制器 EA 的实现方式,比如它应该如何实现以及如何使用!在图表上应用还是在测试器中使用。因为我一直在阅读论坛,但我没有看到任何弹出窗口或类似的东西。当我将控制器 EA 应用到图表上时,我这边发生的唯一事情就是出现一行字,说明正在等待测试器和正在执行什么操作,而且下面的策略测试器一直在闪烁。我无法使用测试器做任何事情!

如果能在库文档中提供完整的端到端指南就更好了,这样像我这样的新手就可以很容易地理解并根据自己的情况来执行了!

最美好的祝愿

抄送:@fxsaber@fxsaber

 
以非标准方式获取日历月的刻度数。
#include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/code/26132

#define  PRINT(A) Print(#A + " = " + (string)(A));

void OnStart()
{
  MqlTick Ticks[];
  
  // 一个日历月的常规刻度数。
  PRINT(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, D'2025.08.01' * 1000, D'2025.09.01' * 1000 - 1));
  
  // 以非标准方式计算每个日历月的刻度数。
  PRINT(MTTESTER::GetAmountFileMonthTicks(D'2025.08.01'));
}


结果

CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, D'2025.08.01' * 1000, D'2025.09.01' * 1000 - 1) = 10820615
MTTESTER::GetAmountFileMonthTicks(D'2025.08.01') = 10820615