highest and lowest rsi,how?
#property indicator_separate_window
#property indicator_maximum 100
#property indicator_minimum 0
#property indicator_buffers 3
#property indicator_color1 DodgerBlue
#property indicator_color2 Maroon
#property indicator_color3 Maroon
#property indicator_levelstyle 0;
#property indicator_level1 70
#property indicator_level2 30
#property indicator_levelcolor DarkSlateGray
extern int RSIPeriod=14;
int bgn,k,i;
double Brsi[],Bh[],Bl[],Bpos[],Bneg[];
int init(){
IndicatorBuffers(5);
SetIndexBuffer(0,Brsi); SetIndexDrawBegin(0,RSIPeriod+1);
SetIndexBuffer(1,Bh); SetIndexDrawBegin(1,RSIPeriod+1);
SetIndexBuffer(2,Bl); SetIndexDrawBegin(2,RSIPeriod+1);
SetIndexBuffer(3,Bpos);
SetIndexBuffer(4,Bneg);
IndicatorShortName(NULL);
bgn=Bars-RSIPeriod-1;
return(0);
}
int start(){i=Bars-IndicatorCounted()-1; double sumn,sump,rel,positive,negative,positive_h,negative_h,positive_l,negative_l;
while(i>=0){if(i<bgn){sumn=0; sump=0;
rel=Close[i]-Close[i+1];
if(rel>0){sump=rel;}
else {sumn=-rel;}
positive=(Bpos[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;
negative=(Bneg[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;
sumn=0; sump=0;
rel=High[i]-Close[i+1];
if(rel>0){sump=rel;}
else {sumn=-rel;}
positive_h=(Bpos[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;
negative_h=(Bneg[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;
sumn=0; sump=0;
rel=Low[i]-Close[i+1];
if(rel>0){sump=rel;}
else {sumn=-rel;}
positive_l=(Bpos[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;
negative_l=(Bneg[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;
}
else{k=Bars-2; sumn=0; sump=0;
while(k>=i){rel=Close[k]-Close[k+1];
if(rel>0){sump+=rel;}
else {sumn-=rel;}
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
k=Bars-2; sumn=0; sump=0;
while(k>=i){rel=High[k]-Close[k+1];
if(rel>0){sump+=rel;}
else {sumn-=rel;}
k--;
}
positive_h=sump/RSIPeriod;
negative_h=sumn/RSIPeriod;
k=Bars-2; sumn=0; sump=0;
while(k>=i){rel=Low[k]-Close[k+1];
if(rel>0){sump+=rel;}
else {sumn-=rel;}
k--;
}
positive_l=sump/RSIPeriod;
negative_l=sumn/RSIPeriod;
}
Bpos[i]=positive;
Bneg[i]=negative;
if(negative==0){Brsi[i]=0;}
else {Brsi[i]=100-100/(1+positive/negative);}
if(negative_h==0){Bh[i]=0;}
else {Bh[i]=100-100/(1+positive_h/negative_h); if(High[i+1]<High[i] && Bh[i+1]>Bh[i]){Bh[i]=Bh[i+1];}}
if(negative_l==0){Bl[i]=0;}
else {Bl[i]=100-100/(1+positive_l/negative_l); if(Low[i+1]<Low[i] && Bl[i+1]>Bl[i]){Bl[i]=Bl[i+1];}}
i--;
}
return(0);
}
Files:
RSI_with_hl_m0.9.mq4
4 kb
this its normal rsi code..its close price values...how change code?--> highest price,highest or lowest rsi valus?