来自一个 "傻瓜 "的问题 - 页 189

 
Yedelkin:

所以这个错误也发生在模拟账户上(不是在测试器中)?

而且最好在 "交易策略的测试 "部分阅读有关测试的历史。

我不太明白 "在模拟账户上(不是在测试器中)"是什么意思。

我的文件/登录是MetaQuotes-Demo服务器的新测试账户。

我进入策略视图/测试器。我从2012年1月1日开始启动我的专家顾问,得到了错误。

我从2011年1月1日到今天一直在做这个工作。一切运行都没有任何问题。

 
MegaVoin: 我不太明白 "在模拟账户上(不是测试者)"是什么意思。
嗯,这很简单。在模拟账户上用所需的符号-周期对(例如,欧元兑美元,10分钟)打开一个图表,并将您的专家顾问附加到这个图表上。然后在 "工具"(Ctrl+T)、"专家 "标签下查看日志。
 
MegaVoin:

我去查看/策略测试器。我从2012年1月1日启动我的EA,我得到了错误。

我从2011年1月1日开始到今天。一切运行都没有任何问题。

阅读有关测试的基础知识:https://www.mql5.com/ru/articles/239


报价。

测试代理只下载缺失的历史记录,并留有很小的余地,以便在测试开始时提供必要的历史数据来计算指标。对于D1及以下的时间段,从交易服务器下载的最小历史量是一年。因此,如果我们 在2010.11.01-2010.12.01的区间内开始测试(在一个月的区间内测试),周期为M15(每个条形是15分钟),终端将要求提供2010年全年的历史数据。

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • 2011.03.28
  • MetaQuotes Software Corp.
  • www.mql5.com
В чем различия между тремя режимами тестирования в MetaTrader 5 и на что обратить внимание? Как происходит тестирование эксперта, торгующего одновременно на нескольких инструментах? Когда и как вычисляются значения индикаторов при тестировании и как обрабатываются события? Как синхронизировать бары с разных инструментов при тестировании в режиме "Только цены открытия"? Статья призвана дать ответы на эти и многие другие вопросы.
 
Yedelkin:
嗯,这很简单。在模拟账户上用所需的符号-周期对开一个图表(例如,欧元兑美元,10分钟),并将您的专家顾问附加到这个图表上。然后在 "工具"(Ctrl+T)、"专家 "标签中查看日志。

它是有效的。记录该函数的计算结果。每打一次勾 就输出一次,结果与事实相似。

因此,故障在测试器中。

 
MegaVoin: 它是有效的。记录该函数的计算结果。每打一次勾就输出一次,结果与事实相似。
嗯,这很好!:)现在试着看一下上面提到的关于测试的链接。它们是相似的,文章的文字被移到了参考文献中。
 
Yedelkin:
嗯,这很好!:)现在试着通过上述关于测试的链接来看看。它们是相似的,文章的文字已经移到了参考文献中。

我已经仔细阅读了它。我所得到的是,如果有些东西没有被加载,那么当数据被访问时,它将被自动加载。

我以不同的方式解决了这个问题。然而,我并不太喜欢这种解决问题的方式。我将整个程序中的_Period改为PERIOD_M10,并将测试器中的时间范围从10分钟改为1个月。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
MegaVoin: 我已经仔细阅读了它。我所得到的是,如果有些东西没有加载,那么在访问数据时就会自动加载。
它说,"测试代理从终端接收被测试符号的历史记录"。下面说,终端可以强行下载历史记录,并提供了一个链接。为了不为所需的历史深度是否可用的问题所困扰,你可以尝试在程序的OnInit()函数 中插入强制加载必要时间范围的历史脚本,看看结果如何。也就是说,看看这个脚本在测试器中工作时,是否下载了每月的时间框架的历史记录。
 
强制下载历史记录的脚本с указанием нужного таймфрейма

他们建议打电话给SymbolSelec,但不幸的是,没有时间框架:(

bool  SymbolSelect(
   string  name,       // имя символа
   bool    select      // включить или выключить
   ); 

 
MegaVoin: 他们建议调用SymbolSelecе,但不幸的是,当你调用它时,并没有时间框架:(
bool  SymbolSelect(
   string  name,       // имя символа
   bool    select      // включить или выключить
   );

问题的脚本是"intCheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date)"。

这里说的是https://www.mql5.com/ru/docs/series/timeseries_access

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

问题的脚本是"intCheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date)"。

这里有https://www.mql5.com/ru/docs/series/timeseries_access

我以后会尝试的。

非常感谢您的帮助!