i-Sessions pst
Download scriptThis script is designed to provide a visual representation of major global trading sessions—specifically the Asian, European, and American markets—directly on your trading charts. By transforming abstract trading times into colored visual blocks, it helps traders quickly identify periods of high liquidity and volatility.
Core Functionality
The tool automatically maps out historical and current trading windows based on the specific hours you define in the settings. Instead of just showing a single line, it draws distinct rectangular zones over your price action. This allows you to see at a glance which market is currently "open" and how price behavior differs during those specific times.
Key Features
- Customizable Market Windows: You can define the exact start and end times for three major sessions:
- Asian Session: Tailored for early morning markets.
- European Session: Capturing the move into the mid-day European trading block.
- American Session: Highlighting the transition into the US market.
- Visual Differentiation: Each session is assigned a unique color (e.g., LavenderBlush, AliceBlue). These colors appear as shaded backgrounds on your chart, making it easy to distinguish between different global zones without cluttering the screen with text.
- Historical Depth: The script doesn't just show today’s market; it can be configured to project these session blocks across a set number of previous days (up to 50 by default). This is incredibly useful for "backtesting" or analyzing how price trends behave during specific sessions over several weeks.
- Dynamic Price Scaling: The tool automatically calculates the highest and lowest price points reached during each specific session window. It uses these extremes to size the rectangular blocks, ensuring that the visual representation accurately covers the price range moved during those hours.
How it Benefits the Trader
By using this script, you can visually organize your trading day. It helps eliminate guesswork regarding when a market is most active, allowing you to stay out of "slow" periods or prepare for the volatility that typically accompanies the overlap between sessions (such as the transition from the European to the American session).
//+------------------------------------------------------------------+
//| i-Sessions.mq4 |
//| Êèì Èãîðü Â. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 16.11.2005 Èíäèêàòîð òîðãîâûõ ñåññèé |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link "http://www.kimiv.ru"
#property indicator_chart_window
//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà -------------------------------
extern int NumberOfDays = 50; // Êîëè÷åñòâî äíåé
extern string AsiaBegin = "02:00"; // Îòêðûòèå àçèàòñêîé ñåññèè
extern string AsiaEnd = "11:00"; // Çàêðûòèå àçèàòñêîé ñåññèè
extern color AsiaColor = LavenderBlush; // Öâåò àçèàòñêîé ñåññèè MistyRose
extern string EurBegin = "10:00"; // Îòêðûòèå åâðîïåéñêîé ñåññèè
extern string EurEnd = "19:00"; // Çàêðûòèå åâðîïåéñêîé ñåññèè
extern color EurColor = C'0xD8,0xFE,0xD8'; //\xD8FED8 //216,254,216; // Öâåò åâðîïåéñêîé ñåññèè
extern string USABegin = "15:00"; // Îòêðûòèå àìåðèêàíñêîé ñåññèè
extern string USAEnd = "23:59"; // Çàêðûòèå àìåðèêàíñêîé ñåññèè
extern color USAColor = AliceBlue; // Öâåò àìåðèêàíñêîé ñåññèè LightCyan
//+------------------------------------------------------------------+
//| 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("");
}
//+------------------------------------------------------------------+
//| Ñîçäàíèå îáúåêòîâ èíäèêàòîðà |
//| Ïàðàìåòðû: |
//| 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("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);
}
}
//+------------------------------------------------------------------+
//| Ïðîðèñîâêà îáúåêòîâ íà ãðàôèêå |
//| Ïàðàìåòðû: |
//| 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)];
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