//+------------------------------------------------------------------+
//|                                              MTF_Trix_11bars.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property link      " cja "
#property indicator_chart_window

extern string  symbol      = "";
extern string  TimeFrame_1 = "5";
extern string  TimeFrame_2 = "15";
extern string  TimeFrame_3 = "60";
extern double  Line_ht     = 75.0;
extern int     TRIX_Period = 6;
extern int     CountBars   = 500;
extern color   UpColor     = Lime;
extern color   DownColor   = Red;
extern int     bars        = 11;
extern int     xPos        = 10;
extern int     yPos        = 10;
extern bool Corner_of_Chart_RIGHT_TOP = true;

int    heading_offset = 17;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectsDeleteAll(0,OBJ_LABEL); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {   
   for(int i = 0; i < bars; i++) {
   
      color col,head_col;
      int boxtype,boxsize;
      int xp,yp;
      
      int tf1=txt2tf(TimeFrame_1);
      int tf2=txt2tf(TimeFrame_2);
      int tf3=txt2tf(TimeFrame_3);
      
      if(symbol=="") symbol=Symbol();
      
      //Timeframe 1
      double tf1a=iCustom(symbol,0,"MTF_Trix_Meter",tf1,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",0,i); 
      double tf1b=iCustom(symbol,0,"MTF_Trix_Meter",tf1,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",1,i); 
      double tf1c=iCustom(symbol,0,"MTF_Trix_Meter",tf1,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",2,i); 
      double tf1d=iCustom(symbol,0,"MTF_Trix_Meter",tf1,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",3,i); 
      double xadr=iCustom(symbol,0,"xADR_vbobv1",true,5,25,0.2,Lime,Red,Yellow,0,0,i); 
      
      if(xadr==1) head_col=UpColor;
      else if(xadr==0) head_col=DownColor;
      
      xp = xPos+i*8;
      yp = yPos+heading_offset;
      if(tf1a==75) {col=UpColor;boxtype=111;boxsize=8;}
      if(tf1b==75) {col=DownColor;boxtype=111;boxsize=8;}
      if(tf1c==75) {col=UpColor;boxtype=110;boxsize=9;yp=yp-1;}
      if(tf1d==75) {col=DownColor;boxtype=110;boxsize=9;yp=yp-1;}
            
         ObjectCreate(symbol+"_TrixTF1_"+i, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(symbol+"_TrixTF1_"+i, CharToStr(boxtype), boxsize, "Wingdings", col);
      ObjectSet(symbol+"_TrixTF1_"+i, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
      ObjectSet(symbol+"_TrixTF1_"+i, OBJPROP_XDISTANCE, xp);
      ObjectSet(symbol+"_TrixTF1_"+i, OBJPROP_YDISTANCE, yp); 
      
      if(i==bars-1){      
         xp = xPos+i*9;
         yp = yPos+heading_offset;      
               ObjectCreate(symbol+"_TrixTF1", OBJ_LABEL, 0, 0, 0);
         ObjectSetText(symbol+"_TrixTF1", tf2txt(tf1), 6, "Tahoma Narrow", Silver);
         ObjectSet(symbol+"_TrixTF1", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
         ObjectSet(symbol+"_TrixTF1", OBJPROP_XDISTANCE, xp);
         ObjectSet(symbol+"_TrixTF1", OBJPROP_YDISTANCE, yp); 
            
         xp = xPos;
         yp = yPos;
         ObjectCreate(symbol+"_TrixTF1_Symbol", OBJ_LABEL, 0, 0, 0);
         ObjectSetText(symbol+"_TrixTF1_Symbol", symbol, 14, "Arial Bold", head_col);
         ObjectSet(symbol+"_TrixTF1_Symbol",OBJPROP_CORNER,1);
         ObjectSet(symbol+"_TrixTF1_Symbol", OBJPROP_XDISTANCE, xp);
         ObjectSet(symbol+"_TrixTF1_Symbol", OBJPROP_YDISTANCE, yp);         
      }

      //Timeframe 2
      double tf2a=iCustom(symbol,0,"MTF_Trix_Meter",tf2,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",0,i); 
      double tf2b=iCustom(symbol,0,"MTF_Trix_Meter",tf2,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",1,i); 
      double tf2c=iCustom(symbol,0,"MTF_Trix_Meter",tf2,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",2,i); 
      double tf2d=iCustom(symbol,0,"MTF_Trix_Meter",tf2,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",3,i); 
      
      xp = xPos+i*8;
      yp = yPos+8+heading_offset;      
      if(tf2a==75) {col=UpColor;boxtype=111;boxsize=8;}
      if(tf2b==75) {col=DownColor;boxtype=111;boxsize=8;}
      if(tf2c==75) {col=UpColor;boxtype=110;boxsize=9;yp=yp-1;}
      if(tf2d==75) {col=DownColor;boxtype=110;boxsize=9;yp=yp-1;}
      
         ObjectCreate(symbol+"_TrixTF2_"+i, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(symbol+"_TrixTF2_"+i, CharToStr(boxtype), boxsize, "Wingdings", col);
      ObjectSet(symbol+"_TrixTF2_"+i, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
      ObjectSet(symbol+"_TrixTF2_"+i, OBJPROP_XDISTANCE, xp);
      ObjectSet(symbol+"_TrixTF2_"+i, OBJPROP_YDISTANCE, yp); 
            
      if(i==bars-1){
         xp = xPos+i*9;
         yp = yPos+8+heading_offset;
               ObjectCreate(symbol+"_TrixTF2", OBJ_LABEL, 0, 0, 0);
         ObjectSetText(symbol+"_TrixTF2", tf2txt(tf2), 6, "Tahoma Narrow", Silver);
         ObjectSet(symbol+"_TrixTF2", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
         ObjectSet(symbol+"_TrixTF2", OBJPROP_XDISTANCE, xp);
         ObjectSet(symbol+"_TrixTF2", OBJPROP_YDISTANCE, yp); 
      }

      //Timeframe 3
      double tf3a=iCustom(symbol,0,"MTF_Trix_Meter",tf3,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",0,i); 
      double tf3b=iCustom(symbol,0,"MTF_Trix_Meter",tf3,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",1,i); 
      double tf3c=iCustom(symbol,0,"MTF_Trix_Meter",tf3,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",2,i); 
      double tf3d=iCustom(symbol,0,"MTF_Trix_Meter",tf3,Line_ht,TRIX_Period,CountBars,UpColor,DownColor,111,110,0,"",3,i); 
      
      xp = xPos+i*8;
      yp = yPos+16+heading_offset;
      if(tf3a==75) {col=UpColor;boxtype=111;boxsize=8;}
      if(tf3b==75) {col=DownColor;boxtype=111;boxsize=8;}
      if(tf3c==75) {col=UpColor;boxtype=110;boxsize=9;yp=yp-1;}
      if(tf3d==75) {col=DownColor;boxtype=110;boxsize=9;yp=yp-1;}
      
         ObjectCreate(symbol+"_TrixTF3_"+i, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(symbol+"_TrixTF3_"+i, CharToStr(boxtype), boxsize, "Wingdings", col);
      ObjectSet(symbol+"_TrixTF3_"+i, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
      ObjectSet(symbol+"_TrixTF3_"+i, OBJPROP_XDISTANCE, xp);
      ObjectSet(symbol+"_TrixTF3_"+i, OBJPROP_YDISTANCE, yp); 

      if(i==bars-1){
         xp = xPos+i*9;
         yp = yPos+16+heading_offset;
               ObjectCreate(symbol+"_TrixTF3", OBJ_LABEL, 0, 0, 0);
         ObjectSetText(symbol+"_TrixTF3", tf2txt(tf3), 6, "Tahoma Narrow", Silver);
         ObjectSet(symbol+"_TrixTF3", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
         ObjectSet(symbol+"_TrixTF3", OBJPROP_XDISTANCE, xp);
         ObjectSet(symbol+"_TrixTF3", OBJPROP_YDISTANCE, yp); 
      }
   }
         
//----
   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Convert TimeFrame String to TimeFrame                            |
//+------------------------------------------------------------------+
int  txt2tf(string txt)//if wrong input return 0
{
  if(txt=="m1" || txt=="M1" || txt=="1") return(PERIOD_M1);
  else if (txt=="m5" || txt=="M5" || txt=="5") return(PERIOD_M5);
  else if (txt=="m15" || txt=="M15" || txt=="15") return(PERIOD_M15);
  else if (txt=="m30" || txt=="M30" || txt=="30") return(PERIOD_M30);
  else if (txt=="h1" || txt=="H1" || txt=="60") return(PERIOD_H1);
  else if (txt=="h4" || txt=="H4" || txt=="240") return(PERIOD_H4);
  else if (txt=="d1" || txt=="D1" || txt=="1440") return(PERIOD_D1);
  else if (txt=="w1" || txt=="W1") return(PERIOD_W1);
  else if (txt=="mn" || txt=="MN"|| txt=="mN"|| txt=="Mn") return(PERIOD_MN1);
  else return(0);
}

//+------------------------------------------------------------------+
//| Convert TimeFram to TimeFrame String                             |
//+------------------------------------------------------------------+
string  tf2txt(int tf)//if wrong input return 0
{
  if(tf==PERIOD_M1) return("M1");
  else if(tf==PERIOD_M5) return("M5");
  else if(tf==PERIOD_M15) return("M15");
  else if(tf==PERIOD_M30) return("M30");
  else if(tf==PERIOD_H1) return("H1");
  else if(tf==PERIOD_H4) return("H4");
  else if(tf==PERIOD_D1) return("D1");
  else if(tf==PERIOD_W1) return("W1");
  else if(tf==PERIOD_MN1) return("MN1");
  else return(0);
}