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

 

谢谢你的回答!移动了测试期的开始时间,并加入了将数据复制到专家顾问阵列中的检查。如果没有足够的数据,专家顾问就不会工作。

double h[1000],l[1000];

if(CopyHigh("EURUSD",PERIOD_D1,1,1000,h)<1000 || CopyLow("EURUSD",PERIOD_D1,1,1000,l)<1000) return;

虽然,坦率地说,这种解决问题的方式很出乎意料--终端中的图表似乎有条形(一切都已经从交易 服务器上下载了大量的股票),但测试者却没有机会接触到它们。

以某种方式将这种情况直接写在文档中,作为 "如何在测试期开始时绕过测试者的限制 "标题下的一个例子,会很有用。

 
solandr: 虽然,坦率地说,这种解决问题的方式很出乎意料--客户终端的图表似乎有条形(一切都已经从交易 服务器上下载了大量的股票),但测试者却无法接触到它们

请看《手册》中关于测试的部分。在我看来,有一种想法是,在 "终端-测试者 "的组合中,终端充当服务器,测试者充当终端。也就是说,如果终端有所有可用的历史记录,那么在测试器中的相同数量的历史记录是不够的。测试人员根据测试的设置,自行下载历史记录,可能会发生这种历史记录的数量不足以满足被测试程序的逻辑。

我自己还没有为测试大的时间框架而加载历史记录,但与其增加测试间隔,不如尝试在代码中插入所谓的 "加载历史记录的脚本"。在理念上,这个脚本应该为测试提供必要的历史深度(尤其是你已经复制了它的工作逻辑)。

 
Yedelkin:

我自己没有用下载历史记录来测试大的时间框架,但与其增加测试间隔,不如尝试在代码中插入所谓的 "下载历史记录的脚本"。按照想法,这个脚本应该为测试提供必要的历史深度(尤其是你已经复制了它的工作逻辑)。

它将不会起作用
 
stringo: 这是不可能的。
我明白了。因此,我很幸运地用一个类似的脚本下载了M1上几个工具的历史记录(请求的深度没有超过两三个星期)。历史就在那里,但由于它到底出现了什么,我没有去想它。
 
stringo:
这是不可能的。
这真的没有用。测试员按照自己的规则坚定地下载历史记录,而下载历史记录的脚本是内置在专家顾问中的,不能下载任何额外的东西。
 
solandr: 这真的没有用。测试员按照自己的规则坚定地下载历史记录,而下载历史记录的脚本是内置在专家顾问中的,不能下载任何额外的东西。
那么这一点就不清楚了:如果我只想测试最后一个月,但程序要求分析3年前的数据,我应该怎么做?
 
Yedelkin:
那么这一点就不清楚了:如果你只想测试最后一个月,但程序需要3年的D1数据进行分析,怎么办?
你第一次访问历史记录时,测试器将开始下载(像这样)。
 

这个案子很早以前就被发现了。 在D1中,历史是与+1年相关的。

因此,如果你指定01.01.2012开始测试,那么专家顾问立即开始交易,平均周期应该小于260。

也就是说,它将在测试期开始时用2011年的数据进行计算。

如果我们需要,比如说,520天的平均数,那么我们可以尝试表示测试期的开始,01.01.2011.

在这种情况下,数据将从2010年开始,520天的平均值将在2012年初获得。

专家顾问不应该在没有数据的情况下进行交易。

 
notused: 当你第一次访问历史记录时,测试者将开始恢复下载(我想是这样)。
但是,事实上,下载历史记录的脚本做的是同样的事情,即访问历史记录(如果失败了,它就会访问一次以上)。
 
Karlson: 如果我们想要一个520天的平均值,我们可以尝试指定测试的开始时间为2011年1月1日。

在这种情况下,数据将来自2010年,在2012年初,将有一个520天的平均数。

所以我的第一个建议,即增加测试间隔是唯一可能的解决方案?:/