//////////////////////////////////////////////////////////////////////
//                                                  signalTable.mq4 
//                                                     Antonuk Oleg 
//                                            antonukoleg@gmail.com 
//////////////////////////////////////////////////////////////////////
#property copyright "Antonuk Oleg"
#property link      "antonukoleg@gmail.com"
// modification by kinonen date=December 2008 with others indicators
// kino_multi_indicators2

#property indicator_chart_window
#property indicator_level3 0

extern int pEMA=21;
extern int pCCI1=21;
extern int pCCI2=89;
extern int limitCCI=0;
extern int pRSI=21;
extern int limUpRSI=55;
extern int limDwRSI=45;

extern int scaleX=20,
           scaleY=20,
           offsetX=35,
           offsetY=20,
           fontSize=14,
           corner=2,
           symbolCodeBuy=       241, //hands 67&68
           symbolCodeSell=      242, 
           symbolCodeNoSignal=  243; //73
           
extern color signalBuyColor=DarkGreen,
             signalSellColor=Crimson,
             noSignalColor=Yellow,
             textColor=Aqua;            
            
int period[]={1,5,15,30,60,240,1440,10080,43200};  
string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"},
       // Array with indicator names
       signalNameString[]={"Trend ","EMA ","CCI1","CCI2 ","RSI ","Macd","HAS"};
       
     

//////////////////////////////////////////////////////////////////////
//
// init()          
//
//////////////////////////////////////////////////////////////////////
int init()
{
   // table of signals
   for(int x=0;x<9;x++)
      for(int y=0;y<7;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+offsetY);
         ObjectSetText("signal"+x+y,CharToStr(symbolCodeNoSignal),
                       fontSize,"Wingdings",noSignalColor);
      }
 
   // names of timeframes
   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);
     }
 
   // names of indicators
   for(y=0;y<7;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);
     }
   
   return(0);
}
  /////////////////////////////////////////////////////////////
  //           int start()                                   // 
  /////////////////////////////////////////////////////////////
int start()
{
   //======================TREND =============compares SMA and Close=======
   //iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift) 
   for(int x=0;x<9;x++)
     {
     
      if ((iMA(Symbol(),period[x],13,0,MODE_EMA,0,0)>iMA(Symbol(),period[x],21,0,MODE_EMA,0,0)) && (iMA(Symbol(),period[x],21,0,MODE_EMA,0,0)>iMA(Symbol(),period[x],55,0,MODE_EMA,0,0)))
         ObjectSetText("signal"+x+"0",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);
         
      else if ((iMA(Symbol(),period[x],13,0,MODE_EMA,0,0)<iMA(Symbol(),period[x],21,0,MODE_EMA,0,0)) && (iMA(Symbol(),period[x],21,0,MODE_EMA,0,0)<iMA(Symbol(),period[x],55,0,MODE_EMA,0,0)))
         ObjectSetText("signal"+x+"0",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor); 
      else   ObjectSetText("signal"+x+"0",CharToStr(symbolCodeNoSignal),fontSize,"Wingdings",noSignalColor); 
     }
   
    //======================EMA34 ===========================
   for(x=0;x<9;x++)
     {
      if(iMA(Symbol(),period[x],pEMA,0,1,0,0)>iMA(Symbol(),period[x],1,0,0,0,0))
         ObjectSetText("signal"+x+"1",CharToStr(symbolCodeBuy),fontSize,
         "Wingdings",signalBuyColor);   
      else 
         ObjectSetText("signal"+x+"1",CharToStr(symbolCodeSell),fontSize,
         "Wingdings",signalSellColor);   
          
     }
   //======================CCI1========================
   for(x=0;x<9;x++)
     {
      if(iCCI(Symbol(),period[x],pCCI1,0,0)>limitCCI)
         ObjectSetText("signal"+x+"2",CharToStr(symbolCodeBuy),fontSize,
         "Wingdings",signalBuyColor);
      else
         ObjectSetText("signal"+x+"2",CharToStr(symbolCodeSell),fontSize,
         "Wingdings",signalSellColor);
     }
   //====================== CCI2 ===============================
   for(x=0;x<9;x++)
     {
       if(iCCI(Symbol(),period[x],pCCI2,0,0)>limitCCI)
         ObjectSetText("signal"+x+"3",CharToStr(symbolCodeBuy),fontSize,
         "Wingdings",signalBuyColor);
      else
         ObjectSetText("signal"+x+"3",CharToStr(symbolCodeSell),fontSize,
         "Wingdings",signalSellColor); 
     }
   //======================RSI===============================
   // iRSI( string symbol,int timeframe,int period,int applied_price,int shift) 

   for(x=0;x<9;x++)
     {
      if(iRSI(Symbol(),period[x],pRSI,0,0)>limUpRSI   )
         ObjectSetText("signal"+x+"4",CharToStr(symbolCodeBuy),fontSize,
         "Wingdings",signalBuyColor);   
      else if(iRSI(Symbol(),period[x],pRSI,0,0)<limDwRSI)
         ObjectSetText("signal"+x+"4",CharToStr(symbolCodeSell),fontSize,
         "Wingdings",signalSellColor);   
      else
         ObjectSetText("signal"+x+"4",CharToStr(symbolCodeNoSignal),fontSize,
         "Wingdings",noSignalColor);    
     }     
  //=======================MACD=============================
  for(x=0;x<9;x++)
     {
       if(iMACD(Symbol(),period[x],13,21,8,0,0,0)>0)   //macd positive
         ObjectSetText("signal"+x+"5",
         CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);
      else
         ObjectSetText("signal"+x+"5",CharToStr(symbolCodeSell),fontSize,
         "Wingdings",signalSellColor); 
     }
  
  
   //=======================HAS=============================
  for(x=0;x<9;x++)
     {     
       if(iCustom(Symbol(),period[x],"Heiken_Ashi_Smoothed",2,6,3,2,2,0)<iCustom(Symbol(),period[x],"Heiken_Ashi_Smoothed",2,6,3,2,3,0))
         ObjectSetText("signal"+x+"6",CharToStr(symbolCodeBuy),fontSize,
         "Wingdings",signalBuyColor);
       else 
          ObjectSetText("signal"+x+"6",CharToStr(symbolCodeSell),fontSize,
         "Wingdings",signalSellColor);
    
     }
  
  //==========================================================
  
  
   return(0);
}

//////////////////////////////////////////////////////////////////////
//
//  deinit()                       
//
//////////////////////////////////////////////////////////////////////
int deinit()
{
   // when deleting the indicator delete all objects
   ObjectsDeleteAll();
 
   return(0);
}