//+------------------------------------------------------------------+ //| SignalTable (Stranger2010 vertion).mq4 | //| Antonuk Oleg/Tretyakov Ivan | //+------------------------------------------------------------------+ #property copyright "Antonuk Oleg/Tretyakov Ivan" #property link "antonukoleg@gmail.com/tretyak-off@inbox.ru" //---- #property indicator_chart_window //----Настройка индикатора. extern int scaleX=20; extern int scaleY=20; extern int offsetX=35; extern int offsetY=20; extern int fontSize=16; extern int corner=2; extern int symbolCodeBuy=228; extern int symbolCodeSell=230; extern int symbolCodeNoSignal=178; //---Настройка MA extern int FastSMA=13; extern int SlowSMA=24; //---Настройка WPR extern int WPRPeriod=13; //---Настройка MACD extern int FastMACD=12; extern int SlowMACD=26; extern int SignalMACD=9; //---Настройка OsMA extern int FastPeriod=12; extern int SlowPeriod=26; extern int SignalPeriod=9; //---Настройка CCI extern int CCIPeriod = 14; //---Настройка MOM extern int MOMPeriod = 14; //---Настройка RSI extern int RSIPeriod = 14; //---- Параметры ADX extern int ADXPeriod = 14; extern color signalBuyColor=Blue, signalSellColor=Red, noSignalColor=WhiteSmoke, textColor=Gold; int period[]={1,5,15,30,60,240,1440,10080,43200}; string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"}, // создаем еще один массив с названиями индикаторов signalNameString[]={"MA","WPR","SAR","MACD","OsMA","CCI","MOM","RSI","ADX"};//9 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { // таблица сигналов for(int x=0;x<9;x++) for(int y=0;y<9;y++) { ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0); // изменяем угол привязки ObjectSet("signal"+x+y,OBJPROP_CORNER,corner); ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+offsetX); ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+20); ObjectSetText("signal"+x+y,CharToStr(symbolCodeNoSignal), fontSize,"Wingdings",noSignalColor); } // названия таймфреймов for(x=0;x<9;x++) { ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0); // изменяем угол привязки ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner); ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+offsetX); ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY-10); ObjectSetText("textPeriod"+x,periodString[x],8,"Tahoma",textColor); } // названия индикаторов for(y=0;y<9;y++) { ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0); // изменяем угол привязки ObjectSet("textSignal"+y,OBJPROP_CORNER,corner); ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,offsetX-25); ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(scaleY)+offsetY+8); ObjectSetText("textSignal"+y,signalNameString[y],8,"Tahoma",textColor); } for(x=2;x<7;x++) { ObjectCreate("TrendPeriod"+x,OBJ_LABEL,0,0,0,0,0); // изменяем угол привязки ObjectSet("TrendPeriod"+x,OBJPROP_CORNER,corner); ObjectSet("TrendPeriod"+x,OBJPROP_XDISTANCE,(9+x)*scaleX+offsetX); ObjectSet("TrendPeriod"+x,OBJPROP_YDISTANCE,offsetY-10); ObjectSetText("TrendPeriod"+x,periodString[x],8,"Tahoma",textColor); } for(x=2;x<7;x++) { ObjectCreate("MainSignal"+x,OBJ_LABEL,0,0,0,0,0); // изменяем угол привязки ObjectSet("MainSignal"+x,OBJPROP_CORNER,corner); ObjectSet("MainSignal"+x,OBJPROP_XDISTANCE,(9+x)*scaleX+offsetX); ObjectSet("MainSignal"+x,OBJPROP_YDISTANCE,20); ObjectSetText("MainSignal"+x,CharToStr(symbolCodeNoSignal),fontSize,"Wingdings",noSignalColor); } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int SumUpsM15=0; int SumUpsM30=0; int SumUpsH1=0; int SumUpsH4=0; int SumUpsD1=0; int SumDownsM15=0; int SumDownsM30=0; int SumDownsH1=0; int SumDownsH4=0; int SumDownsD1=0; for(int x=0;x<9;x++) { // сигнал на покупку if(iMA(Symbol(),period[x],FastSMA,0,0,0,0)>iMA(Symbol(),period[x],SlowSMA,0,0,0,0)) { ObjectSetText("signal"+x+"0",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } // сигнал на продажу else { ObjectSetText("signal"+x+"0",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } } for(x=0;x<9;x++) { // сигнал на покупку if(MathAbs(iWPR(Symbol(),period[x],WPRPeriod,0))<20.0) { ObjectSetText("signal"+x+"1",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } // сигнал на продажу else if(MathAbs(iWPR(Symbol(),period[x],WPRPeriod,0))>80.0) { ObjectSetText("signal"+x+"1",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } // нет сигнала else ObjectSetText("signal"+x+"1",CharToStr(symbolCodeNoSignal),fontSize,"Wingdings",noSignalColor); } for(x=0;x<9;x++) { // сигнал на покупку if(iSAR(Symbol(),period[x],0.02,0.2,0) 0) { ObjectSetText("signal"+x+"3",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } else { ObjectSetText("signal"+x+"3",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } } for(x=0;x<9;x++) { if (iOsMA(Symbol(),period[x],FastPeriod,SlowPeriod,SignalPeriod,PRICE_CLOSE,0) > 0) { ObjectSetText("signal"+x+"4",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } else { ObjectSetText("signal"+x+"4",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } } for(x=0;x<9;x++) { if (iCCI(Symbol(),period[x],CCIPeriod,PRICE_CLOSE,0) > 0) { ObjectSetText("signal"+x+"5",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } else { ObjectSetText("signal"+x+"5",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } } for(x=0;x<9;x++) { if (iMomentum(Symbol(),period[x],MOMPeriod,PRICE_CLOSE,0) > 100) { ObjectSetText("signal"+x+"6",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } else { ObjectSetText("signal"+x+"6",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } } for(x=0;x<9;x++) { if (iRSI(Symbol(),period[x],RSIPeriod,PRICE_CLOSE,0) > 50) { ObjectSetText("signal"+x+"7",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } else { ObjectSetText("signal"+x+"7",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } } for(x=0;x<9;x++) { if (iADX(Symbol(),period[x],ADXPeriod,PRICE_CLOSE,MODE_PLUSDI,0) > iADX(Symbol(),period[x],ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,0)) { ObjectSetText("signal"+x+"8",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor); switch (x) { case 2:SumUpsM15++; break; case 3:SumUpsM30++; break; case 4:SumUpsH1++; break; case 5:SumUpsH4++; break; case 6:SumUpsD1++; break; } } else { ObjectSetText("signal"+x+"8",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); switch (x) { case 2:SumDownsM15++; break; case 3:SumDownsM30++; break; case 4:SumDownsH1++; break; case 5:SumDownsH4++; break; case 6:SumDownsD1++; break; } } } if (SumUpsM15>SumDownsM15){ObjectSetText("MainSignal"+2,CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);}else{ObjectSetText("MainSignal"+2,CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);} if (SumUpsM30>SumDownsM30){ObjectSetText("MainSignal"+3,CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);}else{ObjectSetText("MainSignal"+3,CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);} if (SumUpsH1>SumDownsH1){ObjectSetText("MainSignal"+4,CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);}else{ObjectSetText("MainSignal"+4,CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);} if (SumUpsH4>SumDownsH4){ObjectSetText("MainSignal"+5,CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);}else{ObjectSetText("MainSignal"+5,CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);} if (SumUpsD1>SumDownsD1){ObjectSetText("MainSignal"+6,CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);}else{ObjectSetText("MainSignal"+6,CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);} return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { // при удалении нашего индикатора нужно удалить все объекты, // которые мы уже создали ObjectsDeleteAll(); return(0); } //+------------------------------------------------------------------+