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

!mt4 clock.mq5

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

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

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

О программе

Данный индикатор отображает на графике MetaTrader 5 часы с текущим временем для нескольких мировых финансовых центров: Сидней, Токио, Лондон, Нью-Йорк и локальное время. Для получения точной информации о часовых поясах используется импорт функций из библиотеки Windows kernel32.dll (GetLocalTime, GetSystemTime, GetTimeZoneInformation, SystemTimeToTzSpecificLocalTime).

Индикатор способен подсвечивать цветом часы активной торговой сессии (зелёным при открытии рынка, красным при закрытии). Предусмотрены различные режимы отображения времени: с секундами, в формате AM/PM, а также отображение времени текущего бара с возможностью подавления часов при таймфрейме ниже H1.

Встроена функция предупреждения при отключённых DLL-импортах, а также режим тестирования выходных дней. Данные о часовых поясах могут быть записаны в файл для последующего редактирования. Индикатор рисует графические метки (OBJ_LABEL) на графике через пользовательские функции создания объектов.

Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

#import "kernel32.dll"
   void GetLocalTime(int& a0[]);
   void GetSystemTime(int& a0[]);
   int GetTimeZoneInformation(int& a0[]);
   bool SystemTimeToTzSpecificLocalTime(int& a0[], int& a1[], int& a2[]);
#import

color opencol = C'0,117,213';
color closecol = C'150,34,34';

int labelCorner = 0;
int topOffsetPixels = 1;
int leftOffsetPixels = -5;
int WhatWindow = 0;
bool Highlight_Market_Open = TRUE;
bool Display_Times_With_AMPM = FALSE;
bool Broker_MMSS_Is_Gold_Standard = TRUE;
bool Display_Time_With_Seconds = FALSE;
string _INFO_Re_Bar_With_Seconds = "0=No; 1=Yes; 2=Auto";
int Display_Bar_With_Seconds = 1;
bool Suppress_Bar_HH_Below_H1 = TRUE;
bool ShowSydney = TRUE;
bool ShowTokyo = TRUE;
bool ShowLondon = TRUE;
bool ShowNewYork = TRUE;
bool ShowLocal = true;
bool Show_DIBS_London = FALSE;
int DIBS_LondonOpenHour = 6;
int DIBS_LondonCloseHour = 15;
bool Weekend_Test_Mode = FALSE;

bool gi_212 = FALSE;
int gia_216[43];
int gia_220[43];
int gia_224[43];
int gia_228[43];
int gia_232[43];
int gia_236[43];
int gia_240[43];
int gia_244[43];
int gia_248[43];
double g_ibuf_252[];
int gi_256 = 8;
int gi_260 = 17;
int gi_264 = 7;
int gi_268 = 16;
int g_datetime_272;

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

int deinit()
  {

  ObjectDelete("Panel135");
  ObjectDelete("Panel136");
  ObjectDelete("Panel136a");
  ObjectDelete("Panel136t");
  ObjectDelete("Panel137");
  ObjectDelete("Panel137a");
  ObjectDelete("Panel137t");
  ObjectDelete("Panel138a");
  ObjectDelete("Panel138");
  ObjectDelete("Panel138t");
  ObjectDelete("Panel139");
  ObjectDelete("Panel139a");
  ObjectDelete("Panel139t");
  ObjectDelete("Panel140");
  ObjectDelete("Panel140a");
  ObjectDelete("Panel140t"); 

   return(0);
  }

