4kk4.MQL5/Indicators/Clock.mq5
clarissya 2394964283 Scripts
2026-04-27 07:14:01 +07:00

175 lines
15 KiB
MQL5

//+------------------------------------------------------------------+
//| Clock.mq5 |
//| Copyright © 2007, 4kk4 |
//| |
//+------------------------------------------------------------------+
//---- Copyright
#property copyright "Copyright © 2007, 4kk4"
//---- link to the website of the author
#property link ""
//---- Indicator version number
#property version "1.2"
#property indicator_chart_window
#property indicator_plots 0
enum ML_WINPOSITION
{
ML_WINPOSITION_UPPER_LEFT=0, //Upper Left of the chart
ML_WINPOSITION_UPPER_CENTER=1, //Upper Center of the chart
ML_WINPOSITION_UPPER_RIGHT=2, //Upper Right of the chart
ML_WINPOSITION_LOWER_LEFT=3, //Lower Left of the chart
ML_WINPOSITION_LOWER_CENTER=4, //Lower Center of the chart
ML_WINPOSITION_LOWER_RIGHT=5 //Lower Right of the chart
};
enum ML_FONTTYPE
{
ML_FONTTYPE_ARIAL=0, //Arial
ML_FONTTYPE_ARIALBLACK=1, //Arial Black
ML_FONTTYPE_VERDANA=2, //Verdana
ML_FONTTYPE_TAHOMA=3, //Tahoma
ML_FONTTYPE_COURIERNEW=4, //Courier New
ML_FONTTYPE_LUCIDACONSOLE=5 //Lucida Console
};
//+------------------------------------------------------------------+
// Inputs from User Interface |
//+------------------------------------------------------------------+
input color inpTextColor = clrWhite; // clock Text color
input ML_FONTTYPE inpFontType = 2; // Font Type
input int inpFontSize = 16; // clock Font size
input ML_WINPOSITION inpWindowPosition=ML_WINPOSITION_UPPER_RIGHT; // clock position
input int inpXOffSet = 0; // Reposition Clock Offset on X axis (+/-)
input int inpYOffSet = 0; // Reposition Clock Offset on Y axis (+/-)
//+------------------------------------------------------------------+
//| Global Variables |
//+------------------------------------------------------------------+
string clockName = "MLabs_ServerClock"; // Namespacing the clock...
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
// creates the Clock...
ObjectCreate(0, clockName, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, clockName, OBJPROP_COLOR, inpTextColor);
ObjectSetInteger(0, clockName, OBJPROP_FONTSIZE, inpFontSize);
ObjectSetInteger(0, clockName, OBJPROP_BACK,true);
if(inpFontType==ML_FONTTYPE_ARIAL)
{
ObjectSetString(0, clockName, OBJPROP_FONT, "Arial");
}
if(inpFontType==ML_FONTTYPE_ARIALBLACK)
{
ObjectSetString(0, clockName, OBJPROP_FONT, "Arial Black");
}
if(inpFontType==ML_FONTTYPE_VERDANA)
{
ObjectSetString(0, clockName, OBJPROP_FONT, "Verdana");
}
if(inpFontType==ML_FONTTYPE_TAHOMA)
{
ObjectSetString(0, clockName, OBJPROP_FONT, "Tahoma");
}
if(inpFontType==ML_FONTTYPE_COURIERNEW)
{
ObjectSetString(0, clockName, OBJPROP_FONT, "Courier New");
}
if(inpFontType==ML_FONTTYPE_LUCIDACONSOLE)
{
ObjectSetString(0, clockName, OBJPROP_FONT, "Lucida Console");
}
if(inpWindowPosition==ML_WINPOSITION_UPPER_LEFT)
{
ObjectSetInteger(0, clockName, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, clockName, OBJPROP_ANCHOR, ANCHOR_LEFT_UPPER);
ObjectSetInteger(0, clockName, OBJPROP_XDISTANCE, inpXOffSet);
ObjectSetInteger(0, clockName, OBJPROP_YDISTANCE, inpYOffSet);
}
else
if(inpWindowPosition==ML_WINPOSITION_UPPER_RIGHT)
{
ObjectSetInteger(0, clockName, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, clockName, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
ObjectSetInteger(0, clockName, OBJPROP_XDISTANCE, inpXOffSet);
ObjectSetInteger(0, clockName, OBJPROP_YDISTANCE, inpYOffSet);
}
else
if(inpWindowPosition==ML_WINPOSITION_UPPER_CENTER)
{
ObjectSetInteger(0, clockName, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, clockName, OBJPROP_ANCHOR, ANCHOR_LEFT_UPPER);
ObjectSetInteger(0, clockName, OBJPROP_XDISTANCE, inpXOffSet+ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0)/2);
ObjectSetInteger(0, clockName, OBJPROP_YDISTANCE, inpYOffSet);
}
else
if(inpWindowPosition==ML_WINPOSITION_LOWER_LEFT)
{
ObjectSetInteger(0, clockName, OBJPROP_CORNER, CORNER_LEFT_LOWER);
ObjectSetInteger(0, clockName, OBJPROP_ANCHOR, ANCHOR_LEFT_LOWER);
ObjectSetInteger(0, clockName, OBJPROP_XDISTANCE, inpXOffSet);
ObjectSetInteger(0, clockName, OBJPROP_YDISTANCE, inpYOffSet);
}
else
if(inpWindowPosition==ML_WINPOSITION_LOWER_RIGHT)
{
ObjectSetInteger(0, clockName, OBJPROP_CORNER, CORNER_RIGHT_LOWER);
ObjectSetInteger(0, clockName, OBJPROP_ANCHOR, ANCHOR_RIGHT_LOWER);
ObjectSetInteger(0, clockName, OBJPROP_XDISTANCE, inpXOffSet);
ObjectSetInteger(0, clockName, OBJPROP_YDISTANCE, inpYOffSet);
}
else
if(inpWindowPosition==ML_WINPOSITION_LOWER_CENTER)
{
ObjectSetInteger(0, clockName, OBJPROP_CORNER, CORNER_LEFT_LOWER);
ObjectSetInteger(0, clockName, OBJPROP_ANCHOR, ANCHOR_LEFT_LOWER);
ObjectSetInteger(0, clockName, OBJPROP_XDISTANCE, inpXOffSet+ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0)/2);
ObjectSetInteger(0, clockName, OBJPROP_YDISTANCE, inpYOffSet);
}
ChartRedraw();
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectDelete(0, clockName);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, // price[] array size
const int prev_calculated, // number of handled bars at the previous call
const int begin, // index number in the price[] array meaningful data starts from
const double& price[] // array of values for calculation
)
{
// updates the time... Just that...
ObjectSetString(0, clockName, OBJPROP_TEXT, TimeToString(TimeLocal(), TIME_SECONDS));
return(rates_total);
}
//+------------------------------------------------------------------+