Navigation:Home > Content >

Market_Profile.mq4

Time: 2017-09-26 | Download file:Market_Profile.mq4

//+------------------------------------------------------------------+
//|                                                MarketProfile.mq4 |
//|                             Copyright © 2006, Viatcheslav Suvorov| 
//+------------------------------------------------------------------+
#property copyright "Viatcheslav Suvorov"

#property indicator_chart_window

extern datetime StartDate = D'1/1/2007';
extern bool lastdayStart = true;
extern int CountProfile = 7;
extern color AziaColor=DimGray;
extern color EuropaColor=DarkOliveGreen;
extern color AmericaColor=DarkSlateGray;
extern color MedianaColor=Navy;

int fontsize=10;
int i,j;
double LastHigh,LastLow,CurPos;
bool signal; 
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
ObjectsDeleteAll(0,OBJ_RECTANGLE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;


//---- name for DataWindow and indicator subwindow label
   short_name="MarketProfile";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{  
  deinit();

double onetick;  
double Mediana=0;
int MaxSize=0;
int MySize=0;
int MySizeEuropa=0;
int MySizeAzia=0;
int MySizeAmerica=0;
int BACK=0;
if (lastdayStart) StartDate=Time[0];

int x=Period();
if (x>60) return(-1);
if (x<15) return(-1);


BACK=0;
while (TimeDayOfYear(Time[BACK])>TimeDayOfYear(StartDate) || TimeYear(Time[BACK])!=TimeYear(StartDate) && (BACK=Bars) return(0);
}//while

onetick = 1/(MathPow(10,Digits));
i=BACK;
////
int cycles;

for (cycles=CountProfile;cycles>0;cycles--) 
{
  signal=false;
  LastHigh=High[i];
  LastLow=Low[i];
  while (!signal)
  { 
   //if (i+1==Bars) signal=true;
   if (High[i+1]>LastHigh) LastHigh=High[i+1];
   if (Low[i+1]=BACK;j--) 
       {
         if ((High[j]>=CurPos) && (Low[j]<=CurPos)) 
         {
           MySize++;       
           if (TimeHour(Time[j])>=13)  MySizeAmerica++; else 
           if ((TimeHour(Time[j])>=8) && (TimeHour(Time[j])<13)) MySizeEuropa++; else MySizeAzia++;
         }//if  
       }//for
       if (MySizeAzia+MySizeEuropa+MySizeAmerica>MaxSize)
       {
         MaxSize=MySizeAzia+MySizeEuropa+MySizeAmerica;
         Mediana=CurPos;
       }
       
       if (i-MySizeAzia>=0)
       if(ObjectFind("rec"+"Azia"+TimeToStr(Time[i],TIME_DATE)+CurPos) == -1 && MySizeAzia!=0) 
       {
         ObjectCreate("rec"+"Azia"+TimeToStr(Time[i],TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i], CurPos,Time[i-MySizeAzia],CurPos+onetick);
         ObjectSet("rec"+"Azia"+TimeToStr(Time[i],TIME_DATE)+CurPos, OBJPROP_COLOR, AziaColor);
       }//if      
       
       if(ObjectFind("rec"+"Europa"+TimeToStr(Time[i],TIME_DATE)+CurPos) == -1 && MySizeEuropa!=0) 
       {
         ObjectCreate("rec"+"Europa"+TimeToStr(Time[i],TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeAzia], CurPos,Time[i-MySizeAzia-MySizeEuropa],CurPos+onetick);
         ObjectSet("rec"+"Europa"+TimeToStr(Time[i],TIME_DATE)+CurPos, OBJPROP_COLOR, EuropaColor);           
       }//if      
       
       if(ObjectFind("rec"+"America"+TimeToStr(Time[i],TIME_DATE)+CurPos) == -1 && MySizeAmerica!=0) 
       {
         ObjectCreate("rec"+"America"+TimeToStr(Time[i],TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeAzia-MySizeEuropa], CurPos,Time[i-MySizeAzia-MySizeEuropa-MySizeAmerica],CurPos+onetick);
         ObjectSet("rec"+"America"+TimeToStr(Time[i],TIME_DATE)+CurPos, OBJPROP_COLOR, AmericaColor);
       }//if      
       
       CurPos=CurPos+onetick;
     }//while

     ObjectCreate("mediana"+TimeToStr(Time[i],TIME_DATE), OBJ_RECTANGLE, 0, Time[i], Mediana,Time[i+10],Mediana+onetick);
     ObjectSet("mediana"+TimeToStr(Time[i],TIME_DATE), OBJPROP_STYLE, STYLE_SOLID);
     ObjectSet("mediana"+TimeToStr(Time[i],TIME_DATE), OBJPROP_COLOR, MedianaColor);   
     BACK=i+1;   
   }//if
   i++;   
   if (i>=Bars) return(0);
  }//while
}//for
//----

  return(0);
}
//+------------------------------------------------------------------+

Recommend