2016-10-17 2 views
0

이 코드의 주요 작업은 다음과 같습니다
18 개의 서로 다른 심볼의 마감가를 취하고 각각의 심볼 CORREL 값을 계산하는 함수를 어떻게 코딩합니까?

  1. 는 18 가지 symbols- 모든 주요 쌍 Close 가격을받을 수 있습니다.
    CopyClose() 기능을 사용하여 18 개의 다른 배열로.

  2. 모든 18 개의 기호가 쌍을 이루어 각각 324 개의 배열을 만듭니다.
    (나는 내 ​​부분에, 가난한 디자인을 알고, 사람을 알고 있지만 난 그냥 9 월에 코딩을 시작, 당신의 도움이 필요한 이유 이잖아.)

  3. 은 각 324 개 배열을 계산하는 Pearson_r()에 전달받을 그들 사이의 상관 관계.

  4. 상관 결과가 2D 배열의 특정 열과 행에 할당 된 후. (상관 행렬).

난 그냥 모두 324 쌍 귀하의 상관 관계를 계산하는 기능을 원하고, 다음 2D - 배열의 specicfic 열과 행에 저장합니다.

2 차원 배열에 대한 할당이 특수한 이유는 85.0보다 큰 상관 값을 검색 할 때 열과 행이 어느 기호에 속하는지 알 필요가 있기 때문입니다. 상관 헤지 EA. 여기

는 내 :

