MT4 iMAOnArray et iBandsOnArray : effet du nombre d'éléments sur les calculs - page 8

 
Sergey Efimenko:
J'étais censé deviner qu'il y a un code différent ? La capture d'écran ci-dessus montre également que les 100 dernières barres ont été comptées, mais en fait toutes les barres ont été comptées, mais seulement 100 ont été copiées dans le tampon. Oui et pourquoi ne pas poster le code en une seule fois ? Il n'y aurait pas eu une telle réponse. J'aurais répondu sur le fond, je ne comprends pas, quel est l'intérêt ? Vous pouvez immédiatement voir dans le code ce qui se passe, ce qui compte et s'il y a les défauts mentionnés ci-dessus. Et que vous donne l'écran ? Rien d'autre que le résultat, et à propos du résultat déjà dit, il peut être atteint de différentes manières, mais toutes ne sont pas acceptables pour la tâche à accomplir - réduire le temps de calcul.

Convaincant. Ça doit être la quantité prise avant... Désolé pour ça.

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

Le résultat est dans la capture d'écran ci-dessus.

 
Alexey Viktorov:

Convaincant. Ça doit être la quantité prise avant... Je suis désolé.

Le résultat est dans la capture d'écran ci-dessus.

Combien de ces absurdités pouvez-vous dire ?
 
Dmitry Fedoseev:
Combien de ces absurdités pouvez-vous débiter ?
J'ai déjà répondu auparavant.

Alexey Viktorov:

Tu es le seul à pouvoir déclencher une bagarre. Comptez combien de membres du forum vous avez interagi avec ce ton de voix comme ça avec moi maintenant. Va-t'en, Satan.

 
Alexey Viktorov:
Réponse donnée précédemment.
Alors combien de ces absurdités pouvez-vous débiter ? Qu'essayez-vous de prouver ?
 
Dmitry Fedoseev:
Combien de ces absurdités pouvez-vous débiter ? Qu'essayez-vous de prouver ?
Rien pour toi.
 
Alexey Viktorov:
Rien pour toi.
Et à qui et quoi ?
 
Dmitry Fedoseev:
Et pour qui et quoi ?
Pour mon propre bien, je m'amuse. Pour que mon cerveau ne se dessèche pas, et peut-être que des gens en profiteront. Tu ne fais que chier... Va-t'en, Satan...
 
Alexey Viktorov:
Pour mon propre amusement. Pour empêcher mon cerveau de se dessécher, et en même temps, peut-être que des gens en profiteront. Tu ne fais que chier... Va-t'en, Satan...
Alors vous êtes au mauvais endroit pour vous divertir.
 
Alexey Viktorov:

Convaincant. Ça doit être la quantité prise avant... Je suis désolé.

Le résultat est dans la capture d'écran ci-dessus.

Essayez de régler le mode SMMA :) Mais même sans cela, il y a toujours une copie excessive du tableau, et si vous multipliez les calculs par chaque tick, en particulier lorsque la période de lissage augmente, le tableau grandira aussi.
 
Sergey Efimenko:
Essayez le mode SMMA :)
Ou EMA