Author: Denis Orlov
TimeLines
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
TimeLines
//+------------------------------------------------------------------+
//|                                                    TimeLines.mq4 |
//|                                                      Denis Orlov |
//|                                    http://denis-or-love.narod.ru |
/*
Àâòîìàòè÷åñêàÿ ðàçëèíîâêà ãðàôèêà ïî âðåìåíè è òàéìåð. 
Ïîäðîáíî:
http://codebase.mql4.com/ru/6093

Automatic marking of the chart by the time and the timer. 
In detail:
http://codebase.mql4.com/6095

***
Âñå ìîè èíäèêàòîðû:
http://codebase.mql4.com/ru/author/denis_orlov
***
ÏÎËÜÇÓÉÒÅÑÜ È ÏÐÎÖÂÅÒÀÉÒÅ!
***
All my indicators:

http://codebase.mql4.com/author/denis_orlov
***
USE AND PROSPER!

*/
//+------------------------------------------------------------------+
#property copyright "Denis Orlov"
#property link      "http://denis-or-love.narod.ru"

#property indicator_chart_window

#define Pr "TimeLines "

extern int period=15;
extern color LineColor=Blue;
extern int LineWidth=1;
extern int LineStyle=2;
extern int History=100;
extern bool TimeAlert=false;
extern bool Back=true;//Ðèñîâàòü êà ôîí

int per;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   /*if(period<=Period()|| period<5)
     Alert(
     "Èíäèêàòîð TimeLines íå áóäåò ðàáîòàòü íà ýòîì ÒÔ"+"\n"+
     "ñî çíà÷åíèåì \"period\"="+period+"\n"+
     "Èçìåíèòå ýòî çíà÷åíèå, ïîæàëóéñòà."+"\n"+
     "Indicator TimeLines will not work on this TF"+"\n"+
     "with the value of the \"period\"="+period+"\n"+
     "Change this value, please.");*/
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Delete_My_Obj(Pr+PeriodToStr(period));
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  if(period<=Period()|| period<5) return(0);
   
   int   Counted_bars=IndicatorCounted();
   
   if(Counted_bars>0)
      {
         if (per == Time[0]) return;
            per = Time[0];
          CheckAndDraw(Time[0]);
          return;
      }
   
   int      i=Bars-Counted_bars-1;           // Èíäåêñ ïåðâîãî íåïîñ÷èòàííîãî  
     if (History>0&&i>History-1)                 // Åñëè ìíîãî áàðîâ òî ..      
       i=History-1; 
       
      while(i>=0)                      // Öèêë ïî íåïîñ÷èòàííûì áàðàì     
      {
      CheckAndDraw(Time[i]);  
       
      i--;
      }
         
//----
   return(0);
  }
//+------------------------------------------------------------------+
void CheckAndDraw(datetime t)
{   
    int TM=TimeMinute(t), TH=TimeHour(t) ;
    bool draw=false;
    
      if(period==5)
          {  
            if( TM==0 || TM==5 ||TM==10 ||TM==15 ||TM==20||TM==25 ||TM==30 
            ||TM==35 ||TM==40 ||TM==45||TM==50||TM==55) 
            draw=true;
          }  
      if(period==15)
          {
          if( TM==0 || TM==15 ||TM==30 ||TM==45) 
            draw=true;
          }      
      if(period==30)
          {
          if( TM==0 || TM==30) 
            draw=true;
          }      
      if(period==60)
          {
           if( TM==0) 
            draw=true;
          }      
      if(period==240)
          {
            if(TM==0 && (TH==0 ||TH==4||TH==8||TH==12||TH==16||TH==20||TH==24) ) 
            draw=true;
          }      
      if(period==1440)
          {
            if(TH==0 && TM==0) 
            draw=true;
          }       
      if(period==10080)
          {
            if(TH==0 && TM==0 && TimeDayOfWeek(t)==1 ) 
            draw=true;
          } 
      if(period==43200)
          {
            if(TH==0 && TM==0 && TimeDay(t)==1 ) 
            draw=true;
          }      
              
      string LName=Pr+PeriodToStr(period)+" "+TimeToStr(t,TIME_DATE|TIME_MINUTES);
      if(draw && ObjectFind(LName)<0)
         {   
                  ObjectCreate( LName,OBJ_VLINE,0,t,0);
                  ObjectSet( LName, OBJPROP_COLOR , LineColor);
                  ObjectSet( LName, OBJPROP_WIDTH , LineWidth);
                  if(Back==true)ObjectSet( LName, OBJPROP_BACK, Back);
                  if(LineWidth<2)
                  ObjectSet( LName, OBJPROP_STYLE , LineStyle);
                 // ObjectSetText( LName, DoubleToStr(TM,0));
                 
                 
         }
     string AlStr=Symbol()+" "+PeriodToStr(Period())+" : "+LName;
       
     int nt=t+period*60; 
      LName=Pr+PeriodToStr(period)+" "+TimeToStr(nt,TIME_DATE|TIME_MINUTES);
      if(draw && ObjectFind(LName)<0)
         {   
            if(TimeAlert && Time[0]==t) Alert(AlStr);
                 
                  ObjectCreate( LName,OBJ_VLINE,0,nt,0);
                  ObjectSet( LName, OBJPROP_COLOR , LineColor);
                  ObjectSet( LName, OBJPROP_WIDTH , LineWidth);
                  if(Back==true)ObjectSet( LName, OBJPROP_BACK, Back);
                  if(LineWidth<2)
                  ObjectSet( LName, OBJPROP_STYLE , LineStyle);
                 // ObjectSetText( LName, DoubleToStr(TM,0));
         }   
}
//----------------------
void Delete_My_Obj(string Prefix)
   {//Alert(ObjectsTotal());
   for(int k=ObjectsTotal()-1; k>=0; k--)  // Ïî êîëè÷åñòâó âñåõ îáúåêòîâ 
     {
      string Obj_Name=ObjectName(k);   // Çàïðàøèâàåì èìÿ îáúåêòà
      string Head=StringSubstr(Obj_Name,0,StringLen(Prefix));// Èçâëåêàåì ïåðâûå ñèì

      if (Head==Prefix)// Íàéäåí îáúåêò, ..
         {
         ObjectDelete(Obj_Name);
         //Alert(Head+";"+Prefix);
         }                
        
     }
   }
//-------------------------------
string PeriodToStr(int Per)
   {
      switch(Per)                 // Ðàñ÷¸ò  äëÿ..     
      {                              // .. ðàçëè÷íûõ ÒÔ     
      case     1: return("M1"); break;// Òàéìôðåéì Ì1      
      case     5: return("M5"); break;// Òàéìôðåéì Ì5      
      case    15: return("M15"); break;// Òàéìôðåéì Ì15      
      case    30: return("M30"); break;// Òàéìôðåéì Ì30      
      case    60: return("H1"); break;// Òàéìôðåéì H1      
      case   240: return("H4"); break;// Òàéìôðåéì H4      
      case  1440: return("D1"); break;// Òàéìôðåéì D1      
      case 10080: return("W1"); break;// Òàéìôðåéì W1      
      case 43200: return("ÌN"); break;// Òàéìôðåéì ÌN     
      }
   }

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 ---