//+------------------------------------------------------------------+ //| MultiCCI PRICE.mq4 | //| Copyright © 2009, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, MetaQuotes Software Corp." #property link "http://www.mql4.com/ru/users/costy_" #property indicator_separate_window #property indicator_buffers 8 extern string xxxxxxхxxxxxxxxxxxxxxxxxxxxxxx = "---------------------------------------------------------"; extern string _0_CCI_PRICE__1_CCI = " 2 RSI 3 MFI 4 WPR"; extern int Индикатор=0; extern string xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx = "---------------------------------------------------------"; extern string PEriod="Период ССI"; extern int Период_CCI=55;//0 1 extern int Период_RSI=14;//2 extern int Период_MFI=14;//3 extern int Период_WPR=14;//4 extern string xxxxxxxxxxxxxxxxxxxxxxxxxxxxxх = "---------------------------------------------------------"; extern string Метод_вычисления = "0 Прост 1 Экс 2 Сгл 3 Лин-взвешенное"; extern int Метод_Вычисления=0; extern string xxхxxxxxxxxxxxxxxxxxxxxxxxxxxх = "---------------------------------------------------------"; extern string Используемая_цена = "0CLOSE,1OPEN,2HIGH,3LOW,4MEDIAN,5TYPICAL"; extern int Используемая_цeна=4; extern string xxxxxxxxxxxxxxxxxxxхxxxxxxxxxx = "---------------------------------------------------------"; extern string Т="Таймфрейм 0-текущий"; extern int T=0; extern string Только_для_CCI_PRICE="Коэф. Шума "; extern int X=3; //---- double ma1_buffer [];double ma2_buffer [];double ma3_buffer [];double ma4_buffer []; double ma5_buffer []; double ma6_buffer []; double ma7_buffer []; double ma8_buffer []; extern color Color1 = Red;extern color Color2 = Chocolate;extern color Color3 = Orange; extern color Color4 = ForestGreen;extern color Color5 = RoyalBlue;extern color Color6 = Blue; extern color Color7 = DarkOrchid;extern color Color8 = Magenta; string Short;int Offset, SymbolsNumber; double double_bufer_8[8]; int init() { //---- SetIndexBuffer(0, ma1_buffer); SetIndexBuffer(1, ma2_buffer); SetIndexBuffer(2, ma3_buffer); SetIndexBuffer(3, ma4_buffer); SetIndexBuffer(4, ma5_buffer); SetIndexBuffer(5, ma6_buffer); SetIndexBuffer(6, ma7_buffer); SetIndexBuffer(7, ma8_buffer); if(Индикатор==0){ if(WindowFind("MultiCCI PRICE #1")>0)Short="MultiCCI PRICE #2"; else Short="MultiCCI PRICE #1";} if(Индикатор==1){ if(WindowFind("MultiCCI("+Период_CCI+") #1")>0)Short="MultiCCI("+Период_CCI+") #2"; else Short="MultiCCI("+Период_CCI+") #1";} if(Индикатор==2){ if(WindowFind("MultiRSI("+Период_RSI+") #1")>0)Short="MultiRSI("+Период_RSI+") #2"; else Short="MultiRSI("+Период_RSI+") #1";} if(Индикатор==3){ if(WindowFind("MultiMFI("+Период_MFI+") #1")>0)Short="MultiMFI("+Период_MFI+") #2"; else Short="MultiMFI("+Период_MFI+") #1";} if(Индикатор==4){ if(WindowFind("Период_WPR("+Период_WPR+") #1")>0)Short="Период_WPR("+Период_WPR+") #2"; else Short="Период_WPR("+Период_WPR+") #1";} IndicatorShortName(Short); return(0); } //+------------------------------------------------------------------+ int deinit() {ObjectsDeleteAll(WindowFind(Short),OBJ_LABEL); //---- return(0); } //+------------------------------------------------------------------+ int SymbolsList(string &Symbols[], bool Selected) { string SymbolsFileName; if(Selected) SymbolsFileName = "symbols.sel"; else SymbolsFileName = "symbols.raw"; int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN|FILE_READ); if(hFile < 0) return(-1); if(Selected) { SymbolsNumber = (FileSize(hFile) - 4) / 128; Offset = 116; } else { SymbolsNumber = FileSize(hFile) / 1936; Offset = 1924; } ArrayResize(Symbols, SymbolsNumber); if(Selected) FileSeek(hFile, 4, SEEK_SET); for(int i = 0; i < SymbolsNumber; i++) { Symbols[i] = FileReadString(hFile, 12); FileSeek(hFile, Offset, SEEK_CUR); } FileClose(hFile); return(SymbolsNumber); } int start(){ string SymbolsList[]; if(SymbolsList(SymbolsList, true) > 0) int pos = Bars-IndicatorCounted() ; if(IndicatorCounted()==0) pos--; if(Индикатор==0){ while(pos >= 0) { ma1_buffer[pos] = (iMA(SymbolsList[0], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[0],T,Time[pos],FALSE ))-iMA(SymbolsList[0], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[0],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[0],MODE_POINT); ma2_buffer[pos] = (iMA(SymbolsList[1], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[1],T,Time[pos],FALSE ))-iMA(SymbolsList[1], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[1],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[1],MODE_POINT); ma3_buffer[pos] = (iMA(SymbolsList[2], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[2],T,Time[pos],FALSE ))-iMA(SymbolsList[2], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[2],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[2],MODE_POINT); ma4_buffer[pos] = (iMA(SymbolsList[3], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[3],T,Time[pos],FALSE ))-iMA(SymbolsList[3], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[3],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[3],MODE_POINT); ma5_buffer[pos] = (iMA(SymbolsList[4], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[4],T,Time[pos],FALSE ))-iMA(SymbolsList[4], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[4],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[4],MODE_POINT); ma6_buffer[pos] = (iMA(SymbolsList[5], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[5],T,Time[pos],FALSE ))-iMA(SymbolsList[5], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[5],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[5],MODE_POINT); ma7_buffer[pos] = (iMA(SymbolsList[6], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[6],T,Time[pos],FALSE ))-iMA(SymbolsList[6], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[6],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[6],MODE_POINT); ma8_buffer[pos] = (iMA(SymbolsList[7], T , X, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[7],T,Time[pos],FALSE ))-iMA(SymbolsList[7], T , Период_CCI, 0, Метод_Вычисления, Используемая_цeна, iBarShift(SymbolsList[7],T,Time[pos],FALSE )))/MarketInfo(SymbolsList[7],MODE_POINT); pos--;}} if(Индикатор==1){ while(pos >= 0) { ma1_buffer[pos] = iCCI(SymbolsList[0], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[0],T,Time[pos],FALSE )); ma2_buffer[pos] = iCCI(SymbolsList[1], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[1],T,Time[pos],FALSE )); ma3_buffer[pos] = iCCI(SymbolsList[2], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[2],T,Time[pos],FALSE )); ma4_buffer[pos] = iCCI(SymbolsList[3], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[3],T,Time[pos],FALSE )); ma5_buffer[pos] = iCCI(SymbolsList[4], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[4],T,Time[pos],FALSE )); ma6_buffer[pos] = iCCI(SymbolsList[5], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[5],T,Time[pos],FALSE )); ma7_buffer[pos] = iCCI(SymbolsList[6], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[6],T,Time[pos],FALSE )); ma8_buffer[pos] = iCCI(SymbolsList[7], T , Период_CCI, Используемая_цeна, iBarShift(SymbolsList[7],T,Time[pos],FALSE )); pos--;}} if(Индикатор==2){ while(pos >= 0) { ma1_buffer[pos] = iRSI(SymbolsList[0], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[0],T,Time[pos],FALSE )); ma2_buffer[pos] = iRSI(SymbolsList[1], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[1],T,Time[pos],FALSE )); ma3_buffer[pos] = iRSI(SymbolsList[2], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[2],T,Time[pos],FALSE )); ma4_buffer[pos] = iRSI(SymbolsList[3], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[3],T,Time[pos],FALSE )); ma5_buffer[pos] = iRSI(SymbolsList[4], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[4],T,Time[pos],FALSE )); ma6_buffer[pos] = iRSI(SymbolsList[5], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[5],T,Time[pos],FALSE )); ma7_buffer[pos] = iRSI(SymbolsList[6], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[6],T,Time[pos],FALSE )); ma8_buffer[pos] = iRSI(SymbolsList[7], T , Период_RSI, Используемая_цeна, iBarShift(SymbolsList[7],T,Time[pos],FALSE )); pos--;}} if(Индикатор==3){ while(pos >= 0) { ma1_buffer[pos] = iMFI(SymbolsList[0], T , Период_MFI, iBarShift(SymbolsList[0],T,Time[pos],FALSE )); ma2_buffer[pos] = iMFI(SymbolsList[1], T , Период_MFI, iBarShift(SymbolsList[1],T,Time[pos],FALSE )); ma3_buffer[pos] = iMFI(SymbolsList[2], T , Период_MFI, iBarShift(SymbolsList[2],T,Time[pos],FALSE )); ma4_buffer[pos] = iMFI(SymbolsList[3], T , Период_MFI, iBarShift(SymbolsList[3],T,Time[pos],FALSE )); ma5_buffer[pos] = iMFI(SymbolsList[4], T , Период_MFI, iBarShift(SymbolsList[4],T,Time[pos],FALSE )); ma6_buffer[pos] = iMFI(SymbolsList[5], T , Период_MFI, iBarShift(SymbolsList[5],T,Time[pos],FALSE )); ma7_buffer[pos] = iMFI(SymbolsList[6], T , Период_MFI, iBarShift(SymbolsList[6],T,Time[pos],FALSE )); ma8_buffer[pos] = iMFI(SymbolsList[7], T , Период_MFI, iBarShift(SymbolsList[7],T,Time[pos],FALSE )); pos--;}} if(Индикатор==4){ while(pos >= 0) { ma1_buffer[pos] = iWPR(SymbolsList[0], T , Период_WPR, iBarShift(SymbolsList[0],T,Time[pos],FALSE )); ma2_buffer[pos] = iWPR(SymbolsList[1], T , Период_WPR, iBarShift(SymbolsList[1],T,Time[pos],FALSE )); ma3_buffer[pos] = iWPR(SymbolsList[2], T , Период_WPR, iBarShift(SymbolsList[2],T,Time[pos],FALSE )); ma4_buffer[pos] = iWPR(SymbolsList[3], T , Период_WPR, iBarShift(SymbolsList[3],T,Time[pos],FALSE )); ma5_buffer[pos] = iWPR(SymbolsList[4], T , Период_WPR, iBarShift(SymbolsList[4],T,Time[pos],FALSE )); ma6_buffer[pos] = iWPR(SymbolsList[5], T , Период_WPR, iBarShift(SymbolsList[5],T,Time[pos],FALSE )); ma7_buffer[pos] = iWPR(SymbolsList[6], T , Период_WPR, iBarShift(SymbolsList[6],T,Time[pos],FALSE )); ma8_buffer[pos] = iWPR(SymbolsList[7], T , Период_WPR, iBarShift(SymbolsList[7],T,Time[pos],FALSE )); pos--;}} color colore[8]; colore[0] = Color1;colore[1] = Color2;colore[2] = Color3;colore[3] = Color4; colore[4] = Color5;colore[5] = Color6;colore[6] = Color7;colore[7] = Color8; int labe[8]; labe[0]=0; labe[1]=13; labe[2]=26; labe[3]=39; labe[4]=52; labe[5]=65; labe[6]=78; labe[7]=91; double ma_buffer[8]; ma_buffer[0]= ma1_buffer [0]; ma_buffer[1]= ma2_buffer [0]; ma_buffer[2]= ma3_buffer [0]; ma_buffer[3]= ma4_buffer [0]; ma_buffer[4]= ma5_buffer [0]; ma_buffer[5]= ma6_buffer [0]; ma_buffer[6]= ma7_buffer [0]; ma_buffer[7]= ma8_buffer [0]; string text[8]; text[0]=DoubleToStr(ma_buffer[0],2) ; text[1]=DoubleToStr(ma_buffer[1],2) ; text[2]=DoubleToStr(ma_buffer[2],2) ; text[3]=DoubleToStr(ma_buffer[3],2) ; text[4]=DoubleToStr(ma_buffer[4],2) ; text[5]=DoubleToStr(ma_buffer[5],2) ; text[6]=DoubleToStr(ma_buffer[6],2) ;text[7]=DoubleToStr(ma_buffer[7],2) ; if(SymbolsNumber>ArraySize(labe)) { SymbolsNumber=ArraySize(labe); } int толщина=1,разшриф=10;if(Short=="MultiCCI PRICE #1"){ for (int i_4 = 0; i_4 < SymbolsNumber; i_4++) {толщина=1;разшриф=10; if (SymbolsList[i_4] == Symbol()) {толщина = 2;разшриф=12;} ObjectDelete(SymbolsList[i_4]); ObjectCreate(SymbolsList[i_4], OBJ_LABEL, WindowFind(Short), 0, 0); ObjectSet(SymbolsList[i_4], OBJPROP_CORNER, 1); ObjectSet(SymbolsList[i_4], OBJPROP_YDISTANCE, labe[i_4 ] + 5); ObjectSet(SymbolsList[i_4], OBJPROP_XDISTANCE, 5); ObjectSetText(SymbolsList[i_4],text[i_4]+" "+SymbolsList[i_4],разшриф, "Times New Roman", colore[i_4]); SetIndexStyle(i_4, DRAW_LINE, STYLE_SOLID, толщина, colore[i_4]); SetIndexLabel(i_4, SymbolsList[i_4]);}} else{for (i_4 = 0; i_4 < SymbolsNumber; i_4++) {толщина=1;разшриф=10; if (SymbolsList[i_4] == Symbol()) {толщина = 2;разшриф=12;} ObjectDelete(SymbolsList[i_4]+"2"); ObjectCreate(SymbolsList[i_4]+"2", OBJ_LABEL, WindowFind(Short), 0, 0); ObjectSet(SymbolsList[i_4]+"2", OBJPROP_CORNER, 1); ObjectSet(SymbolsList[i_4]+"2", OBJPROP_YDISTANCE, labe[i_4 ] + 5); ObjectSet(SymbolsList[i_4]+"2", OBJPROP_XDISTANCE, 5); ObjectSetText(SymbolsList[i_4]+"2",text[i_4]+" "+SymbolsList[i_4],разшриф, "Times New Roman", colore[i_4]); SetIndexStyle(i_4, DRAW_LINE, STYLE_SOLID, толщина, colore[i_4]); SetIndexLabel(i_4, SymbolsList[i_4]);}} return(0); } //+------------------------------------------------------------------+