CandleCountdown

Author: Zaven Vardanyan
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---