← К каталогу
Исходный код · ID 1364

trading session vlines.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор Trading Session vLines.mq4 предназначен для визуализации ключевых моментов торговых сессий на графике цены. Он рисует вертикальные линии в заданные часы, соответствующие открытию и закрытию сессий Великобритании, началу нового торгового дня и началу американской сессии. Линии отличаются цветом и стилем, что позволяет трейдеру быстро ориентироваться на графике.

Индикатор автоматически учитывает переход на летнее и зимнее время для Великобритании и США в известные периоды, корректируя часы создания линий. Пользователь может задать глубину истории в количестве баров, а также настраиваемые часы для каждой из отметок сессий.

Продукт работает в среде MetaTrader 4 как пользовательский индикатор. Он не выполняет торговых операций и не рассчитывает торговые сигналы — его задача исключительно наглядная разметка временных отметок на ценовом графике.

Настройки программы

НастройкаОписание
No_Bars_To_Calculate Количество баров для расчёта — Задаёт глубину истории — сколько баров назад индикатор будет создавать вертикальные линии. По умолчанию равен 1000.
UK_Open Час открытия сессии Великобритании — Час в серверном времени, в который рисуется вертикальная линия открытия UK-сессии. По умолчанию равен 8.
UK_Close Час закрытия сессии Великобритании — Час в серверном времени, в который рисуется вертикальная линия закрытия UK-сессии. По умолчанию равен 17.
BeginDay Час начала торгового дня — Час в серверном времени, в который рисуется вертикальная линия начала нового торгового дня. По умолчанию равен 0.
US_Start Час начала сессии США — Час в серверном времени, в который рисуется вертикальная линия начала US-сессии. По умолчанию равен 13.
Получить полный код

Поиск по коду файла

#property indicator_chart_window

extern int No_Bars_To_Calculate = 1000;
extern int UK_Open=8;
extern int UK_Close=17;
extern int BeginDay = 0;
extern int US_Start = 13;

bool uk_dst = false;
bool us_dst = false;

string objNames[0];
int array_count = 0;
int TimeStart = 0;
int TimeFinish=0;
int USStart=0;

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {
  int items=ArrayRange(objNames,0)-1; Print(items, " objects to delete");
  int i = 0;

   for (i=items; i>=0;i--)
   {

      if(objNames[i] != "")
      {
         Print("Deleted: ",objNames[i]);
         ObjectDelete(objNames[i]);
      }      
   }

   return(0);
  }

int start()
  {
      // код доступен только после оплаты
   }
   int counted_bars=IndicatorCounted();
   int pos = Bars-1;
   int i = 0;

   if(Bars - counted_bars == 1) return(0);

   pos = (No_Bars_To_Calculate);

   for (i=ArrayRange(objNames,0); i>=0;i--)
   {
      objNames[i] = "";
   }

   while(pos>=0)
   {            

      switch(TimeYear(Time[pos]))
         {

         case 2006:
            if(TimeDayOfYear(Time[pos])>85 && TimeDayOfYear(Time[pos])<298) 
            {
            uk_dst=true;
            Comment("UK Summer Time is active");
            } else {
            uk_dst=false;
            } 
            break;
         case 2005:
            if(TimeDayOfYear(Time[pos])>86 && TimeDayOfYear(Time[pos])<299) 
            {
            uk_dst=true;
            } else {
            uk_dst=false;
            }
            break;
         default:
            uk_dst=false;
            break;
          }      

      if(uk_dst==true)
         {
            TimeStart = UK_Open - 1;
            TimeFinish = UK_Close-1;
         } 
         else 
         {
            TimeStart = UK_Open;
            TimeFinish = UK_Close;
         }

      if((TimeHour(Time[pos]) == TimeStart && TimeMinute(Time[pos]) == 0))
      {
         if(ObjectFind(TimeToStr(Time[pos]))==-1)
         {
            if(!ObjectCreate(TimeToStr(Time[pos]), OBJ_VLINE, 0, Time[pos], 0))
            {
               Print("error: can't create vertical line object! code #",GetLastError());
               return(0);
            }else {

               objNames[array_count] = TimeToStr(Time[pos]);
               ObjectSet(TimeToStr(Time[pos]), OBJPROP_STYLE, STYLE_DOT);
               ObjectSet(TimeToStr(Time[pos]), OBJPROP_COLOR, DodgerBlue);

               Print("Object created: ", objNames[array_count]); 

               array_count++;       
            }
         }
         else 
            {
            Print("object ", TimeToStr(Time[pos]), " already exists!");
            } 
         }

      if((TimeHour(Time[pos]) == TimeFinish && TimeMinute(Time[pos]) == 0))
      {
         if(ObjectFind(TimeToStr(Time[pos]))==-1)
         {
            if(!ObjectCreate(TimeToStr(Time[pos]), OBJ_VLINE, 0, Time[pos], 0))
            {
               Print("error: can't create 

Показано первые 50% кода (символов: 3609)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
360,90₽ ≈ $4.41