int start() {
      // код доступен только после оплаты
   }
   int lia_0[4];
   int lia_4[4];
   int lia_8[4];
   int lia_12[4];
   int lia_16[4];
   int lia_20[4];
   int lia_24[4];
   int lia_28[4];
   int lia_32[4];
   int lia_36[4];
   int li_40;
   int l_datetime_44;
   int li_48;
   int li_52;
   int li_56;
   int li_60;
   int li_64;
   int li_68;
   int li_72;
   int li_76;
   int li_80;
   int li_84;
   string l_text_88;
   string l_text_96;
   string l_text_104;
   string l_text_112;
   string l_text_120;
   string l_text_128;
   string l_text_136;
   string l_text_144;
   string l_text_152;
   string l_text_160;
   string l_text_168;
   int li_176;
   string l_time2str_180;
   if (!IsDllsAllowed()) {
      if (TimeCurrent() - g_datetime_272 >= 7) {
         g_datetime_272 = TimeCurrent();
         Alert(WindowExpertName(), ": ERROR. DLLs are disabled. To enable, select \'Allow DLL Imports\' in the Common Tab of indicator");
      }
   } else {
      if (!Weekend_Test_Mode && TimeCurrent() - g_datetime_272 == 0) return;
      g_datetime_272 = TimeCurrent();
      GetLocalTime(lia_0);
      li_40 = TimeArrayToTime(lia_0);
      l_datetime_44 = TimeCurrent();
      li_48 = 0;
      if (Broker_MMSS_Is_Gold_Standard && !Weekend_Test_Mode) {
         li_48 = 60 * TimeMinute(l_datetime_44) + TimeSeconds(l_datetime_44) - 60 * TimeMinute(li_40) - TimeSeconds(li_40);
         if (li_48 > 1800) li_48 -= 3600;
         else
            if (li_48 < -1800) li_48 += 3600;
      }
      GetSystemTime(lia_4);
      li_52 = TimeArrayToTime(lia_4) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_220, lia_4, lia_8);
      li_56 = TimeArrayToTime(lia_8) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_232, lia_4, lia_20);
      li_60 = TimeArrayToTime(lia_20) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_224, lia_4, lia_12);
      li_64 = TimeArrayToTime(lia_12) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_228, lia_4, lia_16);
      li_68 = TimeArrayToTime(lia_16) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_236, lia_4, lia_24);
      li_72 = TimeArrayToTime(lia_24) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_240, lia_4, lia_28);
      li_76 = TimeArrayToTime(lia_28) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_244, lia_4, lia_32);
      li_80 = TimeArrayToTime(lia_32) + li_48;
      SystemTimeToTzSpecificLocalTime(gia_248, lia_4, lia_36);
      li_84 = TimeArrayToTime(lia_36) + li_48;
      l_text_88 = TimeToString(li_52);
      l_text_96 = TimeToString(li_60);
      l_text_104 = TimeToString(li_40);
      l_text_112 = TimeToString(li_64);
      l_text_120 = TimeToString(li_68);
      l_text_128 = TimeToString(li_72);
      l_text_136 = TimeToString(li_76);
      l_text_144 = TimeToString(li_80);
      l_text_152 = TimeToString(li_84);
      l_text_160 = TimeToString(li_56);
      l_text_168 = TimeToString(TimeCurrent());
      li_176 = 60 * Period() + Time[0] - TimeCurrent();
      if (li_176 >= 0) {
         if (Display_Bar_With_Seconds != 0 && Display_Bar_With_Seconds == 1 || Display_Time_With_Seconds || (Display_Bar_With_Seconds == 2 && li_176 < 120)) l_time2str_180 = TimeToStr(60 * Period() + Time[0] - TimeCurrent(), TIME_MINUTES|TIME_SECONDS);
         else l_time2str_180 = TimeToStr(60 * Period() + Time[0] - TimeCurrent(), TIME_MINUTES);
         if (Suppress_Bar_HH_Below_H1 && Period() <= PERIOD_H1 && StringLen(l_time2str_180) > 6) l_time2str_180 = StringSubstr(l_time2str_180, 3);
      } else {
         if (Display_Bar_With_Seconds == 0) l_time2str_180 = "wait";
         else l_time2str_180 = "wait4bar";
      }

      if (ShowLocal) {
         CreateFX5_Labels( "Panel135",10+leftOffsetPixels,2+topOffsetPixels); 
         ObjectSetText("Panel135", "ggggggggggggggggggggggggggggggggggg", 14, "Webdings", Black);//C'7,40,80');//C'5,20,40');

         CreateFX5_Labels( "Panel140",354+leftOffsetPixels,2+topOffsetPixels); 
         ObjectSetText("Panel140", "ggggggg", 9, "Webdings", closecol);
         ObjectSetText("Panel140a", "Local", 7, "Verdana Bold", White);
         ObjectSetText("Panel140t", l_text_104, 7, "Verdana Bold", White);
      }

      if (ShowNewYork) {

         if (TimeDayOfWeek(li_56) != 0 && TimeDayOfWeek(li_56) != 8 && Highlight_Market_Open && TimeHour(li_56) >= gi_256 && TimeHour(li_56) < gi_260) {
            CreateFX5_Labels( "Panel137",267+leftOffsetPixels,2+topOffsetPixels); 
            ObjectSetText("Panel137", "ggggggg", 9, "Webdings", opencol);
            ObjectSetText("Panel137a", "NY", 7, "Verdana Bold", White);
            ObjectSetText("Panel137t", l_text_160, 7, "Verdana Bold", White);   
         } else {
           CreateFX5_Labels( "Panel137",267+leftOffsetPixels,2+topOffsetPixels); 
            ObjectSetText("Panel137", "ggggggg", 9, "Webdings", closecol);//SteelBlue);
            ObjectSetText("Panel137a", "NY", 7, "Verdana Bold", White);
            ObjectSetText("Panel137t", l_text_160, 7, "Verdana Bold", White); 
         }
      }
      if (ShowLondon) {
         if (TimeDayOfWeek(li_64) != 0 && TimeDayOfWeek(li_64) != 8 && Highlight_Market_Open && TimeHour(li_64) >= gi_256 && TimeHour(li_64) < gi_260) {
            CreateFX5_Labels( "Panel138",181+leftOffsetPixels,2+topOffsetPixels); 
            ObjectSetText("Panel138", "ggggggg", 9, "Webdings", opencol);
            ObjectSetText("Panel138a", "London", 7, "Verdana Bold", White);
            ObjectSetText("Panel138t", l_text_112, 7, "Verdana Bold", White);
         } else {
            CreateFX5_Labels( "Panel138",181+leftOffsetPixels,2+topOffsetPixels); 
            ObjectSetText("Panel138", "ggggggg", 9, "Webdings", closecol);
            ObjectSetText("Panel138a", "London", 7, "Verdana Bold", White);
            ObjectSetText("Panel138t", l_text_112, 7, "Verdana Bold", White);
         }
      }
      if (Sho

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

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

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

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

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

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

Стоимость полного кода
1 443,60₽ ≈ $17.64