int OnInit() 
{   
double audjpy_data[12]; 
double audusd_data[12]; 

double chfjpy_data[12]; 

double euraud_data[12]; 
double eurcad_data[12]; 
double eurchf_data[12]; 
double eurgbp_data[12]; 
double eurjpy_data[12]; 
double eurusd_data[12]; 

double gbpaud_data[12]; 
double gbpcad_data[12]; 
double gbpchf_data[12]; 
double gbpjpy_data[12]; 
double gbpusd_data[12]; 

double nzdjpy_data[12]; 
double nzdusd_data[12]; 
double usdcad_data[12]; 
double usdchf_data[12]; 
double usdjpy_data[12]; 

NormalizeDouble(CopyClose("USDCHF",PERIOD_H1,1,11,usdchf_data),8); 
NormalizeDouble(CopyClose("USDJPY",PERIOD_H1,1,11,usdjpy_data),8); 
NormalizeDouble(CopyClose("GBPUSD",PERIOD_H1,1,11,gbpusd_data),8);  

NormalizeDouble(CopyClose("EURUSD",PERIOD_H1,1,11,eurusd_data),8); 
NormalizeDouble(CopyClose("GBPJPY",PERIOD_H1,1,11,gbpjpy_data),8); 
NormalizeDouble(CopyClose("USDCAD",PERIOD_H1,1,11,usdcad_data),8); 
NormalizeDouble(CopyClose("EURUSD",PERIOD_H1,1,11,eurusd_data),8); 
NormalizeDouble(CopyClose("GBPJPY",PERIOD_H1,1,11,gbpjpy_data),8); 
NormalizeDouble(CopyClose("USDCAD",PERIOD_H1,1,11,usdcad_data),8); 
NormalizeDouble(CopyClose("EURUSD",PERIOD_H1,1,11,eurusd_data),8); 
NormalizeDouble(CopyClose("GBPJPY",PERIOD_H1,1,11,gbpjpy_data),8); 
NormalizeDouble(CopyClose("USDCAD",PERIOD_H1,1,11,usdcad_data),8); 
NormalizeDouble(CopyClose("EURUSD",PERIOD_H1,1,11,eurusd_data),8); 
NormalizeDouble(CopyClose("GBPJPY",PERIOD_H1,1,11,gbpjpy_data),8); 
NormalizeDouble(CopyClose("USDCAD",PERIOD_H1,1,11,usdcad_data),8); 
NormalizeDouble(CopyClose("USDCAD",PERIOD_H1,1,11,usdcad_data),8); 
NormalizeDouble(CopyClose("EURUSD",PERIOD_H1,1,11,eurusd_data),8); 
NormalizeDouble(CopyClose("GBPJPY",PERIOD_H1,1,11,gbpjpy_data),8); 
NormalizeDouble(CopyClose("USDCAD",PERIOD_H1,1,11,usdcad_data),8); 

double arrayX[], arrayY[]; 
double arrayX_size; 
double arrayY_size; 

double AUDJPY_AUDUSD = 0,AUDJPY_CHFJPY = 0, 
    AUDJPY_EURAUD = 0, 
    AUDJPY_EURCAD = 0, 
    AUDJPY_EURCHF = 0, 
    AUDJPY_EURGBP = 0, 
    AUDJPY_EURJPY = 0, 
    AUDJPY_EURUSD = 0, 
    AUDJPY_GBPAUD = 0, 
    AUDJPY_GBPCAD = 0, 
    AUDJPY_GBPCHF = 0, 
    AUDJPY_GBPJPY = 0, 
    AUDJPY_GBPUSD = 0, 
    AUDJPY_NZDJPY = 0, 
    AUDJPY_NZDUSD = 0, 
    AUDJPY_USDCAD = 0, 
    AUDJPY_USDCHF = 0, 
    AUDJPY_USDJPY = 0; //18. 

double AUDUSD_CHFJPY = 0, 
    AUDUSD_EURAUD = 0, 
    AUDUSD_EURCAD = 0, 
    AUDUSD_EURCHF = 0, 
    AUDUSD_EURGBP = 0, 
    AUDUSD_EURJPY = 0, 
    AUDUSD_EURUSD = 0, 
    AUDUSD_GBPAUD = 0, 
    AUDUSD_GBPCAD = 0, 
    AUDUSD_GBPCHF = 0, 
    AUDUSD_GBPJPY = 0, 
    AUDUSD_GBPUSD = 0, 
    AUDUSD_NZDJPY = 0, 
    AUDUSD_NZDUSD = 0, 
    AUDUSD_USDCAD = 0, 
    AUDUSD_USDCHF = 0, 
    AUDUSD_USDJPY = 0; //17.   

double CHFJPY_EURAUD = 0, 
    CHFJPY_EURCAD = 0, 
    CHFJPY_EURCHF = 0, 
    CHFJPY_EURGBP = 0, 
    CHFJPY_EURJPY = 0, 
    CHFJPY_EURUSD = 0, 
    CHFJPY_GBPAUD = 0, 
    CHFJPY_GBPCAD = 0, 
    CHFJPY_GBPCHF = 0, 
    CHFJPY_GBPJPY = 0, 
    CHFJPY_GBPUSD = 0, 
    CHFJPY_NZDJPY = 0, 
    CHFJPY_NZDUSD = 0, 
    CHFJPY_USDCAD = 0, 
    CHFJPY_USDCHF = 0, 
    CHFJPY_USDJPY = 0; //16 

double EURAUD_EURCAD = 0, 
    EURAUD_EURCHF = 0, 
    EURAUD_EURGBP = 0, 
    EURAUD_EURJPY = 0, 
    EURAUD_EURUSD = 0, 
    EURAUD_GBPAUD = 0, 
    EURAUD_GBPCAD = 0, 
    EURAUD_GBPCHF = 0, 
    EURAUD_GBPJPY = 0, 
    EURAUD_GBPUSD = 0, 
    EURAUD_NZDJPY = 0, 
    EURAUD_NZDUSD = 0, 
    EURAUD_USDCAD = 0, 
    EURAUD_USDCHF = 0, 
    EURAUD_USDJPY = 0; //15. 

double EURCAD_EURCHF = 0, 
    EURCAD_EURGBP = 0, 
    EURCAD_EURJPY = 0, 
    EURCAD_EURUSD = 0, 
    EURCAD_GBPAUD = 0, 
    EURCAD_GBPCAD = 0, 
    EURCAD_GBPCHF = 0, 
    EURCAD_GBPJPY = 0, 
    EURCAD_GBPUSD = 0, 
    EURCAD_NZDJPY = 0, 
    EURCAD_NZDUSD = 0, 
    EURCAD_USDCAD = 0, 
    EURCAD_USDCHF = 0, 
    EURCAD_USDJPY = 0; //14 

double EURCHF_EURGBP = 0, 
    EURCHF_EURJPY = 0, 
    EURCHF_EURUSD = 0, 
    EURCHF_GBPAUD = 0, 
    EURCHF_GBPCAD = 0, 
    EURCHF_GBPCHF = 0, 
    EURCHF_GBPJPY = 0, 
    EURCHF_GBPUSD = 0, 
    EURCHF_NZDJPY = 0, 
    EURCHF_NZDUSD = 0, 
    EURCHF_USDCAD = 0, 
    EURCHF_USDCHF = 0, 
    EURCHF_USDJPY = 0; //13.   

double EURGBP_EURJPY = 0, 
    EURGBP_EURUSD = 0, 
    EURGBP_GBPAUD = 0, 
    EURGBP_GBPCAD = 0, 
    EURGBP_GBPCHF = 0, 
    EURGBP_GBPJPY = 0, 
    EURGBP_GBPUSD = 0, 
    EURGBP_NZDJPY = 0, 
    EURGBP_NZDUSD = 0, 
    EURGBP_USDCAD = 0, 
    EURGBP_USDCHF = 0, 
    EURGBP_USDJPY = 0; //12 

double EURJPY_EURUSD = 0, 
    EURJPY_GBPAUD = 0, 
    EURJPY_GBPCAD = 0, 
    EURJPY_GBPCHF = 0, 
    EURJPY_GBPJPY = 0, 
    EURJPY_GBPUSD = 0, 
    EURJPY_NZDJPY = 0, 
    EURJPY_NZDUSD = 0, 
    EURJPY_USDCAD = 0, 
    EURJPY_USDCHF = 0, 
    EURJPY_USDJPY = 0; //11. 

double EURUSD_GBPAUD = 0, 
    EURUSD_GBPCAD = 0, 
    EURUSD_GBPCHF = 0, 
    EURUSD_GBPJPY = 0, 
    EURUSD_GBPUSD = 0, 
    EURUSD_NZDJPY = 0, 
    EURUSD_NZDUSD = 0, 
    EURUSD_USDCAD = 0, 
    EURUSD_USDCHF = 0, 
    EURUSD_USDJPY = 0; //10. 

double GBPAUD_GBPCAD = 0, 
    GBPAUD_GBPCHF = 0, 
    GBPAUD_GBPJPY = 0, 
    GBPAUD_GBPUSD = 0, 
    GBPAUD_NZDJPY = 0, 
    GBPAUD_NZDUSD = 0, 
    GBPAUD_USDCAD = 0, 
    GBPAUD_USDCHF = 0, 
    GBPAUD_USDJPY = 0; //9. 

double GBPCAD_GBPCHF = 0, 
    GBPCAD_GBPJPY = 0, 
    GBPCAD_GBPUSD = 0, 
    GBPCAD_NZDJPY = 0, 
    GBPCAD_NZDUSD = 0, 
    GBPCAD_USDCAD = 0, 
    GBPCAD_USDCHF = 0, 
    GBPCAD_USDJPY = 0; //8. 

double GBPCHF_GBPJPY = 0, 
    GBPCHF_GBPUSD = 0, 
    GBPCHF_NZDJPY = 0, 
    GBPCHF_NZDUSD = 0, 
    GBPCHF_USDCAD = 0, 
    GBPCHF_USDCHF = 0, 
    GBPCHF_USDJPY = 0; //7. 

double GBPJPY_GBPUSD = 0, 
    GBPJPY_NZDJPY = 0, 
    GBPJPY_NZDUSD = 0, 
    GBPJPY_USDCAD = 0, 
    GBPJPY_USDCHF = 0, 
    GBPJPY_USDJPY = 0; //6. 

double GBPUSD_NZDJPY = 0, 
    GBPUSD_NZDUSD = 0, 
    GBPUSD_USDCAD = 0, 
    GBPUSD_USDCHF = 0, 
    GBPUSD_USDJPY = 0; //5. 

double NZDJPY_NZDUSD = 0, 
    NZDJPY_USDCAD = 0, 
    NZDJPY_USDCHF = 0, 
    NZDJPY_USDJPY = 0; //4. 

double NZDUSD_USDCAD = 0, 
    NZDUSD_USDCHF = 0, 
    NZDUSD_USDJPY = 0; //3. 

double USDCAD_USDCHF = 0, 
    USDCAD_USDJPY = 0; //2. 

double USDCHF_USDJPY = 0; //1. 

double corr_table[18][18]; //18*18 Corelation Table. 

for(int counter=0; counter<31; counter++) 
    { 
    if(counter == 0) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
    //Alert("badd"); 
} 
else if(counter == 1) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 3) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 4) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 5) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 6) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 7) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 8) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 9) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 10) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 11) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 12) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 13) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 14) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 15) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 16) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 17) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 18) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 19) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 20) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 21) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 22) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 23) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 24) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 25) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 26) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 27) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 28) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter== 29) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,gbpusd_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
} 
else if(counter == 30) 
{ 
    ArrayCopy(arrayX,usdchf_data,0,0,WHOLE_ARRAY); 
    ArrayCopy(arrayY,usdjpy_data,0,0,WHOLE_ARRAY); 
    arrayX_size = ArraySize(arrayX); 
    arrayY_size = ArraySize(arrayY); 
    //Alert("yessss"); 
} 

