_TRO_MID_v1





//+------------------------------------------------------------------+
//|                             _TRO_MID                             |
//|                                                                  |
//|   Copyright © 2007, Avery T. Horton, Jr. aka TheRumpledOne       |
//|                                                                  |
//|   PO BOX 43575, TUCSON, AZ 85733                                 |
//|                                                                  |
//|   GIFT AND DONATIONS ACCEPTED                                    |
//|                                                                  |
//|    http://docs.mql4.com/constants/wingdings                      |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Avery T. Horton, Jr. aka TheRumpledOne"
#property link      "therumpledone@gmail.com"
//----
#property indicator_chart_window
#property indicator_buffers 2
//----
#property indicator_color1 MediumTurquoise
#property indicator_color2 Magenta
#property indicator_color3 MediumTurquoise
#property indicator_color4 Red
#property indicator_color5 Yellow
#property indicator_color6 Orange
#property indicator_color7 OrangeRed
//---- For the small screens
// extern string    Display_infos         = "=== If true, displayed on the chart ===";
// extern bool      display_on_chart      =  true ;  // If true, the open trade analysis, daily pivots and daily range will be displayed on the chart window
// indicators parameters
extern bool iPlotChart=true ;
extern bool iPlotGauge=false ;
extern int LocalTimeZone= 0;
extern int DestTimeZone= 0;
extern int myPeriod =1440 ;
extern int myOffset =1;
extern int myChartY=1 ;
extern int myStyle1 =2 ;
extern int myStyle2 =2 ;
extern int myStyle3 =2 ;
extern int myStyle4 =2 ;
extern int myStyle5 =2 ;
extern int myStyle6 =2 ;
extern int myStyle7 =2 ;
extern int myWingDing1 =115 ;
extern int myWingDing2 =115 ;
extern int myWingDing3 =115 ;
extern int myWingDing4 =115 ;
extern int myWingDing5 =115 ;
extern int myWingDing6 =115 ;
extern int myWingDing7 =115 ;
extern color myColor1 =MediumTurquoise ;
extern color myColor2 =Magenta;
extern color myColor3 =MediumTurquoise ;
extern color myColor4 =Red;
extern color myColor5 =Yellow;
extern color myColor6 =Orange;
extern color myColor7 =OrangeRed;
//---- buffers
double P1Buffer[];
double P2Buffer[];
double P3Buffer[];
double P4Buffer[];
double P5Buffer[];
double P6Buffer[];
double P7Buffer[];
//----
double yesterday_high=0;
double yesterday_open=0;
double yesterday_low=0;
double yesterday_close=0;
double today_open=0;
double today_high=0;
double today_low=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- name for indicator window
   string short_name=" ";
   IndicatorShortName(short_name);
   SetIndexBuffer(0, P1Buffer);
   SetIndexBuffer(1, P2Buffer);
   SetIndexBuffer(2, P3Buffer);
   SetIndexBuffer(3, P4Buffer);
   SetIndexBuffer(4, P5Buffer);
   SetIndexBuffer(5, P6Buffer);
   SetIndexBuffer(6, P7Buffer);
//----
   SetIndexArrow(0, myWingDing1);
   SetIndexArrow(1, myWingDing2);
   SetIndexArrow(2, myWingDing3);
   SetIndexArrow(3, myWingDing4);
   SetIndexArrow(4, myWingDing5);
   SetIndexArrow(5, myWingDing6);
   SetIndexArrow(6, myWingDing7);
