//+------------------------------------------------------------------+
//| Fract1.mq4 |
//| Copyright 2015, Kabul |
//| panji_xx@yahoo.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Kabul"
#property link "panji_xx@yahoo.com"
#property version "1.00"
#property strict
#property indicator_chart_window
input int X_distance=770;
input int Y_distance=25;
int X_dist,Y_dist;
int kstrok,kdown;
double M1[5],M5[3],M15[2],M30[2],M60[4],M240[6],M1440[5];
double M1max,M1min,M1ave,M5max,M5min,M5ave,M15max,M15min,M15ave,M30max,M30min,M30ave;
double M60max,M60min,M60ave,M240max,M240min,M240ave,M1440max,M1440min,M1440ave;
color wrn;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
EventSetTimer(1);
X_dist=X_distance;
Y_dist=Y_distance;
return(INIT_SUCCEEDED);
}
int deinit()
{
for(int i=1;i<44;i++)
{
ObjectDelete(StringConcatenate("Text"+IntegerToString(i)));
}
for(int i=0;i<4;i++)
{
ObjectDelete(StringConcatenate("M1"+IntegerToString(i)));
ObjectDelete(StringConcatenate("M5"+IntegerToString(i)));
ObjectDelete(StringConcatenate("M15"+IntegerToString(i)));
ObjectDelete(StringConcatenate("M30"+IntegerToString(i)));
ObjectDelete(StringConcatenate("M60"+IntegerToString(i)));
ObjectDelete(StringConcatenate("M240"+IntegerToString(i)));
ObjectDelete(StringConcatenate("M1440"+IntegerToString(i)));
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom 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 &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
void OnChartEvent(const int id, // Event identifier
const long& lparam, // Event parameter of long type
const double& dparam, // Event parameter of double type
const string& sparam) // Event parameter of string type
{
if (id==CHARTEVENT_KEYDOWN)
{
kstrok=lparam;kdown=StringToInteger(sparam);
}
if ((id==CHARTEVENT_CLICK)&&(kstrok==77)&&(kdown==16434))
{
X_dist=lparam;Y_dist=dparam;
kstrok=0;kdown=0;
}
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
SetText("Text1","High Daily : ",X_dist,Y_dist,clrWhite,12,"Arial Black");
SetText("Text2","Low Daily : ",X_dist,Y_dist+20,clrWhite,12,"Arial Black");
SetText("Text4",DoubleToString(iHigh(NULL,1440,0),Digits),X_dist+105,Y_dist,clrWhite,12,"Arial Black");
SetText("Text5",DoubleToString(iLow(NULL,1440,0),Digits),X_dist+105,Y_dist+20,clrWhite,12,"Arial Black");
HiLoCnd();
SetText("Text7","Max",X_dist,Y_dist+70,clrWhite,8,"Arial");
SetText("Text8","Min",X_dist,Y_dist+85,clrWhite,8,"Arial");
SetText("Text9","Ave",X_dist,Y_dist+100,clrWhite,8,"Arial");
SetText("Text40","3",X_dist,Y_dist+130,clrWhite,8,"Arial");
SetText("Text41","2",X_dist,Y_dist+140,clrWhite,8,"Arial");
SetText("Text42","1",X_dist,Y_dist+150,clrWhite,8,"Arial");
SetText("Text43","0",X_dist,Y_dist+160,clrWhite,8,"Arial");
SetText("Text10",DoubleToString(M1max,0),X_dist+25,Y_dist+70,clrWhite,8,"Arial");
SetText("Text11",DoubleToString(M1min,0),X_dist+25,Y_dist+85,clrWhite,8,"Arial");
SetText("Text12",DoubleToString(M1ave,0),X_dist+25,Y_dist+100,clrWhite,8,"Arial");
SetText("Text13",DoubleToString(M5max,0),X_dist+45,Y_dist+70,clrWhite,8,"Arial");
SetText("Text14",DoubleToString(M5min,0),X_dist+45,Y_dist+85,clrWhite,8,"Arial");
SetText("Text15",DoubleToString(M5ave,0),X_dist+45,Y_dist+100,clrWhite,8,"Arial");
SetText("Text16",DoubleToString(M15max,0),X_dist+65,Y_dist+70,clrWhite,8,"Arial");
SetText("Text17",DoubleToString(M15min,0),X_dist+65,Y_dist+85,clrWhite,8,"Arial");
SetText("Text18",DoubleToString(M15ave,0),X_dist+65,Y_dist+100,clrWhite,8,"Arial");
SetText("Text19",DoubleToString(M30max,0),X_dist+87,Y_dist+70,clrWhite,8,"Arial");
SetText("Text20",DoubleToString(M30min,0),X_dist+87,Y_dist+85,clrWhite,8,"Arial");
SetText("Text21",DoubleToString(M30ave,0),X_dist+87,Y_dist+100,clrWhite,8,"Arial");
SetText("Text22",DoubleToString(M60max,0),X_dist+109,Y_dist+70,clrWhite,8,"Arial");
SetText("Text23",DoubleToString(M60min,0),X_dist+109,Y_dist+85,clrWhite,8,"Arial");
SetText("Text24",DoubleToString(M60ave,0),X_dist+109,Y_dist+100,clrWhite,8,"Arial");
SetText("Text25",DoubleToString(M240max,0),X_dist+131,Y_dist+70,clrWhite,8,"Arial");
SetText("Text26",DoubleToString(M240min,0),X_dist+131,Y_dist+85,clrWhite,8,"Arial");
SetText("Text27",DoubleToString(M240ave,0),X_dist+131,Y_dist+100,clrWhite,8,"Arial");
SetText("Text28",DoubleToString(M1440max,0),X_dist+153,Y_dist+70,clrWhite,8,"Arial");
SetText("Text29",DoubleToString(M1440min,0),X_dist+153,Y_dist+85,clrWhite,8,"Arial");
SetText("Text30",DoubleToString(M1440ave,0),X_dist+153,Y_dist+100,clrWhite,8,"Arial");
SetText("Text31","M1 M5 M15 M30 1H 4H 1D",X_dist+25,Y_dist+115,clrWhite,8,"Arial");
MakePanel(X_dist+25,Y_dist+160);
SetText("Text32","Now",X_dist,Y_dist+180,clrWhite,8,"Arial");
warna((iHigh(NULL,1,0)-iLow(NULL,1,0))/Point,M1ave,M1max);
SetText("Text33",DoubleToString((iHigh(NULL,1,0)-iLow(NULL,1,0))/Point,0),X_dist+25,Y_dist+180,wrn,8,"Arial");
warna((iHigh(NULL,5,0)-iLow(NULL,5,0))/Point,M5ave,M5max);
SetText("Text34",DoubleToString((iHigh(NULL,5,0)-iLow(NULL,5,0))/Point,0),X_dist+45,Y_dist+180,wrn,8,"Arial");
warna((iHigh(NULL,15,0)-iLow(NULL,15,0))/Point,M15ave,M15max);
SetText("Text35",DoubleToString((iHigh(NULL,15,0)-iLow(NULL,15,0))/Point,0),X_dist+65,Y_dist+180,wrn,8,"Arial");
warna((iHigh(NULL,30,0)-iLow(NULL,30,0))/Point,M30ave,M30max);
SetText("Text36",DoubleToString((iHigh(NULL,30,0)-iLow(NULL,30,0))/Point,0),X_dist+87,Y_dist+180,wrn,8,"Arial");
warna((iHigh(NULL,60,0)-iLow(NULL,60,0))/Point,M60ave,M60max);
SetText("Text37",DoubleToString((iHigh(NULL,60,0)-iLow(NULL,60,0))/Point,0),X_dist+109,Y_dist+180,wrn,8,"Arial");
warna((iHigh(NULL,240,0)-iLow(NULL,240,0))/Point,M240ave,M240max);
SetText("Text38",DoubleToString((iHigh(NULL,240,0)-iLow(NULL,240,0))/Point,0),X_dist+131,Y_dist+180,wrn,8,"Arial");
warna((iHigh(NULL,1440,0)-iLow(NULL,1440,0))/Point,M1440ave,M1440max);
SetText("Text39",DoubleToString((iHigh(NULL,1440,0)-iLow(NULL,1440,0))/Point,0),X_dist+153,Y_dist+180,wrn,8,"Arial");
}
//+------------------------------------------------------------------+
void SetText(string name,string text,int x,int y,color colour,int fontsize=12, string fontname="Arial")
{
ObjectDelete(name);
if(ObjectCreate(0,name,OBJ_LABEL,0,0,0))
{
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,name,OBJPROP_COLOR,colour);
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);
ObjectSetString(0,name,OBJPROP_FONT,fontname);
ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
}
ObjectSetString(0,name,OBJPROP_TEXT,text);
}
void HiLoCnd()
{
int hit;
M1ave=0;M5ave=0;M15ave=0;M30ave=0;M60ave=0;M240ave=0;M1440ave=0;
M1max=0;M5max=0;M15max=0;M30max=0;M60max=0;M240max=0;M1440max=0;
M1min=10000;M5min=10000;M15min=10000;M30min=10000;M60min=10000;M240min=10000;M1440min=10000;
for (hit=1;hit<6;hit++)
{
M1[hit-1]=(iHigh(NULL,1,hit)-iLow(NULL,1,hit))/Point;
M1ave=M1ave+M1[hit-1];
if(M1max<M1[hit-1]) {M1max=M1[hit-1];}
if(M1min>M1[hit-1]) {M1min=M1[hit-1];}
}
M1ave=M1ave/5;
for (hit=1;hit<4;hit++)
{
M5[hit-1]=(iHigh(NULL,5,hit)-iLow(NULL,5,hit))/Point;
M5ave=M5ave+M5[hit-1];
if(M5max<M5[hit-1]) {M5max=M5[hit-1];}
if(M5min>M5[hit-1]) {M5min=M5[hit-1];}
}
M5ave=M5ave/3;
for (hit=1;hit<3;hit++)
{
M15[hit-1]=(iHigh(NULL,15,hit)-iLow(NULL,15,hit))/Point;
M15ave=M15ave+M15[hit-1];
if(M15max<M15[hit-1]) {M15max=M15[hit-1];}
if(M15min>M15[hit-1]) {M15min=M15[hit-1];}
}
M15ave=M15ave/2;
for (hit=1;hit<3;hit++)
{
M30[hit-1]=(iHigh(NULL,30,hit)-iLow(NULL,30,hit))/Point;
M30ave=M30ave+M30[hit-1];
if(M30max<M30[hit-1]) {M30max=M30[hit-1];}
if(M30min>M30[hit-1]) {M30min=M30[hit-1];}
}
M30ave=M30ave/2;
for (hit=1;hit<5;hit++)
{
M60[hit-1]=(iHigh(NULL,60,hit)-iLow(NULL,60,hit))/Point;
M60ave=M60ave+M60[hit-1];
if(M60max<M60[hit-1]) {M60max=M60[hit-1];}
if(M60min>M60[hit-1]) {M60min=M60[hit-1];}
}
M60ave=M60ave/4;
for (hit=1;hit<7;hit++)
{
M240[hit-1]=(iHigh(NULL,240,hit)-iLow(NULL,240,hit))/Point;
M240ave=M240ave+M240[hit-1];
if(M240max<M240[hit-1]) {M240max=M240[hit-1];}
if(M240min>M240[hit-1]) {M240min=M240[hit-1];}
}
M240ave=M240ave/6;
for (hit=1;hit<6;hit++)
{
M1440[hit-1]=(iHigh(NULL,1440,hit)-iLow(NULL,1440,hit))/Point;
M1440ave=M1440ave+M1440[hit-1];
if(M1440max<M1440[hit-1]) {M1440max=M1440[hit-1];}
if(M1440min>M1440[hit-1]) {M1440min=M1440[hit-1];}
}
M1440ave=M1440ave/5;
}
void MakePanel(int posx, int posy)
{
int x,y,i;
int tf[7];
tf[0]=1;tf[1]=5;tf[2]=15;tf[3]=30;tf[4]=60;tf[5]=240;tf[6]=1440;
y=0;x=20;
for (y=0;y<7;y++)
{
for (i=0;i<4;i++)
{
if (y>3) {x=22;}
if (y==3) {x=21;}
ObjectDelete("M"+IntegerToString(tf[y])+IntegerToString(i));
if (iOpen(NULL,tf[y],i)<iClose(NULL,tf[y],i))
{
SetPanel("M"+IntegerToString(tf[y])+IntegerToString(i),0,posx+(y*x),posy-(i*10),10,10,clrLime,clrBlack,1);
}
if (iOpen(NULL,tf[y],i)>=iClose(NULL,tf[y],i))
{
SetPanel("M"+IntegerToString(tf[y])+IntegerToString(i),0,posx+(y*x),posy-(i*10),10,10,clrRed,clrBlack,1);
}
}
}
}
void SetPanel(string name,int sub_window,int x,int y,int width,int height,color bg_color,color border_clr,int border_width)
{
if(ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
{
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,name,OBJPROP_XSIZE,width);
ObjectSetInteger(0,name,OBJPROP_YSIZE,height);
ObjectSetInteger(0,name,OBJPROP_COLOR,border_clr);
ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
ObjectSetInteger(0,name,OBJPROP_WIDTH,border_width);
ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
ObjectSetInteger(0,name,OBJPROP_BACK,false);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0);
ObjectSetInteger(0,name,OBJPROP_SELECTED,0);
ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
ObjectSetInteger(0,name,OBJPROP_ZORDER,0);
}
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,bg_color);
}
void warna(double inow, double ave, double imax)
{
wrn=clrWhite;
if (inow>=ave) {wrn=clrLime;}
if (inow>=imax) {wrn=clrRed;}
}
Comments