//+------------------------------------------------------------------+ //| Basket14.mq4 | //| Copyright © 2011, PatPatel | //| forexfactory.pat1@gmail.com| //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, PatPatel" #property link "forexfactory.pat1@gmail.com" #include #property indicator_chart_window //------------------------------------------------------------------- extern int NumOfPairs = 14; extern int MaxBars = 1000; extern int TF = 1; string Pair_suffix; string shortname; string Pair[14]; double Factor, multiplier[14]; int j, StartBar; string Currency; static int ExtHandle=-1; static int tf = 0; int MN=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { Pair_suffix=StringTrimLeft(StringTrimRight(StringSubstr(Symbol(),6,StringLen(Symbol())-6))); Get_Trade_Pairs(); Currency="#kos#"+PadValINT(NumOfPairs,2)+Pair_suffix; GlobalVariableSet(Currency+"_"+TF+"_Fact",Factor); for(int kj=0;kj0) StartBar=Bars-counted_bars; //---- main loop for(int i=StartBar; i>=0; i--) { if (lastbar < iTime(Symbol(),tf,i)) { last_fpos=FileTell(ExtHandle); lastbar=iTime(Symbol(),tf,i); } else { FileSeek(ExtHandle,last_fpos,SEEK_SET); } datetime timebar=iTime(Symbol(),tf,i); // Change kk to -1300 if HLOC values are less than 0. double kk=-Factor; double sum_A_Pair_C=kk; double sum_A_Pair_H=kk; double sum_A_Pair_L=kk; double sum_A_Pair_O=kk; double sum_A_Pair_V=0.0; for (j=0;jiTime(Pair[j],tf,shift)) { shift++; } sum_A_Pair_C=sum_A_Pair_C +iClose(Pair[j],tf,shift)*multiplier[j]; sum_A_Pair_H=sum_A_Pair_H + iHigh(Pair[j],tf,shift)*multiplier[j]; sum_A_Pair_L=sum_A_Pair_L + iLow(Pair[j],tf,shift)*multiplier[j]; sum_A_Pair_O=sum_A_Pair_O + iOpen(Pair[j],tf,shift)*multiplier[j]; sum_A_Pair_V=sum_A_Pair_V +iVolume(Pair[j],tf,shift); } //Update file with current values FileWriteInteger(ExtHandle, lastbar, LONG_VALUE); FileWriteDouble(ExtHandle, sum_A_Pair_O, DOUBLE_VALUE); FileWriteDouble(ExtHandle, sum_A_Pair_L, DOUBLE_VALUE); FileWriteDouble(ExtHandle, sum_A_Pair_H, DOUBLE_VALUE); FileWriteDouble(ExtHandle, sum_A_Pair_C, DOUBLE_VALUE); FileWriteDouble(ExtHandle, sum_A_Pair_V, DOUBLE_VALUE); FileFlush(ExtHandle); } // Update Basket Chart if Available if(hwnd==0) { hwnd=WindowHandle(Currency,tf); } else { PostMessageA(hwnd,WM_COMMAND,33324,0); } return(0); } //+------------------------------------------------------------------+ int Get_Trade_Pairs() { switch (NumOfPairs) { case 1: Pair[0] = "GBPJPY" + Pair_suffix; Factor=0.0; break; case 2: Pair[0] = "GBPUSD" + Pair_suffix; Pair[1] = "EURUSD" + Pair_suffix; Factor=200.0; break; case 4: Pair[0] = "GBPUSD" + Pair_suffix; Pair[1] = "EURJPY" + Pair_suffix; Pair[2] = "EURUSD" + Pair_suffix; Pair[3] = "GBPJPY" + Pair_suffix; Factor=400.0; break; case 6: Pair[0] = "GBPUSD" + Pair_suffix; Pair[1] = "EURJPY" + Pair_suffix; Pair[2] = "AUDUSD" + Pair_suffix; Pair[3] = "EURUSD" + Pair_suffix; Pair[4] = "GBPJPY" + Pair_suffix; Pair[5] = "NZDUSD" + Pair_suffix; Factor=600.0; break; case 8: Pair[0] = "GBPUSD" + Pair_suffix; Pair[1] = "EURJPY" + Pair_suffix; Pair[2] = "AUDUSD" + Pair_suffix; Pair[3] = "NZDJPY" + Pair_suffix; Pair[4] = "EURUSD" + Pair_suffix; Pair[5] = "GBPJPY" + Pair_suffix; Pair[6] = "NZDUSD" + Pair_suffix; Pair[7] = "AUDJPY" + Pair_suffix; Factor=800.0; break; case 10: Pair[0] = "GBPUSD" + Pair_suffix; Pair[1] = "EURGBP" + Pair_suffix; Pair[2] = "GBPJPY" + Pair_suffix; Pair[3] = "CADJPY" + Pair_suffix; Pair[4] = "NZDUSD" + Pair_suffix; Pair[5] = "EURUSD" + Pair_suffix; Pair[6] = "USDJPY" + Pair_suffix; Pair[7] = "AUDUSD" + Pair_suffix; Pair[8] = "NZDJPY" + Pair_suffix; Pair[9] = "GBPCHF" + Pair_suffix; Factor=1000.0; break; case 12: Pair[0] = "GBPUSD" + Pair_suffix; Pair[1] = "EURGBP" + Pair_suffix; Pair[2] = "GBPJPY" + Pair_suffix; Pair[3] = "CADJPY" + Pair_suffix; Pair[4] = "NZDUSD" + Pair_suffix; Pair[5] = "AUDJPY" + Pair_suffix; Pair[6] = "EURUSD" + Pair_suffix; Pair[7] = "USDJPY" + Pair_suffix; Pair[8] = "AUDUSD" + Pair_suffix; Pair[9] = "NZDJPY" + Pair_suffix; Pair[10] = "GBPCHF" + Pair_suffix; Pair[11] = "CHFJPY" + Pair_suffix; Factor=1200.0; break; case 14: Pair[0] = "GBPUSD" + Pair_suffix; Pair[1] = "EURGBP" + Pair_suffix; Pair[2] = "GBPJPY" + Pair_suffix; Pair[3] = "USDCHF" + Pair_suffix; Pair[4] = "NZDUSD" + Pair_suffix; Pair[5] = "AUDJPY" + Pair_suffix; Pair[6] = "EURJPY" + Pair_suffix; Pair[7] = "EURUSD" + Pair_suffix; Pair[8] = "USDJPY" + Pair_suffix; Pair[9] = "AUDUSD" + Pair_suffix; Pair[10] = "NZDJPY" + Pair_suffix; Pair[11] = "GBPCHF" + Pair_suffix; Pair[12] = "CHFJPY" + Pair_suffix; Pair[13] = "EURCHF" + Pair_suffix; Factor=1400.0; break; default: break; } Currency=Currency+Pair_suffix; //---- return(0); } string PadValINT(int Val, int PadSpc) { string S = Val; while ( StringLen(S) < PadSpc ) S = "0" + S; return(S); }