double r = pearsons_r(arrayX,arrayY); 
//Comment(r);  
if(counter == 0) 
{ 
    GBPUSD_USDCHF = r; 
    Alert(r); 
} 
else if(counter == 1) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 2) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 3) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 4) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 5) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 6) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 7) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 8) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 9) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 10) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 11) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 12) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 13) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 14) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 15) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 16) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 17) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 18) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 19) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 20) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 21) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 22) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 23) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 24) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 25) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 26) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 27) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 28) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
} 
else if(counter == 29) 
{ 
    USDCHF_USDJPY = r; 
    //Comment("yep"+r); 
} 
else if(counter == 30) 
{ 
    GBPUSD_USDCHF = r; 
    Comment(r); 
}*/ 

corr_table[0][0] = AUDJPY_AUDUSD; 
corr_table[0][1] = AUDJPY_CHFJPY; 
corr_table[0][2] = AUDJPY_EURAUD; 
corr_table[0][3] = AUDJPY_EURCAD; 
corr_table[0][4] = AUDJPY_EURCHF; 
corr_table[0][5] = AUDJPY_EURGBP; 
corr_table[0][6] = AUDJPY_EURJPY; 
corr_table[0][7] = AUDJPY_EURUSD; 
corr_table[0][8] = AUDJPY_GBPAUD; 
corr_table[0][9] = AUDJPY_GBPCAD; 
corr_table[0][10] = AUDJPY_GBPCHF; 
corr_table[0][11] = AUDJPY_GBPJPY; 
corr_table[0][12] = AUDJPY_GBPUSD; 
corr_table[0][13] = AUDJPY_NZDJPY; 
corr_table[0][14] = AUDJPY_NZDUSD; 
corr_table[0][15] = AUDJPY_USDCAD; 
corr_table[0][16] = AUDJPY_USDCHF; 
corr_table[0][17] = AUDJPY_USDJPY; 

