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

 
2314.每个交易模式的佣金百分比计算不正确。+不能通过图形用户界面进一步设置到小数点后第二位(可以通过文件进行)。
 

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

专家顾问:验证

fxsaber, 2020.02.06 17:20

SZZY 不幸的是,MT5-Tester本身不允许在EA源代码之外规定自定义优化标准(不是选择)。虽然这样做没有建筑上的障碍。

现在你可以根据你选择最佳的标准,从优化的结果中选择任何通行证。

但如果只有EX5,就不可能设置自己的优化标准。在我看来,这样的优化标准可以设置为只有OnTester和TesterStatistics数据的EA。最有可能的是,在开发商的计划中没有这样的事情。因此,只能是鸣金收兵。

 

很抱歉,这篇文章被机器从英语翻译成了俄语,但我只找到了这个主题,来报告错误。

当我在编辑器中开始调试视觉测试,到达断点并按下Ctrl + F时,Metatrader 5平台似乎出现了问题。

调试历史数据时,按ctrl + f时,指标(所有,甚至启用)重绘/移位1条)

回放。

  1. 打开Metatrader 5。
  2. 添加EMA5和EMA10(内置)。
  3. 将Strategytester设置为Daily,模拟:ticks或Real ticks(两者都会导致同样的问题)。
  4. 打开Metatrader 5编辑器
  5. 打开包含的ExpertMACD.mqh
  6. 在Expert.mqh的第651行设置一个断点
  7. 用CTRL + F5开始,在历史数据上运行
  8. 将光标放在一个完全关闭的蜡烛图上(至少在1-2天后)。
  9. 当达到断点时,激活可视化测试器并按下Ctrl + F
  10. 一旦你在视觉测试仪窗口中按下CTRL + F,得到一个十字线,所有的指标都会向左移动1栏。
  11. 从断点继续,所有指标将向右移动1个柱子。
  12. 第8至11步可以重复进行,而且总是做得一样。

问题是,当检查EA是否真的在做它应该做的事情时,当条形图与EA看到的相比发生偏移时,是不可能的。

这不是一个指标的问题,因为它甚至是内置EA例子以及内置指标的情况。


这个YouTube视频在0:25左右演示了这个问题,按Ctrl + F。

https://youtu.be/_fyCv3Zla9A

 
fxsaber:

现在你可以根据你选择最佳通行证的标准,从优化结果中选择任何通行证。

但如果只有EX5,就不可能设置自己的优化标准。 在我看来,这样的优化标准可以设置为EA,其中只有OnTester和TesterStatistics函数数据可用。最有可能的是,在开发商的计划中没有这样的事情。这就是为什么只有声音是可用的。

你现在才意识到吗? 如果你有一个糟糕的交易策略模型,任何优化都无济于事。

所以数学建模或机器学习不能解决这个问题。你需要清楚地知道黑匣子里有什么。

 
Petros Shatakhtsyan:

你现在才意识到这一点吗?

我不明白这种不合逻辑的问题的模式。

如果你有一个糟糕的交易策略模型,那么再多的优化也无济于事。

当然,如果某人是坏人,他就不是好人。这正是上面这句话的意思。

即数学建模或机器学习不能胜任这项工作。你必须清楚地知道黑匣子里有什么。

这句话说的是某种任务。而这个东西需要为了某种目的而被了解。一般来说,如果答案看起来不像是与自己的对话中撕出来的,那就更好。

 
fxsaber:

不存在什么圣杯。

有的。

 
Алексей Тарабанов:

检查。

声称graality(在Tester模式修复之前)已被代码证实。

 

在一些最新的版本中,导入 tst文件变得不完整--设置标签没有更新到tst中的标签。

以前,你导入后,在设置中你可以立即看到在什么数值下获得的结果。我现在看不到了。有可能换回来吗?

 
很长时间以来,我一直在寻找测试器在实际测试中的奇怪行为的原因。找到了。
const bool Init = EventSetTimer(1);

void Func()
{
  static datetime PrevTime = 0;
  
  const datetime time = TimeTradeServer();
  
  if (time < PrevTime)
    DebugBreak(); // Срабатывает
  
  PrevTime = time;
}

void OnTick()
{
  Func();
}

void OnTimer()
{
  Func();
}

服务器时间向前运行,然后再回来。这发生在真实的贸易服务器上,但设法在一个自定义符号上创建了一个重放。


让我们运行

sinput datetime inDateFrom = D'2020.01.01';

void OnStart()
{
  const string Name = "TEMP12345";                                                           // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                          // Имя оригинального символа

  MqlTick Ticks[];
  
  const int Size = CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали EURUSD-тики.
    
  if ((Size > 0) && CustomSymbolCreate(Name, NULL, SymbOrig) && SymbolSelect(Name, true))    // Создали символ на основе EURUSD.
  {
    CustomTicksReplace(Name, 0, LONG_MAX, Ticks);                                            // Поместили в него историю EURUSD.        
    
    CustomRatesDelete(Name, D'2020.01.03 23:00', D'2020.01.04 00:00');                       // Удалили несколько баров.
  }
}


一个有刻度历史的 符号将被创建,但有几个条形被删除。然后我们在这种模式下开始调试上面的EA。

[Tester]
Symbol=TEMP12345
Period=M1
Optimization=0
Model=4
FromDate=2020.01.01
ToDate=2020.01.08
ForwardMode=0
Deposit=100000
Currency=USD
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6


它停止了。

你可以看到,时间在第二个循环中已经过去了。

 
fxsaber:

在一些最新的版本中,导入tst文件变得不完整--设置标签没有更新到tst中的标签。

以前,你导入后,在设置中你可以立即看到在什么数值下获得的结果。我现在看不到了。有可能换回来吗?

是的,我们可以。
原因: