Price Data Components
0
Views
0
Downloads
0
Favorites
CandleCountdown
//+------------------------------------------------------------------+
//| CandleCountdown.mq5 |
//| Zaven Vardanyan |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Zaven Vardanyan"
#property link "http://vzvtrading.blogspot.com"
#property description "Candle Close Time Countdown"
#property indicator_plots 0
#property indicator_chart_window
enum crnr {LeftUp,LeftDown,RightUp,RightDown};
input crnr Corner=RightDown;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
CandleObject();
//---
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectDelete(0,"CandleTimeCountdown");
}
//+------------------------------------------------------------------+
//| 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[])
{
//---
int total,count;
int s,m,h,d;
string countdown;
count = Bars(Symbol(),PERIOD_CURRENT);
total = (int)(TimeCurrent() - time[count-1]);
total = PeriodSeconds() - total;
s = total % 60;
m = total / 60 % 60;
h = total / 3600 % 24;
d = total / 86400 % 7;
if(d!=0)
{
countdown=IntegerToString(d)+" d "+IntegerToString(h)+" h "+IntegerToString(m)+" m "+IntegerToString(s)+" s";
}
else
{
if(h!=0)
{
countdown=IntegerToString(h)+" h "+IntegerToString(m)+" m "+IntegerToString(s)+" s";
}
else
{
countdown=IntegerToString(m)+" m "+IntegerToString(s)+" s";
}
}
ObjectSetString(0,"CandleTimeCountdown",OBJPROP_TEXT,countdown);
ChartRedraw(0);
//--- return value
return(rates_total);
}
//+------------------------------------------------------------------+
//| User Functions |
//+------------------------------------------------------------------+
void CandleObject()
{
int x,y;
x = 0;
y = 0;
switch(GetCorner(Corner))
{
case CORNER_LEFT_LOWER:
x = 20;
y = 40;
break;
case CORNER_LEFT_UPPER:
x = 20;
y = 20;
break;
case CORNER_RIGHT_UPPER:
x = 140;
y = 20;
break;
case CORNER_RIGHT_LOWER:
x = 140;
y = 40;
break;
}
ObjectCreate(0,"CandleTimeCountdown",OBJ_EDIT,0,0,0);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_READONLY,true);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_CORNER,GetCorner(Corner));
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_FONTSIZE,9);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_ALIGN,ALIGN_CENTER);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_YDISTANCE,y);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_XSIZE,120);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_YSIZE,20);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_BGCOLOR,clrWhite);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_COLOR,clrRed);
ObjectSetInteger(0,"CandleTimeCountdown",OBJPROP_BORDER_COLOR,clrRed);
ObjectSetString(0,"CandleTimeCountdown",OBJPROP_FONT,"Tahoma");
}
int GetCorner(crnr t)
{
switch(t)
{
case LeftUp:
return(CORNER_LEFT_UPPER);
break;
case LeftDown:
return(CORNER_LEFT_LOWER);
break;
case RightUp:
return(CORNER_RIGHT_UPPER);
break;
case RightDown:
return(CORNER_RIGHT_LOWER);
break;
}
return(CORNER_RIGHT_LOWER);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---