function [fastK,fastD,slowK,slowD]=Stoch(price,high,low,longueur,long_moy_fast,long_moy_slow,type)

% price= cloture la plupart du temps
% longueur donne le nombre de bar pour le calcul du fastK
% long_moy_fast pour la moyenne du fastD
% long_moy_slow pour la moyenne du slowD
% type=1 utilise une moyenne mobile classique
% type=2 utilise une moyenne mobile exponetielle;
% type=3 utilise une moyenne mobile pondérée triangulaire;

if size(price,2)>size(price,1)
    price=price';
end;
fastK=zeros(size(price,1),1);
HH=zeros(size(price,1),1);
LL=zeros(size(price,1),1);
for i=longueur:size(price,1)
    HH(i)=max(high(i-longueur+1:i));
    LL(i)=min(low(i-longueur+1:i));
    fastK(i)=100*(price(i)-LL(i))/(HH(i)- LL(i));
end;

if type==1
    fastD=MM(fastK,long_moy_fast);
    slowD=MM(fastD,long_moy_slow);
end;

if type==2
    fastD=MME(fastK,long_moy_fast);
    slowD=MME(fastD,long_moy_slow);
end;

if type==3
    fastD=MMP(fastK,long_moy_fast);
    slowD=MMP(fastD,long_moy_slow);
end;

slowK=fastD;
