i-ParamonWorkTime1

Download script
Author: ��� ����� �. aka KimIV
i-ParamonWorkTime1

This script is designed as a visual tool for traders to identify and monitor specific periods of high activity or "working time" on a trading chart. By automatically drawing shaded areas over the past several days, it helps users quickly see which hours are most significant for market movements.

How It Works

1. Visual Time Mapping The script allows you to define two distinct time windows per day (for example, a morning session and an afternoon session). For every day within a user-defined range (defaulting to the last 50 days), the tool places a solid colored box on your chart. These boxes act as visual "zones," highlighting exactly where specific market sessions occur.

2. Dynamic Price Calculation Rather than just drawing a flat box from top to bottom, the script intelligently looks at the price action within your chosen time windows:

  • Standard Mode: By default, the script calculates the lowest price reached during that period and draws the box based on those movements.
  • High Range Option: If enabled, it can adjust how the height of these boxes is calculated to better represent volatility or specific price extremes.

3. Automated Calendar Logic To ensure the history is accurate, the script includes an internal "calendar brain." It automatically handles the complexities of the Gregorian calendar, including:

  • Skipping weekends (Saturdays and Sundays).
  • Correcting for months with different numbers of days (like February or 30-day months).
  • Adjusting for leap years.

4. Customization Features The tool is highly adaptable to your specific trading style through several settings:

  • History Depth: You can choose how many past days you want to display.
  • Time Slots: You can set unique start and end times for both the first and second sessions.
  • Color Coding: You can assign different colors to each session (e.g., Blue for the morning session and Brown for the afternoon) to distinguish between different market types or time zones at a glance.

Summary for the User

Think of this script as a visual schedule overlay. Instead of having to manually check what time it is or remember when a specific session starts, this tool paints those "working hours" directly onto your history. It allows you to see exactly where the "action" happened in previous days, helping you identify patterns and stay consistent with your trading routine.

12 Views
0 Downloads
0 Favorites
i-ParamonWorkTime1
//+------------------------------------------------------------------+
//|                                            i-ParamonWorkTime.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|  23.11.2005  Èíäèêàòîð ðàáî÷åãî âðåìåíè Ïàðàìîíà.                |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_chart_window

//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà -------------------------------
extern int    NumberOfDays = 50;        // Êîëè÷åñòâî äíåé
extern string Begin_1      = "08:00";
extern string End_1        = "11:00";
extern color  Color_1      = DarkBlue;
extern string Begin_2      = "14:00";
extern string End_2        = "17:00";
extern color  Color_2      = Brown;
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);
  }
  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);
  }
}

//+------------------------------------------------------------------+
//| 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);
    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