Pourquoi "If IsFirstBar"
Lors de l'écriture d'un indicateur on recommande de commencer la partie CALCULATION par :
if isfirstbar() then begin
CalculateAtEveryTick(false) ;
SetYscaleFormat(GetPriceFormat());
end
L'instruction CalculateAtEveryTick(false) permet d'éviter que le calcul de l'indicateur se fasse à chaque tick ce qui peut représenter plusieurs dizaines de calculs par seconde, de quoi faire "exploser" les capacités de votre ordinateur.

%20(1).png)

Il existe une troisième solution c'est d'utiliser une méthode de calcul différente de la moyenne mobile qui est plus rapide.
If isfirstbar() then
Begin
CalculateAtEveryTick(false);
SetYscaleFormat(GetPriceFormat());
end
CM = (Close+H+L) /3;
if CurrentBarIndex() <= 10 then MMobile = CM;
if CurrentBarIndex() > 10 then
begin
MMobile = MMobile[1] + (CM - MMobile[1]) /10;
End