Utilisation d'une moyenne mobile

Post Reply
XXEROFF
Posts: 23
Joined: 25 Mar 2016 08:36

Utilisation d'une moyenne mobile

Post 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);
User avatar
WHS Support
Posts: 2430
Joined: 14 Feb 2013 10:27

Re: Utilisation d'une moyenne mobile

Post 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
XXEROFF
Posts: 23
Joined: 25 Mar 2016 08:36

Re: Utilisation d'une moyenne mobile

Post 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
XXEROFF
Posts: 23
Joined: 25 Mar 2016 08:36

Re: Utilisation d'une moyenne mobile

Post 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
Post Reply

Return to “WHS NANOTRADER - EXPRESS PROGRAMMING”