Dolly_Trading Times _4

Download script
Author: Copyright � 2006, MetaQuotes Software Corp.
Dolly_Trading Times _4

This tool is designed to provide traders with a clear, visual reference of global market activity directly on their trading charts. By identifying the specific opening and closing times of major financial sessions, it helps users understand when liquidity is highest and when specific regions—such as Europe, the US, or Asia—are most active.

Core Functionality

The script acts as a dynamic information dashboard. It automatically identifies and displays the current status of several key global markets, including:

  • Regional Sessions: Europe, London, US, New Zealand (NZ), Australia (AU), and Tokyo (TOKIO).
  • Specific Market Openings: A dedicated section for Stock market hours.

Visual Logic & Dynamics

The tool uses a set of automated rules to update your screen in real-time:

  • Dynamic Time Tracking: The script constantly checks the current time against the predefined "Open" and "Close" windows for each session.
  • Color-Coded Awareness: To make navigation intuitive, the labels change color based on market status. When a specific market session is currently active, the corresponding time will highlight in Green. When a session is closed or not yet open, it remains in a neutral Silver color.
  • Customizable Visibility: Users have the flexibility to toggle specific markets on or off via settings. For example, if you only trade the US and London sessions, you can hide the others to keep your workspace clean.
  • Timezone Management: The logic includes a "Broker GMT Offset" calculation. This ensures that regardless of which broker you use, the displayed times are adjusted correctly to match your actual trading environment.

User Experience

Instead of forcing you to constantly check a separate world clock or calculate time differences manually, this script overlays the data directly onto your chart. It provides a "at-a-glance" summary of the trading day, allowing you to see exactly which global markets are moving at any given moment, helping you align your strategy with high-volume periods.

11 Views
0 Downloads
0 Favorites
Dolly_Trading Times _4
//+------------------------------------------------------------------+
//|                                       Dolly_Trading Times #3.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property link      " Code used from  i-ParamonWorkTime.mq4 " 
#property indicator_chart_window

extern string Broker_GMT_Offset = "02:00";


extern int    TradingTimes_NumberOfDays = 1; 
extern string EUROPE_Open       = "07:00 15:00";
extern color  EUROPE_Color      = Purple; 
extern color  EUROPE_TEXT_Color = Violet;
extern bool Show_EUROPE_Open = true;

extern string LONDON_Open      = "07:30 15:30";  
extern color  LONDON_Color      = MidnightBlue;
extern color  LONDON_TEXT_Color = DodgerBlue;
extern bool Show_LONDON_Open  = true;

extern string US_Open       = "12:20 19:00";
extern color  US_Color      = Indigo;
extern color  US_TEXT_Color = MediumPurple;
extern bool Show_US_Open = true;

extern string NZ_Open       = "21:00 05:00";
extern color  NZ_Color      = Tomato;
extern color  NZ_TEXT_Color = Tomato;
extern bool Show_NZ_Open = true;

extern string AU_Open       = "23:00 06:00";
extern color  AU_Color      = Maroon;
extern color  AU_TEXT_Color = Crimson;
extern bool Show_AU_Open = true;

extern string TOKIO_Open       = "00:00 06:00";
extern color  TOKIO_Color      = Maroon;
extern color  TOKIO_TEXT_Color = Crimson;
extern bool Show_TOKIO_Open = true;

extern string STOCK_Open       = "13:30 20:00";
extern color  STOCK_Color      = Maroon;
extern color  STOCK_TEXT_Color = YellowGreen;
extern bool Show_STOCK_Open = true;

extern bool Show_Daily_Trade_TEXT = true;




//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  DeleteObjects();  
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  DeleteObjects();
  ObjectDelete("TT1");ObjectDelete("TT2");ObjectDelete("TT3");
  ObjectDelete("TT4");ObjectDelete("TT5");ObjectDelete("TT6");
  ObjectDelete("TT7");ObjectDelete("TT8");ObjectDelete("TT9");
  ObjectDelete("TT10");ObjectDelete("TT11");ObjectDelete("TT12");
  ObjectDelete("TT13");ObjectDelete("TT14");ObjectDelete("TT15");
  ObjectDelete("TT16");ObjectDelete("TT17");ObjectDelete("TT18");
  ObjectDelete("TT19");ObjectDelete("TT20");ObjectDelete("TT21");
}

