Price Data Components
0
Views
0
Downloads
0
Favorites
b-clock
//+------------------------------------------------------------------+
//| b-clock.mq5 |
//| Copyright 2013, Totom Sukopratomo |
//| https://login.mql5.com/en/users/tomsuk001 |
//| totom.sukopratomo@yahoo.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Convert from : |
//+-------- +
//| b-clock.mq4 |
//| Core time code by Nick Bilak |
//| http://metatrader.50webs.com/ beluck[at]gmail.com |
//| modified by adoleh2000 and dwt5 |
//+----- +
//| Original MQL4 code found at: http://codebase.mql4.com/590 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Totom Sukopratomo"
#property link "https://login.mql5.com/en/users/tomsuk001"
#property version "2.00"
#property indicator_chart_window
//--- input parameters
input bool ShowComment=true;
input color FontColor=clrDarkGray;
input int FontSize=10;
input string FontName="Tahoma";
input int Offset=5;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
ObjectDelete(0,"time");
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
MqlRates rates[];
MqlTick tick;
SymbolInfoTick(Symbol(),tick);
if(CopyRates(Symbol(),PERIOD_CURRENT,0,1,rates)<1)return(0);
double i;
long m,s;
m=rates[0].time+GetMinute()*60-tick.time;
i=m/60.0;
s=m%60;
m=(m-m%60)/60;
if(ShowComment)
Comment(IntegerToString(m,0,' ')+" minutes "+IntegerToString(s,0,' ')+" seconds left to bar end");
string text=" <"+IntegerToString(m,0,' ')+":"+IntegerToString(s,0,' ');
if(ObjectFind(0,"time")<1)
{
ObjectCreate(0,"time",OBJ_TEXT,0,rates[0].time,tick.bid+Point()*Offset);
ObjectSetString(0,"time",OBJPROP_TEXT,text);
ObjectSetInteger(0,"time",OBJPROP_COLOR,FontColor);
ObjectSetInteger(0,"time",OBJPROP_FONTSIZE,FontSize);
ObjectSetString(0,"time",OBJPROP_FONT,FontName);
}
else
{
ObjectSetString(0,"time",OBJPROP_TEXT,text);
ObjectMove(0,"time",0,rates[0].time,tick.bid+Point()*Offset);
}
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
int GetMinute()
{
switch(Period())
{
case PERIOD_M1: return(1);
case PERIOD_M2: return(2);
case PERIOD_M3: return(3);
case PERIOD_M4: return(4);
case PERIOD_M5: return(5);
case PERIOD_M6: return(6);
case PERIOD_M10: return(10);
case PERIOD_M12: return(12);
case PERIOD_M15: return(15);
case PERIOD_M20: return(20);
case PERIOD_M30: return(30);
case PERIOD_H1: return(60);
case PERIOD_H2: return(120);
case PERIOD_H3: return(180);
case PERIOD_H4: return(240);
case PERIOD_H6: return(360);
case PERIOD_H8: return(480);
case PERIOD_H12: return(720);
case PERIOD_D1: return(1440);
case PERIOD_W1: return(10080);
case PERIOD_MN1: return(43200);
}
return(1);
}
//+------------------------------------------------------------------+
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
---