indx = rates_total-prev_calculated; //было indx = rates_total-prev_calculated-1; - что чаще всего < 0
if(prev_calculated<1) indx=rates_total-2; //было if(indx<0) indx=0; - то есть всегда i=0 а цикл-то до 1, на i=0 цикл никогда не просчитается
sm_bar = (Close[1] - Open[rates_total-1])/rates_total; //индекс не может быть [rates_total]
i = indx;
k = 0;
ekviti[rates_total-1] = 0; //индекс не может быть [rates_total]
while(i >= 0)
{
if(bar_n == TimeDayOfWeek(iTime(NULL,0,i)))
{
ekviti[i] = ekviti[i+1] + close[i] - open[i] - sm_bar;
k++;
}
else ekviti[i] = ekviti[i + 1];
i--;
}
谢谢,学会了,修好了。
而在测试时(不启用优化),我们为什么要加载所有的核心?毕竟,如果用可视化的方式进行测试,就不急于求成,而如果不用可视化的方式进行测试,现代计算机在单核上就可以像向日葵一样完成测试。
我想如果所有的核心都能在测试中工作而不需要可视化,那就更快了,我只是觉得即使使用现代处理器,安静地运行也缺乏速度,也许这在很大程度上取决于代码的正确性,如果优化得好,那么一切都会很快,如果不是,就会很久。
请你告诉我,用于GPU或显卡的OpenCL是否会影响测试的速度,还是仅仅用于编写代码,如果代码是为OpenCL编写的,那么它在测试模式 下会运行得更快,而如果只是代码。
你能告诉我OpenCL对测试速度 是否有一定的影响,还是只是为了写代码,如果代码是用OpenCL写的,那么在测试模式下会运行得更快,如果只是代码的话。
据我所知,MT5中的OpenCL有助于使用 "重型 "图形,显卡不参与测试和优化,否则大家早就在代理服务上挖矿了,就像比特币一样。
如果是这样就太可惜了,我希望一切都能参与进来)
我刚刚在那个网站mt5上看到一个机器人代码,下载后进行了测试,花了这么长时间,特别是在所有的ticks上,最好是使用所有的核心,而不是一个,但很可能是那个网站上发布的大多数代码写错了,所以测试才这么长,我的处理器当然不是英特尔的,但8个核心4.000GHz应该会飞,但我坐在测试仪的笔记本上,如果mt5有这样的毛病,那就太悲哀了,为什么会 这样。
变量应该在那里,而不是其他东西。
告诉我错误在哪里。我的头已经很疼了。(
指标窗口从-99999挂起...到+99999...99
指标窗口从-99999挂起...到+99999...99
i 的值被算错了,循环将永远不会被计算,而且在数组之外 的几个地方也会有出口(原因用红色标出)。
这样更好。