Dolly_Trading Times _4
Download scriptThis 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.
//+------------------------------------------------------------------+
//| 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