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

time.mqh

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

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

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

О программе

Библиотека time.mqh реализует класс CTime для работы с временем в контексте торговых сессий. Класс хранит текущие время, границы торговой сессии (время начала и окончания), а также флаги состояния: новый день, конец дня и полночь.

Основные функции включают контроль за переходом дней на основе текущего времени сервера, расчёт и корректировку временных границ сессии с учётом полуночного перехода, а также разбор строки времени в формате Ч:М:С с валидацией каждого компонента.

При некорректном вводе времени класс выводит предупреждения с описанием ошибки. Все внутренние поля инициализируются нулевыми значениями при создании экземпляра.

Состав библиотеки

Классов: 1 · методов: 4 · конструкторов: 1 · деструкторов: 0 · отдельных функций: 0

Классы
Класс class CTime

Класс для управления временем торговых сессий: отслеживание текущего времени, границ сессий и перехода дней.

Методы и конструкторы
Конструктор · CTime CTime()

Конструктор класса, инициализирующий все поля нулевыми значениями.

Метод · CTime void Control()

Метод для контроля текущего времени и обновления флагов начала и окончания нового дня.

Метод · CTime bool TradeTimeCalculate()

Метод для расчёта временных границ торговой сессии с корректировкой через полночь.

Метод · CTime bool CalculateTime(datetime &m_time,string text,bool is_start)

Метод для разбора и валидации времени из строки формата Ч:М:С с присвоением результату в datetime.

Метод · CTime string TextErrorTime(bool is_start)

Метод, возвращающий текстовое сообщение об ошибке при некорректном вводе времени.

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

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

??#include "Button.mqh"



class CTime{

public:

   bool              is_new_day;

   bool              is_end_day;

   bool              is_midnight;

   datetime          cur_time;

   datetime          time[2];

   int               day;

                     CTime()  {ZeroMemory(this);}

   void              Control();

   bool              TradeTimeCalculate();

   bool              CalculateTime(datetime &m_time,string text,bool is_start);

   string            TextErrorTime(bool is_start) {string m_text=(is_start)?"=0G0;0 B>@3>2":">:>=G0=8O B>@3>2";return(m_text);}

  };

//---------------------------------------------------

CTime::Control(void){

   cur_time=TimeCurrent();

   if (::is_time_work&&time[0]!=time[1]){

      is_new_day=false;

      if (is_end_day&&cur_time>=time[0]){

         is_new_day=true;

         is_end_day=false;

         time[1]+=_DAY;}

      if (!is_end_day&&cur_time>=time[1]){

         is_end_day=true;

         time[0]+=_DAY;}}

   else{

      int m_day=Day();

      if (is_new_day=(m_day!=day)) day=m_day;}}

//----------------------------------------------------

bool CTime::TradeTimeCalculate(void){

   cur_time=TimeCurrent();

   bool res_0=CalculateTime(time[0],::time_start,true),

        res_1=CalculateTime(time[1],::time_end,false);

   if (!res_0||!res_1) return(false);

   is_midnight=(time[0]>time[1]);

   if (time[0]==time[1]) return(true);

   if (cur_time>=time[0]&&cur_time>time[1]){

      if(time[0]<time[1]) {time[0]+=_DAY; is_end_day=true; return(true);}

      if(time[0]>time[1]) {time[1]+=_DAY; return(true);}}

   if (cur_time<time[0]&&cur_time<=time[1]

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

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

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

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

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

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

Стоимость полного кода
589,20₽ ≈ $7.20