void DeleteObjects() {
  for (int i=0; i<TradingTimes_NumberOfDays; i++) {
    ObjectDelete("DollyTIME1"+i);
    ObjectDelete("DollyTIME2"+i);
    ObjectDelete("DollyTIME3"+i);
    ObjectDelete("DollyTIME4"+i);
   
  }
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start()
 {  
  DrawTradetimes();
}

void DrawTradetimes()
{

 if (Show_Daily_Trade_TEXT==true)
 {
   int y = 390, ystep = 15;
   datetime dt = TimeCurrent();
   
   
   if(Show_EUROPE_Open)
   {
   ObjectDelete("TT1");
   y = y + ystep;
   TT1( "TT1", y, 12,4);
   ObjectSetText( "TT1","EUROPE Open" , 9, "Arial", EUROPE_TEXT_Color);
    
   ObjectDelete("TT2");
   TT2( "TT2", y, 12,4);
   if(intradetime(dt,EUROPE_Open) )
   ObjectSetText( "TT2",""+ StringSubstr(EUROPE_Open,0,5) +"" , 9, "Arial", Green);
   else
   ObjectSetText( "TT2",""+ StringSubstr(EUROPE_Open,0,5) +"" , 9, "Arial", Silver);
   
   ObjectDelete("TT3");
   TT3( "TT3", y, 12,4);
   ObjectSetText( "TT3",""+ StringSubstr(EUROPE_Open,6)+"" , 9, "Arial", Silver);
   }
   
   if(Show_LONDON_Open)
   {
   y = y + ystep;
   ObjectDelete("TT4");
   TT1( "TT4", y, 12,4);
   ObjectSetText( "TT4","LONDON Open" , 9, "Arial", LONDON_TEXT_Color);
    
   ObjectDelete("TT5");
   TT2( "TT5", y, 12,4);
   if(intradetime(dt,LONDON_Open) )
   ObjectSetText( "TT5",""+ StringSubstr(LONDON_Open,0,5) +"" , 9, "Arial", Green);
   else
   ObjectSetText( "TT5",""+StringSubstr(LONDON_Open,0,5)+"" , 9, "Arial", Silver);
   
   ObjectDelete("TT6");
   TT3( "TT6", y, 12,4);
   ObjectSetText( "TT6",""+ StringSubstr(LONDON_Open,6)+"" , 9, "Arial", Silver);
   }
   
   if(Show_US_Open)
   {
   y = y + ystep;
   ObjectDelete("TT7");
   TT1( "TT7", y, 12,4);
   ObjectSetText( "TT7","US Open" , 9, "Arial", US_TEXT_Color);
    
   ObjectDelete("TT8");
   TT2( "TT8", y, 12,4);
   if(intradetime(dt,US_Open) )
   ObjectSetText( "TT8",""+ StringSubstr(US_Open,0,5) +"" , 9, "Arial", Green);
   else
   ObjectSetText( "TT8",""+StringSubstr(US_Open,0,5)+"" , 9, "Arial", Silver);
   
   ObjectDelete("TT9");
   TT3( "TT9", y, 12,4);
   ObjectSetText( "TT9",""+ StringSubstr(US_Open,6)+"" , 9, "Arial", Silver);
   }
   
   if(Show_STOCK_Open)
   {
   y = y + ystep;
   ObjectDelete("TT10");
   TT1( "TT10", y, 12,4);
   ObjectSetText( "TT10","STOCK OPEN" , 9, "Arial", STOCK_TEXT_Color );
   
   ObjectDelete("TT11");
   TT2( "TT11", y, 12,4);
   if(intradetime(dt,STOCK_Open) )
   ObjectSetText( "TT11",""+ StringSubstr(STOCK_Open,0,5) +"" , 9, "Arial", Green);
   else
   ObjectSetText( "TT11",""+StringSubstr(STOCK_Open,0,5)+"" , 9, "Arial", Silver);
   
   ObjectDelete("TT12");
   TT3( "TT12", y, 12,4);
   ObjectSetText( "TT12",""+ StringSubstr(STOCK_Open,6)+"" , 9, "Arial", Silver);
   }
   
   if(Show_NZ_Open)
   {
   y = y + ystep;
   ObjectDelete("TT19");
   TT1( "TT19", y, 12,4);
   ObjectSetText( "TT19","NZ OPEN" , 9, "Arial", NZ_TEXT_Color );
   
   ObjectDelete("TT20");
   TT2( "TT20", y, 12,4);
   if(intradetime(dt,NZ_Open) )
   ObjectSetText( "TT20",""+ StringSubstr(NZ_Open,0,5) +"" , 9, "Arial", Green);
   else
   ObjectSetText( "TT20",""+StringSubstr(NZ_Open,0,5)+"" , 9, "Arial", Silver);
   
   ObjectDelete("TT21");
   TT3( "TT21", y, 12,4);
   ObjectSetText( "TT21",""+ StringSubstr(NZ_Open,6)+"" , 9, "Arial", Silver);
   }
      
   if(Show_AU_Open)
   {
   y = y + ystep;
   ObjectDelete("TT13");
   TT1( "TT13", y, 12,4);
   ObjectSetText( "TT13","AU OPEN" , 9, "Arial", AU_TEXT_Color );
    
   ObjectDelete("TT14");
   TT2( "TT14", y, 12,4);
   if(intradetime(dt,AU_Open) )
   ObjectSetText( "TT14",""+ StringSubstr(AU_Open,0,5) +"" , 9, "Arial", Green);
   else
   ObjectSetText( "TT14",""+StringSubstr(AU_Open,0,5)+"" , 9, "Arial", Silver);
   
   ObjectDelete("TT15");
   TT3( "TT15", y, 15,4);
   ObjectSetText( "TT15",""+ StringSubstr(AU_Open,6)+"" , 9, "Arial", Silver);
   }
   
   if(Show_TOKIO_Open)
   {
   y = y + ystep;
   ObjectDelete("TT16");
   TT1( "TT16", y, 12,4);
   ObjectSetText( "TT16","TOKIO OPEN" , 9, "Arial", TOKIO_TEXT_Color );
   
   ObjectDelete("TT17");
   TT2( "TT17", y, 12,4);
   if(intradetime(dt,TOKIO_Open) )
   ObjectSetText( "TT17",""+ StringSubstr(TOKIO_Open,0,5) +"" , 9, "Arial", Green);
   else
   ObjectSetText( "TT17",""+StringSubstr(TOKIO_Open,0,5)+"" , 9, "Arial", Silver);
   
   ObjectDelete("TT18");
   TT3( "TT18", y, 15,4);
   ObjectSetText( "TT18",""+ StringSubstr(TOKIO_Open,6)+"" , 9, "Arial", Silver);
   }
  } 
}

bool intradetime(datetime dt, string tradetime)
{
   string tradeb = StringSubstr(tradetime,0,5);
   string tradee = StringSubstr(tradetime,6);
   datetime t1 = StrToTime(TimeToStr(dt,TIME_DATE) + " " + tradeb);
   datetime t2 = StrToTime(TimeToStr(dt,TIME_DATE) + " " + tradee);
   t1 = brokertime(t1);
   t2 = brokertime(t2);
   
   if(t1>t2)
      t1 = t1 - oneday();
   
   if(dt >= t1 && dt<=t2)
      return(true);
   else
      return(false);
}

datetime brokertime(datetime GMTtime)
{
   datetime offset = StrToTime(TimeToStr(GMTtime,TIME_DATE) + " " + Broker_GMT_Offset)
                     -StrToTime(TimeToStr(GMTtime,TIME_DATE));
   return (GMTtime + offset);
}
datetime oneday()
{
   datetime dt = TimeCurrent();
   string span = "23:59:59";
   
   datetime re = StrToTime(TimeToStr(dt,TIME_DATE) + " " + span)
                     -StrToTime(TimeToStr(dt,TIME_DATE)) + 1;
   return (re);
}
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));
}
//+------------------------------------------------------------------+
int TT1( string Text, int xOffset, int yOffset,int iCorner) //TITLE
{  ObjectCreate(Text,OBJ_LABEL         , 0, 0, 0 );
   ObjectSet   (Text,OBJPROP_CORNER    , iCorner);
   ObjectSet   (Text,OBJPROP_XDISTANCE , 20);
   ObjectSet   (Text,OBJPROP_YDISTANCE , xOffset );
   ObjectSet   (Text,OBJPROP_BACK      , True );
}
int TT2( string Text, int xOffset, int yOffset,int iCorner) //TITLE
{  ObjectCreate(Text,OBJ_LABEL         , 0, 0, 0 );
   ObjectSet   (Text,OBJPROP_CORNER    , iCorner);
   ObjectSet   (Text,OBJPROP_XDISTANCE , 120);
   ObjectSet   (Text,OBJPROP_YDISTANCE , xOffset );
   ObjectSet   (Text,OBJPROP_BACK      , True );
}
int TT3( string Text, int xOffset, int yOffset,int iCorner) //TITLE
{  ObjectCreate(Text,OBJ_LABEL         , 0, 0, 0 );
   ObjectSet   (Text,OBJPROP_CORNER    , iCorner);
   ObjectSet   (Text,OBJPROP_XDISTANCE , 160);
   ObjectSet   (Text,OBJPROP_YDISTANCE , xOffset );
   ObjectSet   (Text,OBJPROP_BACK      , True );
}

Comments