corr_table[1][0] = GBPUSD_USDCHF; 
corr_table[1][1] = USDCHF_USDJPY; 
corr_table[1][2] = GBPUSD_USDCHF; 
corr_table[1][3] = USDCHF_USDJPY; 
corr_table[1][4] = GBPUSD_USDCHF; 
corr_table[1][5] = USDCHF_USDJPY; 
corr_table[1][6] = GBPUSD_USDCHF; 

corr_table[1][7] = USDCHF_USDJPY; 
corr_table[1][8] = GBPUSD_USDCHF; 
corr_table[1][9] = USDCHF_USDJPY; 
corr_table[1][10] = GBPUSD_USDCHF; 
corr_table[1][11] = USDCHF_USDJPY; 

corr_table[1][12] = GBPUSD_USDCHF; 
corr_table[1][13] = USDCHF_USDJPY; 
corr_table[1][14] = GBPUSD_USDCHF; 
corr_table[1][15] = USDCHF_USDJPY; 
corr_table[1][16] = GBPUSD_USDCHF; 

corr_table[1][17] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 

corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 

corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
corr_table[0][1] = GBPUSD_USDCHF; 
corr_table[0][2] = USDCHF_USDJPY; 
} 
return(INIT_SUCCEEDED); 
} 
double pearsons_r(double &dataX[],double &dataY[]) 
{ 
double sumX = 0,sumY = 0; 
double meanX = 0,meanY = 0; 
double sumXY = 0; 
double sumX2 = 0,sumY2 = 0; 
double dev_x[12],dev_y[12]; 
double dev_xy[12]; 


double size_dataX = ArraySize(dataX); 
double size_dataY = ArraySize(dataY); 
//Alert(size_dataX); 

for(int jj = 0; jj<size_dataX; jj++) 
{ 
    sumX += dataX[jj]; 
    sumY += dataY[jj]; 
    //Alert(sumY); 
} 
meanX = sumX/size_dataX; 
meanY = sumY/size_dataY; 
//Alert(meanY); 

for(int jj = 0; jj<size_dataX; jj++) 
{ 
    dev_x[jj] = dataX[jj] - meanX; 
    dev_y[jj] = dataY[jj] - meanY; 
    //Alert(dev_x[5]); 

    dev_xy[jj] = dev_x[jj] * dev_y[jj]; 
    //Comment(dev_xy[3]); 

    sumX2 += dev_x[jj] * dev_x[jj]; 
    //Comment(sumX2); 

    sumY2 += dev_y[jj] * dev_y[jj]; 
    //Comment(sumX2); 

    sumXY += dev_x[jj] * dev_y[jj]; 
    //Comment(sumXY); 
} 
    double lower_half = sumX2 * sumY2; 

double final_lower_half = sqrt(lower_half); 
//Comment(final_lower_half); 

double correlation = NormalizeDouble(sumXY/final_lower_half,2); 
//Comment(correlation); 
correlation = correlation*100; 
Comment(correlation); 

return (correlation); 
} 
+0

