Time_Zones_v1

Download script
Author: ��� ����� �. aka KimIV
Time_Zones_v1

This script is designed to visually organize a trading chart by highlighting specific periods of market activity throughout the day. It acts as a visual guide, allowing traders to see at a glance which global financial sessions or news events are currently active.

Core Functionality

The primary purpose of this tool is to draw shaded rectangular blocks over your price chart. These blocks represent distinct "work times" or trading windows based on specific hours of the day (GMT). By looking at the chart, you can instantly identify different market zones such as the Asian Open, European sessions, and US news periods.

How It Works

  • Time Zone Mapping: The script is pre-configured with several key global time frames:
    • Asia Open
    • Dubai/Russia Open
    • Europe Open
    • London "Big Ben" News
    • US News
    • Europe Settlement
  • Visual Organization: Each of these time periods is assigned a unique color (such as Gold, Indigo, or Brown). When the script runs, it paints these colors onto the background of the chart, making it easy to differentiate between different regions' trading behaviors.
  • Historical Review: The tool doesn't just show today's schedule; it can automatically project these colored zones back over a set number of previous days (defaulting to 50 days). This allows traders to analyze past price movements in the context of specific global sessions.
  • Dynamic Price Scaling: The script includes logic to determine how high or low these shaded boxes appear on your screen. It can be configured to automatically adjust its height based on the price action occurring during those specific hours, ensuring the visual blocks remain relevant to the current market volatility.

User Experience

For a trader, this means the chart becomes a "roadmap." Instead of constantly checking a clock or a secondary news feed to know when the US session starts or when Europe closes, the visual cues are permanently available on the price action. It simplifies the transition between different market dynamics, helping you recognize when liquidity typically increases or when specific global events might impact the currency pairs you are watching.

12 Views
0 Downloads
0 Favorites
Time_Zones_v1
//+------------------------------------------------------------------+
//|                                            i-ParamonWorkTime.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|  Brad Eckerts Time Zones added by Jacob Yego                     |
//|  Asia Open -           00:00 GMT                                 |
//|  Dubai/Russia Open     04:00 GMT                                 |
//|  Europe Open           06:00 GMT                                 |
//|  London "Big Ben" News 08:30 GMT                                 |
//|  US News               12:30 GMT                                 |
//|  Europe Settlement     14:30 GMT                                 |  
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_chart_window

//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà -------------------------------
extern int    NumberOfDays = 50;        // Êîëè÷åñòâî äíåé
extern string Begin_1      = "00:00";
extern string End_1        = "04:00";
extern color  Color_1      = DarkBlue;
extern string Begin_2      = "04:00";
extern string End_2        = "06:00";
extern color  Color_2      = Gold;
extern string Begin_3      = "06:00";
extern string End_3        = "08:30";
extern color  Color_3      = Indigo;
extern string Begin_4      = "08:30";
extern string End_4       = "12:30";
extern color  Color_4      = Brown;
extern string Begin_5      = "12:30";
extern string End_5        = "14:30";
extern color  Color_5      = Blue;
extern string Begin_6      = "14:30";
extern string End_6        = "17:00";
extern color  Color_6      = Magenta;
extern bool   HighRange    = False;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
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);
    CreateObjects("PWT4"+i, Color_4);
    CreateObjects("PWT5"+i, Color_5);
    CreateObjects("PWT6"+i, Color_6);
  }
  Comment("");
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  DeleteObjects();
  Comment("");
}

//+------------------------------------------------------------------+
//| Ñîçäàíèå îáúåêòîâ èíäèêàòîðà                                     |
//| Ïàðàìåòðû:                                                       |
//|   no - íàèìåíîâàíèå îáúåêòà                                      |
//|   cl - öâåò îáúåêòà                                              |
//+------------------------------------------------------------------+
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);
    ObjectDelete("PWT4"+i);
    ObjectDelete("PWT5"+i);
    ObjectDelete("PWT6"+i);
    
  }
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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);
    DrawObjects(dt, "PWT4"+i, Begin_4, End_4);
    DrawObjects(dt, "PWT5"+i, Begin_5, End_5);
    DrawObjects(dt, "PWT6"+i, Begin_6, End_6);
    dt=decDateTradeDay(dt);
    while (TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);
  }
}

//+------------------------------------------------------------------+
//| Ïðîðèñîâêà îáúåêòîâ íà ãðàôèêå                                   |
//| Ïàðàìåòðû:                                                       |
//|   dt - äàòà òîðãîâîãî äíÿ                                        |
//|   no - íàèìåíîâàíèå îáúåêòà                                      |
//|   tb - âðåìÿ íà÷àëà ñåññèè                                       |
//|   te - âðåìÿ îêîí÷àíèÿ ñåññèè                                    |
//+------------------------------------------------------------------+
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);
}

//+------------------------------------------------------------------+
//| Óìåíüøåíèå äàòû íà îäèí òîðãîâûé äåíü                            |
//| Ïàðàìåòðû:                                                       |
//|   dt - äàòà òîðãîâîãî äíÿ                                        |
//+------------------------------------------------------------------+
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