VIndicat_005

0 Views
0 Downloads
0 Favorites
VIndicat_005
//+------------------------------------------------------------------+
//|                                                 VIndicat_005.mq5 |
//+------------------------------------------------------------------+
#property description "VIndi"
//----
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//----
#property indicator_label1  "VIndi"
#property indicator_type1   DRAW_NONE
#property indicator_color1  Gold
//--- input parameters
input int InpNBar=4;       // Period
input int InpXCoord=80;    // X Coordinate
input int InpYCoord=20;    // Y Coordinate
//--- indicator buffers
double IBuf[];
//--- global variables
int    NBar,XCoord,YCoord;
string ShortName;
color  IndColor[64];
//+------------------------------------------------------------------+
//| Indicator initialization function                                |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- check for input values
   if(InpNBar<1)NBar=1;
   else NBar=InpNBar;
   XCoord=InpXCoord;
   YCoord=InpYCoord;
//--- indicator buffers mapping
   SetIndexBuffer(0,IBuf,INDICATOR_DATA);
   ArraySetAsSeries(IBuf,true);
//--- set shortname
   ShortName="VIndi";
   IndicatorSetString(INDICATOR_SHORTNAME,ShortName);
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---          
   initGraph();

   return(0);
  }
//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   deleteGraph();
  }
//+------------------------------------------------------------------+
//| Indicator iteration function                                     |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &Time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   int i;
   double min,max,chan,val;

   ArraySetAsSeries(High,true);
   ArraySetAsSeries(Low,true);
   ArraySetAsSeries(Close,true);

   min=10000;max=0;
   for(i=0;i<NBar;i++)
     {
      if(Low[i]<min)min=Low[i];
      if(High[i]>max)max=High[i];
     }
   chan=(max-min)/2.0;
   val=Close[0]-(max+min)/2.0;
   if(chan==0)val=1.0;
   else val=val/chan;
   if(val>0.99)val=1.1;
   if(val<-0.99)val=-1.1;
   drawGraph(val);

   return(rates_total);
  }
