Page 1 of 1

Utilisation d'une moyenne mobile

Posted: 23 Jun 2016 13:48
by XXEROFF
Bonjour,

Dans le code ci-dessous, la ligne du graphe (Repu) reste plate, égale à 0.
En revanche, si je remplace :

Code: Select all

MovingAverage(Rep, MaRep, $period);
par

Code: Select all

MovingAverage(Rep, Rep, $period);
,

le code semble fonctionner.

J'aimerais savoir ce qu'il se passe dans chaque cas.

Merci d'avance !

Code: Select all

// Mon Repulse 23/06/2016

Express  A_Mon_Repulse
Vars
series  Repu, Sigma, Mov, Rep, MaRep;

input $period (1,100,10);

Calculation

if IsFirstBar() then 
begin
  CalculateAtEveryTick(false);
  SetYscaleFormat(GetPriceFormat());
end
if CurrentBarIndex()  <= $Period   then
   Repu = void;
else
begin
   Sigma = 5*c-2*(l+h)-o;
   Mov   = 2*(h-l)+AbsValue(c-o);
   Rep= Sigma/Mov;
   if IsFirstBar() then 
     MovingAverage(Rep, MaRep, $period);
   Repu=MaRep*100;
end

Interpretation
begin end

plot (Repu, lightred, 1);

Re: Utilisation d'une moyenne mobile

Posted: 23 Jun 2016 14:13
by WHS Support
Bonjour,

Sauf erreur de ma part (mais je me trompe peut-être), il n'y a aucune fonction définissant MaRep dans le code que vous donnez. La série est donc nulle et ne peut pas être utilise, cela donne donc une courbe plate.

Cordialement

WHS Lux

Re: Utilisation d'une moyenne mobile

Posted: 23 Jun 2016 14:43
by XXEROFF
Bonjour,

MaRep n'est-elle pas définie ici:

Code: Select all

MovingAverage(Rep, MaRep, $period);
comme le résultat du calcul de la moyenne mobile ?

merci

Re: Utilisation d'une moyenne mobile

Posted: 24 Jun 2016 08:54
by XXEROFF
Bonjour,

J'ai fini par trouver l'explication et la solution à mon questionnement:
tout çà est dans le code corrigé:

Code: Select all

// Mon Repulse 23/06/2016

Express A_Mon_Repulse
Vars
numeric i;
series  Repu, Sigma, Mov, Rep, MaRep, line100, line_100, ema1, macd;

input $period (1,100,10);

Calculation

CalculateAtEveryTick(false);
if IsFirstBar() then
begin
  for i= 0 to FinalBarIndex()
  begin
   Sigma[-i] = 5*c[-i]-2*(l[-i]+h[-i])-o[-i];
   Mov[-i]  = 2*(h[-i]-l[-i])+AbsValue(c[-i]-o[-i]);
   if isNonZero(Mov[-i]) then
     Rep[-i]= Sigma[-i]/Mov[-i];
   else Rep[-i] = void;
  end

  ExpMovingAverage(Rep, MaRep, $period);
end

Repu=MaRep*100;

line100=100;
line_100=-100;

Interpretation
begin end

plot(line100,red,2);
plot(line_100,lightblue,2);
plot (Repu, lightred, 1);
xxeroff