//+------------------------------------------------------------------+
//| info_rectangle_drawing.mq4 |
//| Copyright 2015, eevviill |
//| http://alievtm.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "eevviill"
#property link "http://alievtm.blogspot.com"
#property version "2.01"
#property strict
#property indicator_chart_window
extern ENUM_BASE_CORNER info_corner=CORNER_RIGHT_LOWER;
extern string pus1 = "//////////////////////////////////////////////////";
extern string re_s = "Rectangle settings";
extern color rectan_color=clrNavy;
extern int rectan_X = 200;
extern int rectan_Y = 200;
extern ENUM_LINE_STYLE rectan_bord_style=STYLE_SOLID;
extern color rectan_bord_color=clrYellow;
extern int rectan_bord_width=1;
extern string pus2= "//////////////////////////////////////////////////";
extern string t_s = "Text settings";
extern string font_name = "Rockwell";
extern int shift_wordsX = 7;
extern int shift_wordsY = 13;
extern int step_wordsY=25;
ENUM_ANCHOR_POINT text_anchor = ANCHOR_LEFT;
ENUM_ANCHOR_POINT rect_anchor = ANCHOR_LEFT;
extern string pus3 = "//////////////////////////////////////////////////";
extern string wo_s = "Data settings";
extern string SY="//SYMBOL settings//";
extern bool show_symbol_period=true;
extern color symbol_color=clrWhite;
extern int symbol_font_size=14;
extern string SP="//SPREAD settings//";
extern bool show_spread=true;
extern color spread_color=clrOrange;
extern int spread_font_size=12;
extern string HL="//HIGH/LOW settings//";
extern bool show_highLow=true;
extern color highLow_color=clrLightBlue;
extern int highLow_font_size=12;
string identif="infor";
int step_wordsY2;
int shift_wordsX2;
int shift_words_Y2;
int dig4_koef=10;
int max_text_SizeX;
int max_text_2;
bool X_size_ok;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int OnInit()
{
//delete objects
string name_delete;
for(int i=ObjectsTotal()-1;i>=0;i--)
{
name_delete=ObjectName(i);
if(StringFind(name_delete,identif)!=-1) ObjectDelete(name_delete);
}
//create rectangle
create_rectangle_f();
//corner change step words
step_wordsY2=step_wordsY;
shift_wordsX2=shift_wordsX;
shift_words_Y2=shift_wordsY;
switch(info_corner)
{
case CORNER_RIGHT_LOWER: break;
case CORNER_RIGHT_UPPER: {step_wordsY2=-step_wordsY;shift_words_Y2=-shift_wordsY;}
break;
case CORNER_LEFT_LOWER: {shift_wordsX2=-shift_wordsX;}
break;
case CORNER_LEFT_UPPER: {step_wordsY2=-step_wordsY;shift_wordsX2=-shift_wordsX;shift_words_Y2=-shift_wordsY;}
break;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
string name_delete;
for(int i=ObjectsTotal()-1;i>=0;i--)
{
name_delete=ObjectName(i);
if(StringFind(name_delete,identif)!=-1) ObjectDelete(name_delete);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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 &tick_volume[],const long &volume[],const int &spread[])
{
//for X size get
if(IsTradeAllowed(Symbol(),TimeCurrent()))
{
EventKillTimer();
All();
}
else
EventSetTimer(1);
return(rates_total);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTimer()
{
//all
All();
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void create_rectangle_f()
{
string name="rectang1"+identif;
if(ObjectFind(name)==-1)
{
ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,rectan_X);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,rectan_Y);
ObjectSetInteger(0,name,OBJPROP_ANCHOR,rect_anchor);
ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
ObjectSetInteger(0,name,OBJPROP_CORNER,info_corner);
ObjectSetInteger(0,name,OBJPROP_COLOR,rectan_bord_color);
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,rectan_color);
ObjectSetInteger(0,name,OBJPROP_STYLE,rectan_bord_style);
ObjectSetInteger(0,name,OBJPROP_WIDTH,rectan_bord_width);
ObjectSetInteger(0,name,OBJPROP_BACK,false);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void X_Y_rectangle_set(int X,int Y)
{
string name="rectang1"+identif;
ObjectSetInteger(0,name,OBJPROP_XSIZE,X);
ObjectSetInteger(0,name,OBJPROP_YSIZE,Y);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void obj_create_f(string name,string object,int Y_distance,color Color,int size)
{
if(ObjectFind(name)==-1)
{
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
ObjectSetInteger(0,name,OBJPROP_CORNER,info_corner);
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,size);
ObjectSetString(0,name,OBJPROP_FONT,font_name);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
ObjectSetInteger(0,name,OBJPROP_ANCHOR,text_anchor);
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,rectan_X-shift_wordsX2);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,Y_distance);
ObjectSetInteger(0,name,OBJPROP_COLOR,Color);
}
ObjectSetString(0,name,OBJPROP_TEXT,object);
//text size
int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE));
if(text_sizeX==0) X_size_ok=false;
if(text_sizeX>max_text_SizeX) max_text_SizeX=text_sizeX;
if(text_sizeX>max_text_2) max_text_2=text_sizeX;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void All()
{
int Y_step=rectan_Y-shift_words_Y2;
X_size_ok=true;
max_text_2=0;
///1
if(show_symbol_period) {obj_create_f(identif+Symbol(),Symbol(),Y_step,symbol_color,symbol_font_size);Y_step-=step_wordsY2;}
///2
if(show_spread) {obj_create_f(identif+"Spread: ","Spread: "+DoubleToString(MarketInfo(Symbol(),MODE_SPREAD)/dig4_koef,1),Y_step,spread_color,spread_font_size);Y_step-=step_wordsY2;}
///3
if(show_highLow) {obj_create_f(identif+"HiToLo: ","HiToLo: "+DoubleToString((iHigh(Symbol(),PERIOD_D1,0)-iLow(Symbol(),PERIOD_D1,0))/Point/dig4_koef,0),Y_step,highLow_color,highLow_font_size);Y_step-=step_wordsY2;}
//rectangle X Y size
Y_step+=step_wordsY2;
if(X_size_ok && max_text_2!=max_text_SizeX) max_text_SizeX=max_text_2;
X_Y_rectangle_set(max_text_SizeX+shift_wordsX*3,MathAbs(rectan_Y-Y_step)+int(shift_wordsY*1.5));
}
//+------------------------------------------------------------------+
Comments