//+------------------------------------------------------------------+
//| initGraph                                                        |
//+------------------------------------------------------------------+
void initGraph()
  {
   int i;
   string nam;

   IndColor[0]=C'255,7,7';
   IndColor[1]=C'250,255,7';
   IndColor[2]=C'225,255,7';
   IndColor[3]=C'200,255,7';
   IndColor[4]=C'175,255,7';
   IndColor[5]=C'150,255,7';
   IndColor[6]=C'125,255,7';
   IndColor[7]=C'100,255,7';
   IndColor[8]=C'75,255,7';
   IndColor[9]=C'50,255,7';
   IndColor[10]=C'25,255,7';
   IndColor[11]=C'130,130,24';
   IndColor[12]=C'25,255,7';
   IndColor[13]=C'50,255,7';
   IndColor[14]=C'75,255,7';
   IndColor[15]=C'100,255,7';
   IndColor[16]=C'125,255,7';
   IndColor[17]=C'150,255,7';
   IndColor[18]=C'175,255,7';
   IndColor[19]=C'200,255,7';
   IndColor[20]=C'225,255,7';
   IndColor[21]=C'250,255,7';
   IndColor[22]=C'255,7,7';

   IndColor[23]=C'56,24,24';
   IndColor[24]=C'32,48,48';
   IndColor[25]=C'32,48,48';
   IndColor[26]=C'32,48,48';
   IndColor[27]=C'32,48,48';
   IndColor[28]=C'32,48,48';
   IndColor[29]=C'32,48,48';
   IndColor[30]=C'32,48,48';
   IndColor[31]=C'32,48,48';
   IndColor[32]=C'32,48,48';
   IndColor[33]=C'32,48,48';
   IndColor[34]=C'130,130,24';
   IndColor[35]=C'32,48,48';
   IndColor[36]=C'32,48,48';
   IndColor[37]=C'32,48,48';
   IndColor[38]=C'32,48,48';
   IndColor[39]=C'32,48,48';
   IndColor[40]=C'32,48,48';
   IndColor[41]=C'32,48,48';
   IndColor[42]=C'32,48,48';
   IndColor[43]=C'32,48,48';
   IndColor[44]=C'32,48,48';
   IndColor[45]=C'56,24,24';

   IndColor[62]=C'54,54,10';
   IndColor[63]=DarkKhaki;

   for(i=0;i<23;i++)
     {
      nam=ShortName+IntegerToString(i);
      ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
      ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
      ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
      ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,31);
      ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord);
      ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+i*4);
      ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[i+23]);
      ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
      ObjectSetString(0,nam,OBJPROP_TEXT,"-");
     }
   nam=ShortName+IntegerToString(23);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord-26);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+17);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[63]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"- -10");
   nam=ShortName+IntegerToString(24);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord-14);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+57);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[63]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"- 0");
   nam=ShortName+IntegerToString(25);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord-29);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+97);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[63]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"- +10");
   nam=ShortName+IntegerToString(26);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord+14);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+17);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[63]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"-");
   nam=ShortName+IntegerToString(27);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord+14);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+57);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[63]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"-");
   nam=ShortName+IntegerToString(28);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord+14);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+97);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[63]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"-");

   nam=ShortName+IntegerToString(29);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+13);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[62]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"__");
   nam=ShortName+IntegerToString(30);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+111);
   ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[62]);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"__");

   for(i=31;i<=39;i++)
     {
      nam=ShortName+IntegerToString(i);
      ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
      ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
      ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
      ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
      ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord-2);
      ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+13+(i-31)*11);
      ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[62]);
      ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
      ObjectSetString(0,nam,OBJPROP_TEXT,"|");
     }
   for(i=40;i<=48;i++)
     {
      nam=ShortName+IntegerToString(i);
      ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
      ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
      ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
      ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
      ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord+13);
      ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+13+(i-40)*11);
      ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[62]);
      ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
      ObjectSetString(0,nam,OBJPROP_TEXT,"|");
     }
   nam=ShortName+IntegerToString(49);
   ObjectCreate(0,nam,OBJ_LABEL,0,0,0);
   ObjectSetInteger(0,nam,OBJPROP_CORNER,CORNER_RIGHT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER);
   ObjectSetInteger(0,nam,OBJPROP_FONTSIZE,9);
   ObjectSetInteger(0,nam,OBJPROP_XDISTANCE,XCoord-18);
   ObjectSetInteger(0,nam,OBJPROP_YDISTANCE,YCoord+57); //29
   ObjectSetInteger(0,nam,OBJPROP_COLOR,DarkKhaki);
   ObjectSetString(0,nam,OBJPROP_FONT,"Arial");
   ObjectSetString(0,nam,OBJPROP_TEXT,"");

  }
//+------------------------------------------------------------------+
//| drawGraph                                                        |
//+------------------------------------------------------------------+
void drawGraph(double level)
  {
   int i,p,c;
   string nam,st;

   p=int(MathRound(10*level));
   if(level>1.001)p=11;
   if(level<-1.001)p=-11;

   p=p+11;
   for(i=0;i<23;i++)
     {
      c=i+23;
      if(i<=p && i>11)c=i;
      if(i>=p && i<11)c=i;
      nam=ShortName+IntegerToString(i);
      ObjectSetInteger(0,nam,OBJPROP_COLOR,IndColor[c]);
     }
   nam=ShortName+IntegerToString(49);
   st="("+IntegerToString(p-11)+")";
   ObjectSetString(0,nam,OBJPROP_TEXT,st);
  }
//+------------------------------------------------------------------+
//| deleteGraph()                                                    |
//+------------------------------------------------------------------+
void deleteGraph()
  {
   int i;
   string nam;

   for(i=0;i<=49;i++)
     {
      nam=ShortName+IntegerToString(i);
      ObjectDelete(0,nam);
     }
  }
//-----------------------------------------------------------------------------

Comments