错误、漏洞、问题 - 页 2659

 
Igor Makanu:

通过输出到OnTester()进行检查。

图片同上

这里有一个信心问题,如果你选择通过GA测试器传递NS--它不确定所有本地处理器核心不会在相同的NS权重初始配置下工作--它破坏了训练结果,我认为

你可以尝试使用一些通数的函数作为生成基础。

如果有一些输入参数在优化过程中发生变化,它们的组合(和、积、幂......)可以用来设置伪随机数生成的基础。可能(但不确定 :D),一个副作用是能够一次性重现里面有 "随机 "数字的代码。

 
Igor Zakharov:

你可以尝试使用通证号码的一些函数作为生成基础。

如果有一些输入参数,在优化过程中发生变化,它们的组合(和、乘、度......)可以用来设置伪随机数生成基数。可能(但不一定:D),一个副作用是能够一次性重现里面有 "随机 "数字的代码

人们可以通过几千字节生成/找到一个相对随机的字符阵列(普希金的文本:) )。所有这一切都归结于为满足任务要求而对随机性的狡猾实施,如果提议不被检查,我记得在许多库中都有这样的问题。

同事们,你们能否建议,如果我打开图表ChartOpen(),如何在不关闭图表的情况下将焦点(活动,可见性)带回专家顾问工作的图表?

谁知道为什么买入价、卖出价与图表价格不一致 Close[0]https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.02.25
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Aleksey Mavrin:

这一切都归结于你有自己巧妙的随机化实施,以满足任务的要求。

我不认为这是问题所在...伪随机本身工作得很好,问题在于生成基数--在输入不变的情况下(优化期间),基数是一样的,所以结果总是很接近。

 
Igor Zakharov:

在我看来,这不是问题所在......伪随机本身工作正常,问题在于系列的生成基数--在输入不变的情况下(优化期间),基数是相同的,所以结果总是很接近。我建议如何使生成基数的分散度最大化。

我同意。我只是指一个事实,如果没记错的话,经常发现(是)库不工作的初始化,即无缘无故的相同基础,如果不检查和使用,许多人不知道它。

 
Igor Makanu:

图片如上

crusty的解决方案是直接--在EA属性中为srand设置数字。或者从参数的哈希中获取,那么至少随机数的初始化会不同。
 
TheXpert:
crusty的解决方案是直接--在EA属性中为srand设置数字。或者从参数的哈希中获取,那么至少随机数的初始化会不同。

我昨天想出了这个解决方案,它能正确工作

input int param1 =  2147483647;
//+------------------------------------------------------------------+
int OnInit()
   {
   srand(param1);
   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
void OnTick()
   {

   }
//+------------------------------------------------------------------+
double OnTester()
   {
   return(rand());
   }

我的问题一般是关于teter中rand()的正确性,现在我搜索了alglib,它在randomreal()中使用了一次MathRand(),然后会在alglib库中经常使用。

 
Igor Makanu:

我的问题一般是关于teter中rand()的正确性。

这些问题正是关于初始化的。 显然,在测试器中,人们不能通过时间来初始化以获得一个好的rand()。
 
TheXpert:
显然,为了在测试器中获得良好的随机性,你不能用时间来初始化。

正是如此

昨天写道,这与文档https://www.mql5.com/ru/forum/1111/page2657#comment_15165819, 帮助中的MathSrand()例子在测试器中会得到与预期不同的结果。


UPD:我的问题更深一些--我想使用测试器进行深度学习,并通过代理之间的交换保存可能的最佳NS配置--我已经大致计划好了一切,但我想通过代理启动(或停止)暂停与随机值处理碰撞....。但可惜的是,在测试员代理中,并非所有的随机值都是随机的))))。

 
在大多数情况下,测试人员需要确保结果的可重复性。在不改变输入参数和环境状态(所有与虚拟时间有关的功能)的情况下,要求结果是随机的,这与测试者的任务和实施相悖。
 
Stanislav Korotky:
在大多数情况下,在测试器中你需要确保结果的可重复性。在不改变输入参数和环境状态(所有与虚拟时间有关的功能)的情况下,要求结果是随机的,这与测试员的任务和实施相矛盾。

你写的很好,但我需要在数据库中保存时将代理的访问顺序分开。

从本质上讲,你需要在测试器中设置一个本地代理ID,不知道为什么没有这种功能。