int i, limit;
limit = prev_calculated == 0 ? rates_total-1 : rates_total-prev_calculated;
double buffer[]; // это промежуточный буфер для расчётаArraySetAsSeries(buffer, true); // это сам знаешьfor(i = limit; i >= 0; i--)
{
Buffer[i]=open[i]; // в комментарии не нуждается
BufferBMA[i] = NormalizeDouble(iMAOnArray(Buffer, 0, 5, 0, MODE_LWMA, i), _Digits); // Я воспользовался этим буфером чтобы не описывать ещё один
if(rates_total-i >= rates_total-50) // Всё основное действо...
{
ArrayCopy(buffer, Buffer, 0, i, 5); // Копируем в дополнительный буфер часть основного
BufferMA[i] = NormalizeDouble(iMAOnArray(buffer, 0, 5, 0, MODE_LWMA, 0), _Digits); // и вычисляем среднее значение с указанным периодом
}
}
return(rates_total);
我应该猜到有一个不同的代码吗?上面的截图也是如此,最后的100条被计算,但实际上所有的条都被计算了,但只有100条被复制到缓冲区。是的,为什么不马上公布代码呢?就不会有这样的答案了。我本来想实质性地回答,我不明白有什么意义?你可以立即从代码中看到发生了什么,什么算数,是否有上述缺陷。而屏幕给你的是什么?除了结果,什么都没有,关于结果已经说过了,它可以通过不同的方式达到,但不是所有的方式都能接受眼前的任务--减少计算时间。
令人信服的。一定是之前拿了多少钱......。对此我很抱歉。
结果见上面的截图。
令人信服的。一定是之前拿了多少钱......。我很抱歉。
结果见上面的截图。
你能吐出多少这样的废话?
阿列克谢-维克多罗夫。
你是唯一一个可以发动拳头的人。现在算算你和我这种语气互动的论坛成员有多少了。 走吧,撒旦。
先前已回答。
你能吐出多少这样的废话?你想证明什么?
对你来说没有什么。
那么为了谁,为了什么呢?
供我自娱自乐。为了不让我的大脑干涸,同时,也许人们会受益。你所做的一切就是拉屎...走吧,撒旦...
令人信服的。一定是之前拿了多少钱......。我很抱歉。
结果见上面的截图。
试试SMMA模式 :)