MT4的iMAOnArray和iBandsOnArray元素数量对计算的影响 - 页 8

 
Sergey Efimenko:
我应该猜到有一个不同的代码吗?上面的截图也是如此,最后的100条被计算,但实际上所有的条都被计算了,但只有100条被复制到缓冲区。是的,为什么不马上公布代码呢?就不会有这样的答案了。我本来想实质性地回答,我不明白有什么意义?你可以立即从代码中看到发生了什么,什么算数,是否有上述缺陷。而屏幕给你的是什么?除了结果,什么都没有,关于结果已经说过了,它可以通过不同的方式达到,但不是所有的方式都能接受眼前的任务--减少计算时间。

令人信服的。一定是之前拿了多少钱......。对此我很抱歉。

 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);

结果见上面的截图。

 
Alexey Viktorov:

令人信服的。一定是之前拿了多少钱......。我很抱歉。

结果见上面的截图。

你能说多少这样的胡话呢?
 
Dmitry Fedoseev:
你能吐出多少这样的废话?
我以前回答过了。

阿列克谢-维克多罗夫

你是唯一一个可以发动拳头的人。现在算算你和我这种语气互动的论坛成员有多少了。 走吧,撒旦。

 
Alexey Viktorov:
先前已回答。
那么,你能吐出多少这样的胡话呢?你想证明什么?
 
Dmitry Fedoseev:
你能吐出多少这样的废话?你想证明什么?
对你来说没什么。
 
Alexey Viktorov:
对你来说没有什么。
而对谁、对什么?
 
Dmitry Fedoseev:
那么为了谁,为了什么呢?
为了我自己,我正在享受乐趣。这样我的大脑就不会干枯,也许人们会从中受益。你所做的一切就是拉屎...走吧,撒旦...
 
Alexey Viktorov:
供我自娱自乐。为了不让我的大脑干涸,同时,也许人们会受益。你所做的一切就是拉屎...走吧,撒旦...
那么你就找错了娱乐的地方。
 
Alexey Viktorov:

令人信服的。一定是之前拿了多少钱......。我很抱歉。

结果见上面的截图。

尝试设置SMMA模式 :)但即使没有它,仍然会有过多的数组复制,如果你将计算量乘以每一个tick,特别是随着平滑期的增长,数组也会增长。
 
Sergey Efimenko:
试试SMMA模式 :)
或 EMA