TIME1_modified

Download script
Author: Morning Star
TIME1_modified

This tool is designed to enhance your trading experience by providing a clear visual breakdown of the global market sessions directly on your price charts. Instead of having to manually keep track of which time zone is currently active, this script automatically highlights specific trading windows—namely the Asia, European, and US sessions.

How it Works

The script works by scanning your historical data over a customizable number of days (defaulting to 50). It then identifies three distinct blocks of time throughout the day:

  • Asia Session: Highlights the early morning hours.
  • European Session: Highlights the midday transition.
  • US Session: Highlights the late-day activity.

Visual Presentation

To make the chart easier to read, the tool draws shaded rectangles over these specific time periods. Each session is assigned its own unique color:

  • The Asia session appears in a dimmed gray.
  • The European session appears in a silver tone.
  • The US session appears in a dark gray.

By placing these blocks in the background of your chart, you can instantly see when major market shifts occur. The script intelligently calculates the highest and lowest price points for each specific time window, ensuring that the highlighted boxes accurately encompass the volatility and price action that occurred during those hours.

Key Features

  • Historical Context: You can view these session blocks across dozens of previous days to identify patterns in how prices behave at different times.
  • Automated Cleanup: The script is designed to manage your chart's workspace efficiently, ensuring it creates the necessary visuals when loaded and clears them if you remove the tool.
  • Timezone Awareness: It automatically calculates the dates and transitions between trading days, ensuring the blocks appear correctly even across weekends and month-end boundaries.
14 Views
0 Downloads
0 Favorites
TIME1_modified
//+------------------------------------------------------------------+
//|                                                        times.mq4 |
//|                                                                  |
//|               Made/Modified by sh _j .                           |
//+------------------------------------------------------------------+
#property copyright "Morning Star"
#property link      "http://Grand Forex.ir"

#property indicator_chart_window

 
extern int    NumberOfDays = 50;        
extern string AsiaBegin    = "00:00";   
extern string AsiaEnd      = "07:59";   
extern color  AsiaColor    = DimGray; 
extern string EurBegin     = "08:00";   
extern string EurEnd       = "12:59";   
extern color  EurColor     = Silver;       
extern string USABegin     = "13:00";   
extern string USAEnd       = "23:59";   
extern color  USAColor     = DarkGray; 


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  DeleteObjects();
  for (int i=0; i<NumberOfDays; i++) {
    CreateObjects("AS"+i, AsiaColor);
    CreateObjects("EU"+i, EurColor);
    CreateObjects("US"+i, USAColor);
  }
  Comment("");
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
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("AS"+i);
    ObjectDelete("EU"+i);
    ObjectDelete("US"+i);
  }
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  datetime dt=CurTime();

  for (int i=0; i<NumberOfDays; i++) {
    DrawObjects(dt, "AS"+i, AsiaBegin, AsiaEnd);
    DrawObjects(dt, "EU"+i, EurBegin, EurEnd);
    DrawObjects(dt, "US"+i, USABegin, USAEnd);
    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)];
  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