//----   
   SetIndexStyle(0, DRAW_ARROW, myStyle1, 1);
   SetIndexStyle(1, DRAW_ARROW, myStyle2, 1);
   SetIndexStyle(2, DRAW_ARROW, myStyle3, 1);
   SetIndexStyle(3, DRAW_ARROW, myStyle4, 1);
   SetIndexStyle(4, DRAW_ARROW, myStyle5, 1);
   SetIndexStyle(5, DRAW_ARROW, myStyle6, 1);
   SetIndexStyle(6, DRAW_ARROW, myStyle7, 1);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete("MID");
   ObjectDelete("line5MID");
   ObjectDelete("X01_LabelMID");
   ObjectDelete("X01_ValueMID");
   ObjectDelete("X02_LabelMID");
   ObjectDelete("X02_ValueMID");
   ObjectDelete("X03_LabelMID");
   ObjectDelete("X03_ValueMID");
   ObjectDelete("X04_LabelMID");
   ObjectDelete("X04_ValueMID");
   ObjectDelete("X05_LabelMID");
   ObjectDelete("X05_ValueMID");
   ObjectDelete("X06_LabelMID");
   ObjectDelete("X06_ValueMID");
   ObjectDelete("X07_LabelMID");
   ObjectDelete("X07_ValueMID");
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i, dayi, counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars < 0)
      return(-1);
//---- last counted bar will be recounted
   if(counted_bars > 0)
      counted_bars--;
   int limit=Bars - counted_bars;
