Time_Zones_v1
Download scriptThis 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.
//+------------------------------------------------------------------+
//| 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