MarketHoursShade_v01_v2

Author: Derk Wehler
MarketHoursShade_v01_v2
0 Views
0 Downloads
0 Favorites
MarketHoursShade_v01_v2
//+-------------------------------------------------------------------------------+
//|                                                MarketHoursShade_v01.mq4       |
//|                                                      Originally by KimIV      |
//|                                                     http://www.kimiv.ru       |
//|                                                                               |
//|                                                              23.11.2005       |
//|                                                                               |
//| 29 Nov 06: Modified by Derk Wehler to be readable.                            |
//|            Added/Changed a couple of input parameter defaults                 | 
//|            No other changes.                                                  |
//|                                                                               |
//+-------------------------------------------------------------------------------+
#property copyright "Derk Wehler"
#property link      "none"
//----
#property indicator_chart_window
//-------  -------------------------------
extern int    NumberOfDays=50;
extern string s1          ="European";
extern color  Color_1     =C'60, 60, 60';
extern string Begin_1     ="07:00";
extern string End_1       ="17:00";
extern string s2          ="";
extern string s3          ="American";
extern color  Color_2     =C'80, 80, 80';
extern string Begin_2     ="13:00";
extern string End_2       ="23:00";
extern string s4          ="";
extern string s5          ="Asian/Austrailian";
extern color  Color_3     =C'100, 100, 100';
extern string Begin_3     ="23:00";
extern string End_3       ="09:00";
extern bool   HighRange   =true;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void init()
  {
   DeleteObjects();
   for(int i=0; i < NumberOfDays; i++)
     {
      CreateObjects("PWT1"+i, Color_1);
      CreateObjects("PWT2"+i, Color_2);
      CreateObjects("PWT3"+i, Color_3);
     }
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deinit()
  {
   DeleteObjects();
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CreateObjects(string no, color cl)
  {
   ObjectCreate(no, OBJ_RECTANGLE, 0, 0,0, 0,0);
   ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet(no, OBJPROP_COLOR, cl);
   ObjectSet(no, OBJPROP_BACK, True);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteObjects()
  {
   for(int i=0; i < NumberOfDays; i++)
     {
      ObjectDelete("PWT1"+i);
      ObjectDelete("PWT2"+i);
      ObjectDelete("PWT3"+i);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
   datetime dt=CurTime();
   for(int i=0; i < NumberOfDays; i++)
     {
      DrawObjects(dt, "PWT1"+i, Begin_1, End_1);
      DrawObjects(dt, "PWT2"+i, Begin_2, End_2);
      DrawObjects(dt, "PWT3"+i, Begin_3, End_3);
      dt=decDateTradeDay(dt);
//----
      while(TimeDayOfWeek(dt) > 5)
         dt=decDateTradeDay(dt);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DrawObjects(datetime dt, string no, string tb, string te)
  {
   datetime t1, t2;
   double   p1, p2;
   int      b1, b2;
//----
   t1=StrToTime(TimeToStr(dt, TIME_DATE) + " " + tb);
   t2=StrToTime(TimeToStr(dt, TIME_DATE) + " " + te);
   b1=iBarShift(NULL, 0, t1);
   b2=iBarShift(NULL, 0, t2);
   p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
   p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)];
//----
   if (!HighRange)
     {
      p1=0;
      p2=2 * p2;
     }
   ObjectSet(no, OBJPROP_TIME1 , t1);
   ObjectSet(no, OBJPROP_PRICE1, p1);
   ObjectSet(no, OBJPROP_TIME2 , t2);
   ObjectSet(no, OBJPROP_PRICE2, p2);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime decDateTradeDay (datetime dt)
  {
   int ty=TimeYear(dt);
   int tm=TimeMonth(dt);
   int td=TimeDay(dt);
   int th=TimeHour(dt);
   int ti=TimeMinute(dt);
   td--;
   if (td==0)
     {
      tm--;
      if (tm==0)
        {
         ty--;
         tm=12;
        }
      if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12)
         td=31;
      if (tm==2)
         if (MathMod(ty, 4)==0)
            td=29;
         else
            td=28;
      if (tm==4 || tm==6 || tm==9 || tm==11)
         td=30;
     }
   return(StrToTime(ty + "." + tm + "." + td + " " + th + ":" + ti));
  }
//+------------------------------------------------------------------+

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