错误、漏洞、问题 - 页 504

 
Vigor:

代码优化器对对象树的大小是否有限制?

当对象的数量增加时,我在编译阶段得到一个 "树状优化错误"。

P.S. 在调试模式 下,它可以编译。

你能在servicedesk票据中附上一个源代码的例子吗?验证后,该代码将被删除。

最有可能的是,这是因为长函数的缘故,但你最好把代码发给我们,这样我们就可以自己研究一下,解决这个错误。它将帮助许多交易者。

 
Valmars:

首先,在测试器中强行下载历史记录的意义何在?如果在代码或交易操作 中存在对必要符号的请求,测试器本身将从服务器下载必要的和可访问的历史记录。由于你的代码是空的,测试人员不需要模拟其他符号的刻度,除了符号,对其进行测试。而这就是测试者下载其历史的原因。由于没有历史记录(在测试器中),我们最终的结果是0。

第二,即使你通过调用所有符号的全部历史记录来增强代码,所有符号的所有可用历史记录的下载也不可能成功,在某个地方会发生失败。由于测试器使用终端报价的基础,它需要下载必要的历史记录。
问题是,当测试人员试图模拟其他符号的ticks时,日志开始充斥着诸如包含0条M1记录 的信息,因为在这个日期没有历史记录,日志增长到难以想象的数量,为了避免这些错误,我需要知道历史的起始日期,当要求时,函数SeriesInfoInteger(symbol,0,Series_SERVER_FIRSTDATE)返回0
 

你能告诉我,当选择目标函数Balance + min Drawdown 时,结果栏中的数值意味着什么?

 
tol64:

你能告诉我,当选择目标函数Balance + min Drawdown 时,结果栏中的数值意味着什么?

如果你看一下终端的帮助,很多问题会消失,因为都写在那里了

优化标准

一个优化标准是一个特定的因素,其值定义了被测试的输入参数集的质量。 优化标准的值越高,在给定的参数集下,测试结果被认为越好。这个参数可以在 "优化 "字段右边的 "设置 "标签上选择。

优化标准只对遗传算法有要求。

有以下优化标准。

  • 最大余额 - 优化指标是最大余额值
  • 余额+最大利润率 --余额的最大值乘以利润率 是优化标准。
  • 余额+最大预期报酬 --余额与预期报酬的乘积 被认为是一个指标。
  • 余额+最小缩减 -缩减水平(100%-缩减量)*除余额值外, 还考虑了余额。
  • 平衡+最大回收系数 --该值是平衡与回收系数的 乘积。
  • 余额+最大夏普比率 - 该指数是余额与夏普比率的乘积
  • 自定义优化标准 - 选择此选项时,专家顾问中OnTester()的值将被视为优化标准 该选项允许用户使用任何自定义指标进行优化


 
sergey1294:

谢谢你。))由于某些原因,我想到的是最低提取标准,而不是余额+ 最低提取标准。))

 
sergey1294:
事情是这样的,当测试人员试图模拟其他符号的ticks时,日志开始充满了信息,如包含0条M1记录,因为在这个日期没有历史记录,日志增长到难以想象的程度,我需要知道历史日期以避免这些错误,但是当你要求函数SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE)返回0

据我所知,在测试之前,测试人员为所连接的账户(如果没有连接到服务器,则为最后一个连接的账户)创建一个市场环境,检查与服务器的数据同步(同样,如果有连接),上传测试开始日期的缺失报价(如果有连接),为所有必要的符号创建一个测试序列的报价,然后才开始测试。如果他没有设法下载必要的历史记录(例如,由于服务器上缺乏历史记录或由于没有与服务器连接),怎么办??它诚实地告诉你。不,你不必如此。

接下来,你要获得服务器上(在测试器中)历史记录的起始日期。看来,这个属性并不包括在测试者的市场环境中,尽管它可能已经从服务器中保存下来。这是一个错误吗?我想不会。在测试开始后,测试人员不能访问服务器(通过终端)下载你需要的报价。所有可用的东西,在测试过程的初始化阶段已经被测试人员加载,测试序列已经形成,无法改变。而不是SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE),在你的情况下,我认为你可以使用SeriesInfoInteger(symbol,0,SERIES_FIRSTDATE), ,它应该在测试器中工作。

 
Renat:

你能在servicedesk票据中附上一个源代码的例子吗?验证后,该代码将被删除。

最有可能的是关于长函数的问题,但你最好把代码发给我们,这样我们就可以研究一下并解决这个错误。它将帮助许多交易者。

好的,附上2个选项,有 "代码生成错误 "和 "树形优化错误"。onInit函数 真的很长(约1000行的生成代码)。

票号217917

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Vigor:

好的,附上2个带有 "代码生成错误 "和 "树形优化错误 "的变体。onInit函数 真的很长(约1000行的生成代码)。

第217917号票

谢谢,我们将在周一研究这个问题。
 
Valmars:

据我所知,在测试之前,测试人员为所连接的账户(如果没有连接到服务器,则为最后一个连接的账户)创建一个市场环境,检查与服务器的数据同步(同样,如果有连接),上传测试开始日期的缺失报价(如果有连接),为所有必要的符号创建一个测试序列的报价,然后才开始测试。如果他没有设法下载必要的历史记录(例如,由于服务器上缺乏历史记录或由于没有与服务器连接),怎么办??它诚实地告诉你。不,你不必如此。

接下来,你要获得服务器上(在测试器中)历史记录的起始日期。看来,这个属性并不包括在测试者的市场环境中,尽管它可能已经从服务器上保存下来。这是一个错误吗?我想不会。在测试开始后,测试人员不能访问服务器(通过终端)下载你需要的报价。所有可用的东西,在测试过程的初始化阶段已经被测试人员加载,测试序列已经形成,无法改变。而不是SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE),在你的情况下,我认为你可以使用SeriesInfoInteger(symbol,0,SERIES_FIRSTDATE), ,它应该在测试器中工作。


同一函数的返回值为零。我也试过SERIES_TERMINAL_FIRSTDATE 结论是, SeriesInfoInteger 函数 在测试器中不起作用它只对正在运行测试的仪器起作用。也许你有什么想法,当选择 "所有历史 "区间时,如何对具有不同历史开始日期的仪器进行测试。
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту - Документация по MQL5
 
终端上的时间再次跳到了GMT+0,应该是GMT+1,这一点已经讨论过了。请纠正它。