MT4 iMAOnArray y iBandsOnArray efecto del número de elementos en los cálculos - página 8

 
Sergey Efimenko:
¿Se supone que debo adivinar que hay un código diferente? La captura de pantalla anterior también, donde se contaron las últimas 100 barras, pero en realidad se contaron todas las barras, pero sólo 100 se copiaron en el buffer. Sí y ¿por qué no publicar el código de una vez? No habría habido tal respuesta. Habría respondido de forma sustantiva, no entiendo cuál es el objetivo. En el código se puede ver inmediatamente lo que sucede, lo que cuenta y si hay los defectos mencionados. ¿Y qué te da la pantalla? Nada más que el resultado, y sobre el resultado ya dicho, se puede llegar de diferentes maneras, pero no todas ellas son aceptables para la tarea que nos ocupa: reducir el tiempo de cálculo.

Convincente. Debe haber sido la cantidad tomada antes... Lo siento.

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

El resultado está en la captura de pantalla de arriba.

 
Alexey Viktorov:

Convincente. Debe haber sido la cantidad tomada antes... Lo siento.

El resultado está en la captura de pantalla de arriba.

¿Cuántas tonterías se pueden decir?
 
Dmitry Fedoseev:
¿Cuántas tonterías puedes soltar?
Ya se ha contestado antes.

Alexey Viktorov:

Eres el único que puede empezar una pelea a puñetazos. Cuenta con cuántos miembros del foro has interactuado con este tono de voz así conmigo ahora. Vete, Satanás.

 
Alexey Viktorov:
Ya se ha contestado antes.
¿Cuántas tonterías puedes soltar? ¿Qué intenta demostrar?
 
Dmitry Fedoseev:
¿Cuántas tonterías puedes soltar? ¿Qué intenta demostrar?
Nada para ti.
 
Alexey Viktorov:
Nada para ti.
¿Y a quién y qué?
 
Dmitry Fedoseev:
¿Y para quién y qué?
Por mi propio bien, me estoy divirtiendo. Así mi cerebro no se seca, y al mismo tiempo, la gente puede beneficiarse. Lo único que haces es cagar... Vete, Satanás...
 
Alexey Viktorov:
Para mi propia diversión. Para evitar que mi cerebro se seque, y al mismo tiempo, tal vez la gente se beneficie. Lo único que haces es cagar... Vete, Satanás...
Entonces te has equivocado de lugar de entretenimiento.
 
Alexey Viktorov:

Convincente. Debe haber sido la cantidad tomada antes... Lo siento.

El resultado está en la captura de pantalla de arriba.

Prueba a poner el modo SMMA :) Pero incluso sin ella, sigue habiendo una copia excesiva del array, y si se multiplican los cálculos por cada tick, especialmente a medida que crece el periodo de suavizado, el array también crecerá.
 
Sergey Efimenko:
Prueba el modo SMMA :)
O EMA