이미 눈치 챘을 수도 있습니다 하나는, StackOverflow에 멀리하지하여 "나를 위해 내 임무를 수행"** ** 또는 장소에 ** 렌트카 Coder-입니다 무료로**. 문제 공식화를 다시 말하고 특정 문제에 초점을 맞추고 결과가 문서화되거나 원하는 기능에 해당하지 않는 동안 해결하려고 결정할 수 있습니다. 원본 게시물에는 S/O 회원이 이미 답변 한 이전 질문이 포함되어 있습니다. 다른 회원에게 당신에게 호의를 베풀거나 스케치 된 의도에 대한 해결책을 설계하도록 요청하는 것은 StackOverflow가 아닌 ​​다른 곳에서 논의 될 주제입니다. – user3666197

답변

0

그리고 문제가 무엇인가? 여기에 여러 가지 유사한 질문을하는 것을 제외하면 2D 배열을 사용하는 간단한 접근 방식에는 어떤 문제가 있습니까?

아마이 도움이 될 것입니다

const string allSymbols[18] = {"EURUSD","USDJPY", };//all 18 your symbols 
int SIZE = ArraySize(allSymbols); 

void Function(){ 
    double correlationMatrix[18][18]; 
    for(int i=0; i<SIZE; i++){ 
     for(int j=0; j<SIZE; j++){ 
     if (i==j) continue; 
     double correlation = Pearson_r_calc(allSymbols[i],allSymbols[j]); 
     correlationMatrix[i][j] = correlation; 
     //process your matrix further, 'ij' is a correlation of i and j symbols 
     } 
    } 
} 
double Pearson_r_calc(const string symb1,const string symb2){ 
    double array1[],array2[]; 
    CopyClose(symb1,PERIOD_H1,1,11,array1); //1 and 11 are your numbers 
    CopyClose(symb2,PERIOD_H1,1,11,array2); 
    return pearson_r(array1,array2); //pearson_r(string,string) is your fn. 
}