MetaTrader 5策略测试器:缺陷,缺陷,改进建议 - 页 23

 
Slava:

测试仪因OnInit返回非零代码而停止运行

这就是为什么没有统计数据的原因。

谢谢,我会向你通报的。有趣的是,图表仍然是用所做的交易建立的。

 
Andrey Pogoreltsev:

代理人在试图通过墨西哥而什么也不做时,内存超载,他们的任务数只会增长。日志显示了以下错误。

你必须看一下代理人的日志。

错误14意味着这个工具的投标价格为零。就是说,在历史上有一个左栏

PS 最好是进行一次测试。那么这个错误肯定会出现在测试员的日志中。优化时,只显示错误,直到OnInit完成。

 

全部关闭后,组图标消失,选择优化参数的选项也消失。


input group "ORDER"
input double K = 30;
input double TP_0 = 500;
input double MaxLoss = 0.25;
input group "FUNCTIONS"
input bool MultipleStopOrders = true;
input bool CloseAllPosReversSig = true;
input group "MONEY MANAGEMENT SETTING"
input double StartLot = -0.01;
input group "ORDERS SETTING"
input int MagicNumber_ = 2000; // Magic Number
input int Slippage = 50;       // Slippage
 
Slava:

大的要求是不要改变EA的输入参数,这些参数没有在剪贴板上设置。

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

图书馆:MultiTester

fxsaber, 2019.11.06 11:24

当在多测试器运行后查看大量的优化缓存时,你会做同样的事情。

  1. 你选择最佳通行证来运行一次(通过PCM)。
  2. 如果你喜欢它,你就停用优化并增加间隔时间。
  3. 你按下开始。

大部分时间都花在步骤2上,这常常导致错误。我们希望实现半自动化。而且有一个解决方案!


把这个文本复制到剪贴板上。

[Tester]
Optimization=0
FromDate=2019.01.01


然后在设置选项卡中按CTRL+V即可。这将自动禁用优化并设置正确的日期。


ZZY急忙兴奋起来。EA输入参数 在此缓冲区被重置为默认值。

 
fxsaber:

一个很大的要求是不要改变没有在剪贴板上设置的EA的输入参数。

是的,纠正这种行为。

PS 所描述的行为是不可复制的。如果在插入的文本中没有[TesterInputs]部分,专家顾问的设置选项卡就完全不会被触及。

 
Slava:
是的,纠正这种行为

谢谢你!

 
fxsaber:

谢谢你!

不玩了
 
Slava:

PS 所描述的行为没有重现。如果要插入的文本中没有[TesterInputs]部分,专家顾问设置选项卡就完全不会被触及。

专家顾问

input int Range = 0; // 0 .. 100

double OnTester() { return(Range); }


回放


 
可能,这种标准功能不会使任何人变得更糟。

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

mql5语言的特点、技巧和窍门

fxsaber, 2019.11.06 16:57

有时在遗传优化中,最初的几千次传递就足以让人已经或多或少地了解结果。

当你自动运行大量的优化时,你希望它都能更快地工作。这就是为什么我们将需要一个机制来中断优化。

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

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
  return(!MTTESTER::IsReady() && MTTESTER::ClickStart(false));
}


申请。

// Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20; // Через сколько проходов закончить
input int Range = 0; // 0..10000

double OnTester()
{
  int Data[];
  
  return(FrameAdd(NULL, 0, 0, Data)); // Сгенерировали TesterPass
}

void OnTesterPass()
{
  static int Amount = 0;
  
  ulong Pass;
  string Name;
  long ID;
  double Value;
  int Data[];

  while (FrameNext(Pass, Name, ID, Value, Data))
    if (++Amount > inAmountPasses)
    {
      OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
      break;
    }
}
 
fxsaber:

顾问


回放


让我们来了解一下这个问题的真相