mtf_visualization_v1_5_1

mtf_visualization_v1_5_1
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains open prices of each barSeries array that contains close prices for each barSeries array that contains open prices of each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
0 Views
0 Downloads
0 Favorites
mtf_visualization_v1_5_1
//+------------------------------------------------------------------+
//|                                       MTF Visualization v1.5.mq4 |
//|                                  2014 - Joca (nc32007a@gmail.com)|
//+------------------------------------------------------------------+

#property indicator_chart_window

//---- input parameters

extern bool updirection=true;
extern string   FrameLabel = "Enable Timeframe:(1=true)...M1,M5,M15,M30,H1,H4,D1,W1,MN,Year";
extern string enable_TMF="1,1,1,1,1,1,1,1,1,1";
extern bool   stats=false;
extern bool pivots=false;
extern color MNPivotclr= White, W1Pivotclr=Yellow, D1Pivotclr=Red;
extern double offset=10;
extern double step=6;
extern color   UpCandleColor= Lime;
extern color   DownCandleColor = Red;
extern int     widthHL = 1;
extern int     widthOC = 5;
extern int year_width_factor=2;

int BaseTF, nextTF, width_OC,width_HL;
string BaseTMFR;
int timeFrame[] = {1,5,15,30,60,240,1440,10080,43200,99};
string TimeFrames[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN","Year"};
string StatsLabel[]={"Year","D1","W1","MN","High","Close","Low","Range"};
double P1,P2,P3,P4,Points_Per_Pixel,SizeY, MNPivot, W1Pivot,D1Pivot;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() 
  {
  
  BaseTF=Period();
 
  for(int i=0;i<ArraySize(timeFrame);i++)
  {
  if(timeFrame[i]==BaseTF)nextTF=i+1;
  //BaseTMFR=TimeFrames[i];
  }
   if (BaseTF==43200) nextTF=9;
  //DeleteObjects();
  
  }

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() 
 {
  //ObjectsDeleteAll();
  DeleteObjects();
 }





//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+


int start()

  {
    
   
   //ObjectsDeleteAll();  
   
   double dif=MathAbs(Time[1] - Time[2]);
   datetime dtStart=Time[0]+dif*offset;
   
   int i,j,shift,control;
   j=nextTF;
   
   int Bar_Year_High=iHighest(Symbol(),PERIOD_MN1,MODE_HIGH,Month()-1,0);
   int Bar_Year_Low=iLowest(Symbol(),PERIOD_MN1,MODE_LOW,Month()-1,0);
   
   double YearHigh=iHigh(Symbol(),PERIOD_MN1,Bar_Year_High);
   double YearLow=iLow(Symbol(),PERIOD_MN1,Bar_Year_Low);

   double YearOpen= iOpen(Symbol(),PERIOD_MN1,Month()-1);
   double YearClose= Bid;
   
   //Comment("Month()= "+Month()+" Day of Year= " + DayOfYear()+"  YearOpen(1)= " + YearOpen+ "  YearHigh ("+Bar_Year_High+")= "+ YearHigh+ "  YearLow ("+Bar_Year_Low+") = "+YearLow+"  YearClose(" +DayOfYear()+") = "+YearClose );
   
   while (j<(ArraySize(timeFrame)))
   
   {
   
   shift=j;
   
   if (updirection==0)shift=(ArraySize(timeFrame)-(j-nextTF)- 1);
   
   control=0;
   
   if (StringSubstr(enable_TMF, 2*shift, 1)=="1") 
   
   {
   
   control=1;
      
   if (timeFrame[shift]!=99)
   {
   P1=iOpen(NULL, timeFrame[shift],0);
   P2=iClose(NULL, timeFrame[shift],0);
   P3=iLow(NULL, timeFrame[shift],0);
   P4=iHigh(NULL, timeFrame[shift],0);
   width_OC=widthOC;
   width_HL=widthHL;
   }
   
   else 
   
   {
   P1=YearOpen;
   P2=YearClose;
   P3=YearLow;
   P4=YearHigh;
   width_OC=widthOC*year_width_factor;
   width_HL=widthHL*year_width_factor;
   }
   
   
   datetime T=dtStart+dif*i*step;
   
   string name="Body#"+i;
   
   color clr=DownCandleColor; if (P1 <= P2) clr=UpCandleColor;
   
   objTrendLine(name ,T, P1,T,P2,0,width_OC,clr,STYLE_SOLID,False);
   
    
   name="Tail#"+i;
   
   objTrendLine(name ,T, P3,T,P4,0,width_HL,clr,STYLE_SOLID,False);
   
   ObjectSetText(name,TimeFrames[shift], 5, "Arial", White);
   
   if (timeFrame[shift]==99) ObjectSetText(name,TimeFrames[shift]+"  "+ Year(), 5, "Arial", White);
   
   
   if (pivots &&(TimeFrames[shift]=="D1" || TimeFrames[shift]=="W1"||TimeFrames[shift]=="MN"))
   
   {
   
   D1Pivot= (iHigh(NULL, 1440,1)+ iLow(NULL, 1440,1)+iClose(NULL, 1440,1))/3;
   W1Pivot= (iHigh(NULL, 10080,1)+ iLow(NULL, 10080,1)+iClose(NULL, 10080,1))/3;
   MNPivot= (iHigh(NULL, 43200,1)+ iLow(NULL, 43200,1)+iClose(NULL, 43200,1))/3;
   
   if (TimeFrames[shift]=="D1") objTrendLine("D1Pivot" ,Time[0], D1Pivot,dtStart,D1Pivot,0,2,D1Pivotclr,STYLE_SOLID,False);
   ObjectSetText("D1Pivot","D1 - Pivot", 5, "Arial", White);
   
   
   if (TimeFrames[shift]=="W1") objTrendLine("W1Pivot" ,Time[0], W1Pivot,dtStart,W1Pivot,0,2,W1Pivotclr,STYLE_SOLID,False);
   ObjectSetText("W1Pivot","W1 - Pivot", 5, "Arial", White);
   
   if (TimeFrames[shift]=="MN") objTrendLine("MNPivot" ,Time[0], MNPivot,dtStart,MNPivot,0,2,MNPivotclr,STYLE_SOLID,False);    
   ObjectSetText("MNPivot","MN - Pivot", 5, "Arial", White);
   
   }
   
    
   }
   if (control==1) i++;
   j++;
   
   
   }
   
   if (stats) 
   
   { 
   
   double ActualBid   = Bid;
   double YPos=30;
   string Name;
   double PercChange;
   double Open_Price_D1,Close_Price_D1,High_Price_D1,Low_Price_D1,Open_Price_W1,Open_Price_MN1,Day_Range;
   
   PercChange  = ((ActualBid - YearOpen)/YearOpen)*100;
   Name="Year = " + DoubleToStr((ActualBid-YearOpen)*10000, 0)+" pips => "+DoubleToStr(PercChange, 2) + " %"+"\n"; 
   clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
   
   objLabel("Stat_Year", Name,1, 3, YPos, 0, clr, "Arial", 14);
   
   Open_Price_MN1  = iOpen(NULL, PERIOD_MN1, 0);
   PercChange  = ((ActualBid - Open_Price_MN1)/Open_Price_MN1)*100;
   YPos=YPos+20;
   Name="MN = " + DoubleToStr((ActualBid-Open_Price_MN1)*10000, 0)+" pips => "+DoubleToStr(PercChange, 2) + " %"+"\n"; 
   clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
   
   objLabel("Stat_MN", Name,1, 3, YPos, 0, clr, "Arial", 14);
   
   Open_Price_W1  = iOpen(NULL, PERIOD_W1, 0);
   PercChange  = ((ActualBid - Open_Price_W1)/Open_Price_W1)*100;
   YPos=YPos+20;
   Name="W1 = " + DoubleToStr((ActualBid-Open_Price_W1)*10000, 0)+" pips => "+ DoubleToStr(PercChange, 2) + " %"+"\n";
   clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
   
   objLabel("Stat_W1", Name,1, 3, YPos, 0, clr, "Arial", 14);
   
   
   Open_Price_D1  = iOpen(NULL, PERIOD_D1, 0);
   PercChange  = ((ActualBid - Open_Price_D1)/Open_Price_D1)*100;
   YPos=YPos+20;
   Name="D1 = " + DoubleToStr((ActualBid-Open_Price_D1)*10000, 0)+" pips => "+ DoubleToStr(PercChange, 2) + " %"+"\n";
   clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
   
   objLabel("Stat_D1",Name,1, 3, YPos, 0, clr, "Arial", 14);

   
   High_Price_D1  = iHigh(NULL,PERIOD_D1,0);
   PercChange  = High_Price_D1;
   YPos=YPos+40;
   Name="Day High = " + DoubleToStr(PercChange, 4) +"\n";
   //clr=DownCandleColor; if (ActualBid>=Open_Price_D1) clr=UpCandleColor;
   
   objLabel("Stat_High", Name,1, 3, YPos, 0, clr, "Arial", 14);
   
   
   Close_Price_D1  = ActualBid;
   PercChange  = ActualBid;
   YPos=YPos+20;
   Name="Day Close = " + DoubleToStr(PercChange, 4) +"\n";
   
   objLabel("Stat_Close", Name,1, 3, YPos, 0, clr, "Arial", 14);
   
   Low_Price_D1  = iLow(NULL,PERIOD_D1,0);
   PercChange  = Low_Price_D1;
   YPos=YPos+20;
   Name="Day Low = " + DoubleToStr(PercChange, 4) +"\n";
   
   objLabel("Stat_Low", Name,1, 3, YPos, 0, clr, "Arial", 14);
   
   Day_Range =High_Price_D1-Low_Price_D1;
   PercChange  = Day_Range*10000;
   YPos=YPos+40;
   Name="Day Range = " + DoubleToStr(PercChange, 0) + "  pips" + "\n";
   
   objLabel("Stat_Range", Name,1, 3, YPos, 0, clr, "Arial", 14);
   }
   
   return(0);
 }
//+------------------------------------------------------------------+


// External Code

void objTrendLine(string name, datetime time_1, double price_1, datetime time_2, double price_2, int window=0, int width=1, color col=White, int style=STYLE_SOLID, bool ray=true)
  {
   if(ObjectFind(name)==-1) {
      ObjectCreate(0,name, OBJ_TREND, window, time_1, price_1, time_2, price_2);
   }
   ObjectSet(name, OBJPROP_PRICE1, price_1);
   ObjectSet(name, OBJPROP_PRICE2, price_2);
   ObjectSet(name, OBJPROP_TIME1, time_1);
   ObjectSet(name, OBJPROP_TIME2, time_2);
   ObjectSet(name, OBJPROP_WIDTH, width);
   ObjectSet(name, OBJPROP_COLOR, col);
   ObjectSet(name, OBJPROP_STYLE, style);
   ObjectSet(name, OBJPROP_RAY, ray);
  }
  
  void objHLine(string name, double price, int window=0, color col=White, int style=STYLE_SOLID)
  {
   if(ObjectFind(name)==-1) {
      ObjectCreate(0,name, OBJ_HLINE, window, 0,price);
   }
   ObjectSet(name, OBJPROP_PRICE1, price);
   ObjectSet(name, OBJPROP_COLOR, col);
   ObjectSet(name, OBJPROP_STYLE, style);   
   ObjectSet(name, OBJPROP_WIDTH, 2); 
  }



void objLabel(string name, string tex, int corner, int position_x, int position_y, int window=0, color tex_color=White, string tex_font="Arial", int tex_size=12)
  {  
   
   if(ObjectFind(name)==-1)
   
   {
      ObjectCreate(name, OBJ_LABEL, window, 0, 0);
   }
   ObjectSet(name, OBJPROP_CORNER, corner);
   ObjectSet(name, OBJPROP_XDISTANCE, position_x);
   ObjectSet(name, OBJPROP_YDISTANCE, position_y);
   ObjectSetText(name, tex, tex_size, tex_font, tex_color);
  }

  void DeleteObjects() 
 {
 //ObjectsDeleteAll(EMPTY_VALUE,2);
  ObjectDelete("D1Pivot");
  ObjectDelete("W1Pivot");
  ObjectDelete("MNPivot");
  
 for (int j=0;j<ArraySize(timeFrame);j++)
 
 { 
 ObjectDelete("Body#"+j);
 ObjectDelete("Tail#"+j); 
 }
 
 for (j=0;j<ArraySize(StatsLabel);j++)
 
 { 
 ObjectDelete("Stat_"+StatsLabel[j]);
 }
  
 }

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---