Time_Zones-black screen

Author: ��� ����� �. aka KimIV
Time_Zones-black screen

The i-ParamonWorkTime script is designed to provide a visual map of significant trading sessions and news events directly on your MetaTrader chart. Instead of forcing you to manually keep track of complex global market hours, this tool automatically highlights specific time windows where high activity occurs, helping traders identify periods of high liquidity or volatility at a glance.

How the Logic Works

1. Defined Market Zones The script is pre-configured with six distinct time blocks based on major global financial hubs and significant news releases:

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

2. Visual Mapping Once activated, the script scans your historical data and draws semi-transparent colored rectangles over these specific times. Each session is assigned its own unique color, allowing you to quickly distinguish between, for example, a quiet Asian session and a high-activity London news window.

3. Historical Depth By default, the script looks back through the last 50 trading days. This allows you to see patterns of how price action behaved during these specific hours in the past, helping you understand which sessions are most conducive to your specific trading style.

4. Dynamic Price Scaling The script includes a unique logic for how it handles the height of these visual boxes:

  • By default, it calculates the lowest price point of a session and draws the box relative to that level.
  • There is a toggle option (HighRange) that allows you to adjust whether the boxes emphasize the highest price points or maintain a standard proportional size.

5. Automated Time Handling The script includes "smart" date logic. It automatically skips over weekends and correctly handles complex calendar dates (like leap years or months with 30 vs. 31 days) to ensure that the colored zones remain accurately aligned with the correct trading days on your chart.

Summary of Benefits

This tool acts as a visual "calendar" for your charts. Rather than guessing when the market might get volatile, you can see exactly where the major global sessions begin and end, allowing for better preparation and more informed decision-making during high-impact trading windows.

11 Views
0 Downloads
0 Favorites
Time_Zones-black screen
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                            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        = "03:30";
extern color  Color_1      = DarkSlateGray;
extern string Begin_2      = "04:00";
extern string End_2        = "05:30";
extern color  Color_2      = DarkGreen;
extern string Begin_3      = "06:00";
extern string End_3        = "08:00";
extern color  Color_3      = DarkBlue;
extern string Begin_4      = "08:30";
extern string End_4       = "12:00";
extern color  Color_4      = MidnightBlue;
extern string Begin_5      = "12:30";
extern string End_5        = "14:00";
extern color  Color_5      = Indigo;
extern string Begin_6      = "14:30";
extern string End_6        = "20:30";
extern color  Color_6      = Maroon;
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