You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
my first post here, but i have to say very good site!
I'm working a custom indicator that i have made. So far so good but i can not get values from it older than lets say x bars. Why is that, when i'm reading all bars with Bars-1 function?
Maybe the problem is in Time[i+j] function? Is that possible? Or may be the drawing arrey is restricted some how?
This is a simple correlation indicator. Please take a look at my code:
#property copyright "*"
#property link "*"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color2 White
#property indicator_color4 Red
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_level1 0.7
#property indicator_level2 -0.7
extern int Per=14;
bool GBPJPY_v_EURJPY=true;
bool USDJPY_v_EURJPY=true;
double CloseEURJPY,CloseGBPJPY;
double CloseUSDJPY;
double summaEURJPY=0,summaGBPJPY=0;
double summaUSDJPY=0;
double summaPow_EURJPY=0,summaPow_GBPJPY=0;
double summaPow_USDJPY=0;
double summa_eur_aud=0,summa_eur_jpy=0;
double sredneeEURJPY=0,s,sredneeGBPJPY=0;
double sredneeUSDJPY=0;
double Q_eur_usd=0,Q_gbp_usd=0,Q_aud_usd=0,Q_usd_chf=0,Q_usd_jpy=0,Q_usd_cad=0;
double Correl_eur_aud=0,Correl_eur_jpy=0;
double ExtMapBuffer2[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,ExtMapBuffer4);
SetIndexLabel(1,"GBPJPY v EURJPY");
SetIndexLabel(3,"USDJPY v EURJPY");
IndicatorDigits(2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start(){
int limit=Bars-1;
for(int j=limit;j>=0;j--){
sredneeEURJPY=0;
sredneeGBPJPY=0;
sredneeUSDJPY=0;
summaEURJPY=0;
summaGBPJPY=0;
summaUSDJPY=0;
summaPow_EURJPY=0;
summaPow_GBPJPY=0;
summaPow_USDJPY=0;
summa_eur_aud=0;
summa_eur_jpy=0;
Q_eur_usd=0;
Q_gbp_usd=0;
Q_aud_usd=0;
Q_usd_chf=0;
Q_usd_jpy=0;
Q_usd_cad=0;
Correl_eur_aud=0;
Correl_eur_jpy=0;
for (int i=0; i<Per; i++){
CloseEURJPY=iClose("EURJPY", 0,iBarShift("EURJPY", 0, Time[i+j], false));//X
if(GBPJPY_v_EURJPY)CloseGBPJPY=iClose("GBPJPY", 0, iBarShift("GBPJPY", 0,Time[i+j], false));//Y
if(USDJPY_v_EURJPY)CloseUSDJPY=iClose("USDJPY", 0, iBarShift("USDJPY", 0,Time[i+j], false));//Y
summaEURJPY=summaEURJPY+CloseEURJPY;//Xi
if(GBPJPY_v_EURJPY)summaGBPJPY=summaGBPJPY+CloseGBPJPY;//Yi
if(USDJPY_v_EURJPY)summaUSDJPY=summaUSDJPY+CloseUSDJPY;//Yi
summaPow_EURJPY=summaPow_EURJPY+MathPow(CloseEURJPY, 2);//Xi2
if(GBPJPY_v_EURJPY)summaPow_GBPJPY=summaPow_GBPJPY+MathPow(CloseGBPJPY, 2);//Yi2
if(USDJPY_v_EURJPY)summaPow_USDJPY=summaPow_USDJPY+MathPow(CloseUSDJPY, 2);//Yi2
if(GBPJPY_v_EURJPY)summa_eur_aud=summa_eur_aud+(CloseEURJPY*CloseGBPJPY);//XiYi
if(USDJPY_v_EURJPY)summa_eur_jpy=summa_eur_jpy+(CloseEURJPY*CloseUSDJPY);//XiYi
}
sredneeEURJPY=summaEURJPY/Per;//X
if(GBPJPY_v_EURJPY)sredneeGBPJPY=summaGBPJPY/Per;//Y
if(USDJPY_v_EURJPY)sredneeUSDJPY=summaUSDJPY/Per;//Y
Q_eur_usd=MathSqrt(MathAbs(summaPow_EURJPY/Per-MathPow(sredneeEURJPY, 2)));//Qx
if(GBPJPY_v_EURJPY)Q_aud_usd=MathSqrt(MathAbs(summaPow_GBPJPY/Per-MathPow(sredneeGBPJPY, 2)));//Qy
if(USDJPY_v_EURJPY)Q_usd_jpy=MathSqrt(MathAbs(summaPow_USDJPY/Per-MathPow(sredneeUSDJPY, 2)));//Qy
if(GBPJPY_v_EURJPY)if(Q_eur_usd*Q_aud_usd!=0)Correl_eur_aud=NormalizeDouble((summa_eur_aud/Per-sredneeEURJPY*sredneeGBPJPY)/(Q_eur_usd*Q_aud_usd), 2);
if(USDJPY_v_EURJPY)if(Q_eur_usd*Q_usd_jpy!=0)Correl_eur_jpy=NormalizeDouble((summa_eur_jpy/Per-sredneeEURJPY*sredneeUSDJPY)/(Q_eur_usd*Q_usd_jpy), 2);
if(GBPJPY_v_EURJPY)ExtMapBuffer2[j]=Correl_eur_aud;
if(USDJPY_v_EURJPY)ExtMapBuffer4[j]=Correl_eur_jpy;
}
}