//+------------------------------------------------------------------+
//|                                              GMT_DST_TimeMod.mq4 |
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#import "kernel32.dll"
int TZInfoArray[43];
int GetTimeZoneInformation(int& TZInfoArray[]);

//++++++++++++++++++++++++++++++++
void GmtDst_SessionAdjusted()
{
  
  if (BacktestingMode == false)
  {
      // determining GMT shift in real-time
      GMT_Datasets = iCustom(0, 0, "GMT-offset",0,0);
  }
  
  string StartSubHour, EndSubHour, SessionEndSubHour;
  int StartHour, EndHour, SessEndHour;
  
  StartSubHour = StringSubstr(StartTime, 0, 2);
  StartHour = StrToInteger (StartSubHour);
  
  EndSubHour = StringSubstr(	EndTime, 0, 2);
  EndHour = StrToInteger (EndSubHour);
  
  SessionEndSubHour = StringSubstr(	SessionEndTime, 0, 2);
  SessEndHour = StrToInteger (SessionEndSubHour);

  // DST Time
  if (  (Month()>=4 && Month() <= 10) && GMT_Adjusted_summer == false)
  {
      StartHour = StartHour + (GMT_Datasets - 1); 
      EndHour = EndHour + (GMT_Datasets - 1);
      SessEndHour = SessEndHour + (GMT_Datasets - 1);
      
      StartTime = StringConcatenate(StartHour,":","00");
      EndTime = StringConcatenate(EndHour,":","14");
      SessionEndTime = StringConcatenate(SessEndHour,":","00");
      
      GMT_Adjusted_summer = true;
      GMT_Adjusted_winter = false;

  }
  // London is GMT+0 if not in DST
  else if ((Month()<4 || Month() > 10) && GMT_Adjusted_winter == false)
  {
      StartHour = StartHour + (GMT_Datasets - 0);
      EndHour = EndHour + (GMT_Datasets - 0);
      SessEndHour = SessEndHour - GMT_Datasets;
      
      StartTime = StringConcatenate(StartHour,":","00");
      EndTime = StringConcatenate(EndHour,":","14");
      SessionEndTime = StringConcatenate(SessEndHour,":","00");
      
      GMT_Adjusted_winter = true;
      GMT_Adjusted_summer = false;

  }
}