P1 [1..10], P2 [1..10] 和 P3 [3..10] 。限制因素如下: P1 < P2 < P3 .
P1 [1..10], P2 [1..10]
P3 [3..10]
P1 < P2 < P3
如果不遵守约束条件,应立即放弃一些潜在的解决方案。比如当 P1 = 2 , P2 = 1 和 P3 = 4 .
P1 = 2
P2 = 1
P3 = 4
有没有办法通过MetaTrader优化来完成这样的事情? OnTesterPass() 功能?)
OnTesterPass()
由于这个原因,我在优化过程中损失了很多时间,我想找到一种方法,在不考虑约束的情况下,放弃或直接跳过潜在的解决方案。
int OnInit(){ if(P1<P2 && P2<P3){} // OK else{ printf("%i %s - parameters SKIPPED, !(P1<P2<P3)",__LINE__,__FUNCTION__); return(INIT_FAILED); } }
仅此而已。
这个 printf() 在优化过程中不调用。
printf()
INIT_FAILED 或 INIT_PARAMTERS_INCORRECT 停止对特定集合的优化,[MT4 Strategy Tester]将直接进入下一组参数。
INIT_FAILED
INIT_PARAMTERS_INCORRECT
你不需要 OnTesterPass() 因为它是在测试完成后调用的, OnInit()
OnInit()