//----   
   for(i=limit - 1; i>=0; i--)
     {
      double X01=(iHigh(NULL,0,i) + iLow(NULL,0,i)) * 0.5;
      double X02=(iHigh(NULL,0,i+1) + iLow(NULL,0,i+1)) * 0.5 ;
      double X03=0 ;
      double X04=0 ;
      double X05=0 ;
      double X06=0 ;
      double X07=0 ;
        if(iPlotChart)
        {
         P1Buffer[i]=X01 ;
         P2Buffer[i]=X02 ;
         P3Buffer[i]=X03 ;
         P4Buffer[i]=X04 ;
         P5Buffer[i]=X05 ;
         P6Buffer[i]=X06 ;
         P7Buffer[i]=X07 ;
        } // iPlotChart
     } // FOR 
     if(iPlotGauge)
     {
      string StrX01="Mid";
      string StrX02="Prev";
      string StrX03="-XO3";
      string StrX04="-XO4";
      string StrX05="-XO5";
      string StrX06="-XO6";
      string StrX07="-XO7";
//----
      color color_MID_1=Orchid;
      color color_X01=Red;
      color color_X02=Red;
      color color_X03=Red;
      color color_X04=Red;
      color color_X05=Red;
      color color_X06=Red;
      color color_X07=Red;
//----
      if(Close[0] < X01) { color_X01=Lime; }
      if(Close[0] < X02) { color_X02=Lime; }
      if(Close[0] < X03) { color_X03=Lime; }
      if(Close[0] < X04) { color_X04=Lime; }
      if(Close[0] < X05) { color_X05=Lime; }
      if(Close[0] < X06) { color_X06=Lime; }
      //	if( Close[0] < X07) { color_X07=Lime; }		
      int Precision, dig;
      if(StringFind( Symbol(), "JPY", 0)!=-1){ Precision=100; dig=2;}
      else                                        { Precision=10000; dig=4; }
      int sPeriod= Period();
      if (myPeriod!=NULL){ sPeriod= myPeriod ;}
      //---- Set labels
      int WindowToUse;
      int Corner_line, Xdist_line;
      int Corner_text, Corner_ValueMID, Xdist_text, Xdist_ValueMID;
      int Ydist_line5;
      int Corner_pivots, Xdist_pivots, Ydist_pivots;
      int Ydist_X01, Ydist_X02, Ydist_X03, Ydist_X04, Ydist_X05, Ydist_X06, Ydist_X07;
      int YdistInc ;
//----
      WindowToUse= 0;
      Corner_line=1;
      Corner_text=1;
      Corner_ValueMID=1;
      Xdist_line=21;
      Xdist_text=93;
      Xdist_ValueMID=23;
      Corner_pivots=1;
      Xdist_pivots=21;
//----
      Ydist_pivots=myChartY;
      Ydist_line5=
      Ydist_pivots + 11;
      YdistInc=15 ;
      Ydist_X01=Ydist_pivots + 25;
      Ydist_X02=Ydist_X01 + YdistInc;
      Ydist_X03=Ydist_X01 + YdistInc*2;
      Ydist_X04=Ydist_X01 + YdistInc*3;
      Ydist_X05=Ydist_X01 + YdistInc*4;
      Ydist_X06=Ydist_X01 + YdistInc*5;
      Ydist_X07=Ydist_X01 + YdistInc*6;
//----
      ObjectCreate("MID", OBJ_LABEL, WindowToUse, 0, 0);
      ObjectSetText("MID",sPeriod + " MID ",9, "Verdana", color_MID_1);
      ObjectSet("MID", OBJPROP_CORNER, Corner_pivots);
      ObjectSet("MID", OBJPROP_XDISTANCE, Xdist_pivots);
      ObjectSet("MID", OBJPROP_YDISTANCE, Ydist_pivots);
      //
      ObjectCreate("line5MID", OBJ_LABEL, WindowToUse, 0, 0);
      ObjectSetText("line5MID","---------------------",7, "Verdana", color_MID_1);
      ObjectSet("line5MID", OBJPROP_CORNER, Corner_line);
      ObjectSet("line5MID", OBJPROP_XDISTANCE, Xdist_line);
      ObjectSet("line5MID", OBJPROP_YDISTANCE, Ydist_line5);
      //
      ObjectCreate("X01_LabelMID", OBJ_LABEL, WindowToUse, 0, 0);
      ObjectSetText("X01_LabelMID",StrX01,9, "Verdana", myColor1);
      ObjectSet("X01_LabelMID", OBJPROP_CORNER, Corner_text);
      ObjectSet("X01_LabelMID", OBJPROP_XDISTANCE, Xdist_text);
      ObjectSet("X01_LabelMID", OBJPROP_YDISTANCE, Ydist_X01);
      //
      ObjectCreate("X01_ValueMID", OBJ_LABEL, WindowToUse, 0, 0);
      ObjectSetText("X01_ValueMID"," "+DoubleToStr(X01,dig),9, "Verdana", color_X01);
      ObjectSet("X01_ValueMID", OBJPROP_CORNER, Corner_ValueMID);
      ObjectSet("X01_ValueMID", OBJPROP_XDISTANCE, Xdist_ValueMID);
      ObjectSet("X01_ValueMID", OBJPROP_YDISTANCE, Ydist_X01);
      //
      ObjectCreate("X02_LabelMID", OBJ_LABEL, WindowToUse, 0, 0);
      ObjectSetText("X02_LabelMID",StrX02,9, "Verdana", myColor2);
      ObjectSet("X02_LabelMID", OBJPROP_CORNER, Corner_text);
      ObjectSet("X02_LabelMID", OBJPROP_XDISTANCE, Xdist_text);
      ObjectSet("X02_LabelMID", OBJPROP_YDISTANCE, Ydist_X02);
      //
      ObjectCreate("X02_ValueMID", OBJ_LABEL, WindowToUse, 0, 0);
      ObjectSetText("X02_ValueMID"," "+DoubleToStr(X02,dig),9, "Verdana", color_X02);
      ObjectSet("X02_ValueMID", OBJPROP_CORNER, Corner_ValueMID);
      ObjectSet("X02_ValueMID", OBJPROP_XDISTANCE, Xdist_ValueMID);
      ObjectSet("X02_ValueMID", OBJPROP_YDISTANCE, Ydist_X02);
/*
   ObjectCreate("X03_LabelMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X03_LabelMID",StrX03,9, "Verdana", myColor3 );
   ObjectSet("X03_LabelMID", OBJPROP_CORNER, Corner_text);
   ObjectSet("X03_LabelMID", OBJPROP_XDISTANCE, Xdist_text);
   ObjectSet("X03_LabelMID", OBJPROP_YDISTANCE, Ydist_X03);   
   ObjectCreate("X03_ValueMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X03_ValueMID"," "+DoubleToStr(X03,dig),9, "Verdana", color_X03);
   ObjectSet("X03_ValueMID", OBJPROP_CORNER, Corner_ValueMID);
   ObjectSet("X03_ValueMID", OBJPROP_XDISTANCE, Xdist_ValueMID);
   ObjectSet("X03_ValueMID", OBJPROP_YDISTANCE, Ydist_X03);
   ObjectCreate("X04_LabelMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X04_LabelMID",StrX04,9, "Verdana", myColor4 );
   ObjectSet("X04_LabelMID", OBJPROP_CORNER, Corner_text);
   ObjectSet("X04_LabelMID", OBJPROP_XDISTANCE, Xdist_text);
   ObjectSet("X04_LabelMID", OBJPROP_YDISTANCE, Ydist_X04);
   ObjectCreate("X04_ValueMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X04_ValueMID"," "+DoubleToStr(X04,dig),9, "Verdana", color_X04);
   ObjectSet("X04_ValueMID", OBJPROP_CORNER, Corner_ValueMID);
   ObjectSet("X04_ValueMID", OBJPROP_XDISTANCE, Xdist_ValueMID);
   ObjectSet("X04_ValueMID", OBJPROP_YDISTANCE, Ydist_X04);
   ObjectCreate("X05_LabelMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X05_LabelMID",StrX05,9, "Verdana", myColor5 );
   ObjectSet("X05_LabelMID", OBJPROP_CORNER, Corner_text);
   ObjectSet("X05_LabelMID", OBJPROP_XDISTANCE, Xdist_text);
   ObjectSet("X05_LabelMID", OBJPROP_YDISTANCE, Ydist_X05);
   ObjectCreate("X05_ValueMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X05_ValueMID"," "+DoubleToStr(X05,dig),9, "Verdana", color_X05);
   ObjectSet("X05_ValueMID", OBJPROP_CORNER, Corner_ValueMID);
   ObjectSet("X05_ValueMID", OBJPROP_XDISTANCE, Xdist_ValueMID);
   ObjectSet("X05_ValueMID", OBJPROP_YDISTANCE, Ydist_X05);
   ObjectCreate("X06_LabelMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X06_LabelMID",StrX06,9, "Verdana", myColor6 );
   ObjectSet("X06_LabelMID", OBJPROP_CORNER, Corner_text);
   ObjectSet("X06_LabelMID", OBJPROP_XDISTANCE, Xdist_text);
   ObjectSet("X06_LabelMID", OBJPROP_YDISTANCE, Ydist_X06);
   ObjectCreate("X06_ValueMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X06_ValueMID"," "+DoubleToStr(X06,dig),9, "Verdana", color_X06);
   ObjectSet("X06_ValueMID", OBJPROP_CORNER, Corner_ValueMID);
   ObjectSet("X06_ValueMID", OBJPROP_XDISTANCE, Xdist_ValueMID);
   ObjectSet("X06_ValueMID", OBJPROP_YDISTANCE, Ydist_X06);
   ObjectCreate("X07_LabelMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X07_LabelMID",StrX07,9, "Verdana", myColor7 );
   ObjectSet("X07_LabelMID", OBJPROP_CORNER, Corner_text);
   ObjectSet("X07_LabelMID", OBJPROP_XDISTANCE, Xdist_text);
   ObjectSet("X07_LabelMID", OBJPROP_YDISTANCE, Ydist_X07);
   ObjectCreate("X07_ValueMID", OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText("X07_ValueMID"," "+DoubleToStr(X07,dig),9, "Verdana", color_X07);
   ObjectSet("X07_ValueMID", OBJPROP_CORNER, Corner_ValueMID);
   ObjectSet("X07_ValueMID", OBJPROP_XDISTANCE, Xdist_ValueMID);
   ObjectSet("X07_ValueMID", OBJPROP_YDISTANCE, Ydist_X07);
*/
     } // iPlotGauge
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar


Indicator Curves created:


Implements a curve of type DRAW_ARROW

Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: