不适合MT开发者!用什么来代替INIT_PARAMETERS_INCORRECT? - 页 11

 
Сергей Таболин:

在OnTester()中,出现了一个想法,在遗传优化过程中筛选出 "无效的 "参数。

事实证明,如果不干扰遗传学,可能看不到INIT_PARAMETERS_INCORRECT的结果。

但在这里我们有另一个问题:在这种情况下,我们能否在利润上得到 "深度减负"?

这是一个非常缓慢的方法。我们正在花费资源来计算整个通行证。

[删除]  
Mikhail Mitin:

是一个非常缓慢的方法。我们正在浪费资源,对整个过道进行误判。

两害相权取其轻...

 
Mikhail Mitin:

是一个非常缓慢的方法。我们正在浪费资源,计算整个通道。

输入INIT_PARAMETERS_INCORRECT_ONTESTER - 翻转到OnTester

 

我是如何解决这个问题的(几个变种)。

  • 一个单独的参数被创建,其他的值根据它的值被替换(在上面的几个帖子中描述)。优化只针对这个参数
  • 也有一个办法可以解决这种情况,但不容易实施。
    1. 创建了csv文件,其中只列举了必要的参数
    2. 我在OnInit中读取文件,从文件中读取数值并将其赋予参数(用共享访问标志读取文件)。
    3. 只优化了一个参数(csv文件中的行号)。
  • 写了一个从csv文件生成mqh文件的算法(类似于上面的观点,但速度更快),并将其连接到专家顾问。

 
Mikhail Mitin:

我是如何解决这个问题的(几个变种)。

  • 一个单独的参数被创建,其他的值根据它的值被替换(在上面的几个帖子中描述)。优化只针对这个参数
  • 也有一个办法可以解决这种情况,但不容易实施。
    1. 创建了csv文件,其中只列举了必要的参数
    2. 我在OnInit中读取文件,从文件中读取数值并将其分配给参数(用Shared标志读取文件)。
    3. 只优化了一个参数(csv文件中的行号)。
  • 写了一个从csv文件生成mqh文件的算法(类似于上面的观点,但速度更快),并将其连接到专家顾问。

而如果你只有一个变量,这如何让你实现遗传算法

[删除]  

我恍然大悟了!))))

从OnInit行来看

   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_profit)                  return(INIT_PARAMETERS_INCORRECT);
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_stop)                    return(INIT_PARAMETERS_INCORRECT);
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && shift_correction_HMA7C != 5)  return(INIT_PARAMETERS_INCORRECT);

移至。

void OnTick()
{
//--- пропустить бесполезные проходы оптимизации
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_profit)                                 ExpertRemove();
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && move_stop)                                   ExpertRemove();
   if((MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER)) && period_HMA7C == 0 && shift_correction_HMA7C != 5)                 ExpertRemove();

遗传学不受干扰,PARAMETERS_INCORRECT 不被计算。)))

 
Сергей Таболин:

我恍然大悟了!))))

从OnInit行来看

移至。

遗传学不受干扰,PARAMETERS_INCORRECT 不被计算。)))

有趣的解决方案。而且,遗传学的成功,如何不在一个后裔身上陷入困境?

[删除]  
Aleksey Vyazmikin:

这是个有趣的解决方案。还有,遗传学的发展是否顺利,没有在一个后代身上陷入困境?

没关系的。这不是失败。)))至少现在还没有。在某个地方,我有一个猫头鹰,有很多无效的参数。我必须对它进行优化,看看。

移植的想法在于,遗传学正是在初始化时跌跌撞撞。但如果把检查移到OnTick,那么初始化就会很顺利,测试开始,立即结束,遗传学得到的结果是通过率为零。

 
Сергей Таболин:

没关系的。它没有倒下。)))至少现在还没有。在某个地方,我有一个猫头鹰,有很多无效的参数。我必须对它进行优化,看看。

移植的想法是,遗传学正是在初始化时绊倒的。但如果把检查移到OnTick,那么初始化就会很顺利,测试马上开始并结束,遗传学得到的结果是零。

它不失败就好。代码的本质是清楚的,但我想增加只执行一次,特别是如果有许多提前退出的条件。

[删除]  
Aleksey Vyazmikin:

很好,它没有陷入僵局。代码的要点很清楚,但我只想增加一次执行,特别是在有许多提前退出的条件时。

我所说的那只猫头鹰的优化工作进展顺利。)))

好主意。我们需要添加一个检查标志。