0

我有 3 个不同的输入参数:P1 [1..10], P2 [1..10]P3 [3..10]. 约束如下:P1 < P2 < P3

当不遵守约束时,应立即丢弃一些潜在的解决方案。例如,P1 = 2P2 = 1P3 = 4

有没有办法通过 MetaTrader 优化来完成这样的事情?
(最终使用一个OnTesterPass()函数?)

因此,我在优化过程中浪费了很多时间,我想找到一种方法,在不遵守约束时直接丢弃或跳过潜在的解决方案。

谢谢你的帮助

4

1 回答 1

2
int OnInit(){
   if(P1<P2 && P2<P3){} // OK
   else{
      printf("%i %s - parameters SKIPPED, !(P1<P2<P3)",__LINE__,__FUNCTION__);
      return(INIT_FAILED);
   }
}

就这些。

printf()优化期间不调用。

要么停止优化特定集,要么 [MT4 策略测试器] 直接进入下一组参数INIT_FAILEDINIT_PARAMTERS_INCORRECT

您不需要OnTesterPass(),因为它是在测试完成后OnInit()调用的,在将一组新的优化参数输入到这样的测试运行时会自动调用事件处理程序。

于 2018-06-06T06:12:50.477 回答