class CTradeTime
Класс для управления и проверки торгового временного окна.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «сtradetime.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
CTradeTime — это библиотека на языке MQL, предназначенная для управления торговым временем. Класс позволяет задать временной интервал (начало и конец) в виде строк и проверять, попадает ли текущее или указанное время в этот интервал.
Конструктор принимает два параметра — строки начала и окончания торгового времени в формате Ч:М:С. При инициализации происходит валидация формата и вычисление допустимого диапазона.
Метод IsTrueFormat возвращает результат валидации введённого формата времени. Метод IsTradeAlloed позволяет узнать, находится ли текущий (или переданный) момент времени внутри заданного торгового окна, учитывая возможность перехода границ через полночь.
Классов: 1 · методов: 2 · конструкторов: 1 · деструкторов: 0 · отдельных функций: 0
class CTradeTime
Класс для управления и проверки торгового временного окна.
CTradeTime(string mTimeStart,string mTimeStop)
Конструктор, принимающий строки начала и окончания торгового времени.
bool IsTrueFormat()
Возвращает, был ли корректно задан формат времени.
bool IsTradeAlloed(datetime mTime)
Проверяет, разрешена ли торговля в указанный момент времени.
#ifndef _C_TRADE_TIME_
#define _C_TRADE_TIME_
#define TIME_DAY 86400
class CTradeTime{
private:
bool cIsTrue;
datetime cTimeCurrent;
datetime cTradeTime[2];
public:
CTradeTime(string mTimeStart,string mTimeStop);
bool IsTrueFormat() {return cIsTrue;}
bool IsTradeAlloed(datetime mTime=0);
private:
bool StringToTimeStruct(string mTimeStart,string mTimeStop,MqlDateTime &mTimeCurStruct,int mId);
void Control(datetime mTime);
bool CheckTime();
};
CTradeTime::CTradeTime(string mTimeStart,string mTimeStop){
MqlDateTime mTimeStruct;
cTimeCurrent=TimeCurrent();
cIsTrue=true;
if (!TimeToStruct(cTimeCurrent,mTimeStruct)) {cTimeCurrent=0; cIsTrue=false; return;}
for (int i=0;i<2;i++)
if (!StringToTimeStruct(mTimeStart,mTimeStop,mTimeStruct,i)) {cTimeCurrent=0; cIsTrue=false; return;}
if (cTradeTime[0]==cTradeTime[1]) return;
if (cTimeCurrent>cTradeTime[0]&&cTimeCurrent>=cTradeTime[1]){
if(cTradeTime[0]<cTradeTime[1]) {cTradeTime[0]+=TIME_DAY; return;}
if(cTradeTime[0]>cTradeTime[1]) {cTradeTime[1]+=TIME_DAY; return;}}
if (cTimeCurrent<=cTradeTime[0]&&cTimeCurrent<cTradeTime[1]){
if(cTradeTime[0]<cTradeTime[1]) {cTradeTime[1]-=TIME_DAY; return;}
if(cTradeTime[0]>cTradeTime[1]) {cTradeTime[0]-=TIME_DAY; return;}}}
bool CTradeTime::StringToTimeStruct(string mTimeStart,string mTimeStop,MqlDateTime &mTimeCurStruct,int mId){
if (mId>=ArraySize(cTradeTime)) return false;
MqlDateTime mTimeStruct=mTimeCurStruct;
string mData[],
mText=mId==0?mTimeStart:mTimeStop;
int mSize=StringSplit(mText,StringGetCharacter(":",0),mData);
Показано первые 50% кода (символов: 2910)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.