Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Стохастический Осциллятор (Stochastic Oscillator). 9 страница




int Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектов

ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива

for(int k=0; k<=Quant_Del; i++) // Удаляем объекты с именами,..

ObjectDelete(Name_Del[i]); //.. имеющимися в массиве

return; // Выход из deinit()

}

//-------------------------------------------------------------- 10 --

int Create(int Ind_Bar, int Line) // Пользовательская функция..

{ //..создания объекта

color Color; // Цвет объекта

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара

double O_Bar=Open [Ind_Bar]; // Цена открытия бара

double C_Bar=Close[Ind_Bar]; // Цена закрытия бара

double H_Bar=High [Ind_Bar]; // Максимальная цена бара

double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

 

string Nom_Lin =Line + "_"; // Строка - номер линии

// string Nom_Lin = DoubleToStr(Line,0)+"_";// Можно и так

string Str_Time=TimeToStr(T_Bar); // Строка - время откр.

string His_Name=Prefix+Nom_Lin+Str_Time;// Имя созаваемого объект

if (O_Bar < C_Bar) Color=Blue; // Выбор цвета в зависимости..

if (O_Bar >C_Bar) Color=Red; //.. от характеристик бара

if (O_Bar ==C_Bar) Color=Green;

 

switch(Line) // Тонкая или толстая линия

{

case 1: // Тонкая линия

ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar);

break; // Выход из switch

case 2: // Толстая линия

ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar);

ObjectSet(His_Name, OBJPROP_WIDTH, 3);// Стиль

}

ObjectSet(His_Name, OBJPROP_COLOR, Color); // Цвет

ObjectSet(His_Name, OBJPROP_RAY, false); // Луч

ObjectSetText(His_Name,"Объект создан экспертом",10);// Описание

return; // Выход из польз. ф-ии

}

//-------------------------------------------------------------- 11 --

Для создания графических объектов в программе имеется пользовательская функция Create() (блок 10-11). В качестве передаваемых параметров в этой функции используются переменная Ind_Bar, указывающая индекс бара, на котором необходимо создать объект, и Line - номер объекта (1я или 2я линия).

При формировании имени создаваемого объекта His_Name используются три составляющих:

string His_Name = Prefix+Nom_Lin+Str_Time;// Имя создаваемого объект

Значение переменной Prefix задано программистом в головной части программы и при выполнении программы не изменяется:

string Prefix = "Paint_";

Значение переменной Nom_Lin получено в результате вычислений:

string Nom_Lin = Line + "_"; // Строка - номер линии
// string Nom_Lin = DoubleToStr(Line,0)+"_";// Можно и так

Здесь значение целой переменной (при вычислении выражения в правой части выражения) преобразуется к типу, имеющему более высокий приоритет, а именно, к типу string. В результате, в зависимости от значения переменной Line, переменная Nom_Lin получает значение "1_"или "2_".

Для вычисления значения переменной Str_Time используется функция преобразования данных TimeToStr():

string Str_Time = TimeToStr(T_Bar); // Строка - время откр.

Обратите внимание, функция TimeToStr() имеет умолчательные значения. В данном случае именно такие значения параметра mode и требуются: "yyyy.mm.dd hh:mi"; использовать дополнительно секунды нет необходимости, потому что минимальный таймфрейм равен 1 минуте.

Для использования в имени объекта можно было бы применить и такой способ вычисления Str_Time:

string Str_Time = T_Bar;

В этом случае переменная Str_Time получила бы значение, равное количеству секунд, прошедших с 01.01.1970. Чтобы увидеть разницу, можно выполнить программу, содержащую такой код:

int init()

{

string String_Time = TimeToStr(Time[0]); // Время в формате.

string String_Sec = Time[0]; // Количество секунд

Alert("String_Time = ",String_Time," String_Sec = ",String_Sec);

return;

}

В результате исполнения этой программы (в зависимости от времени открытия нулевого бара) на экран будет выведено сообщение:

String_Time = 2007.03.22 19:10 String_Sec = 1174590600

Первый вариант, реализованный в эксперте strings.mq4, несколько более информативен, поэтому в данном случае предпочтение отдано ему (с точки зрения алгоритма, реализованного в программе, эти варианты равнозначны).

В последующих строках пользовательской функции Create() создаётся объект с вычисленным именем His_Name, содержащим сведения о времени открытия бара, и со свойствами, соответствующими номеру линии Line, а также с цветом в зависимости от характеристик бара. Для каждого объекта указывается также значение текстового описания: "Объект создан экспертом".

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

В блоке 6-7 определяется первая координата исследуемого объекта. Если при этом объект не найден, то он создаётся с помощью Create(). А если объект существует, то определяются другие его координаты и вычисляется соответствуют ли его свойства характеристикам бара (блок 7-8). При обнаружении любого несоответствия объект удаляется и создаётся вновь (с тем же именем), но уже с правильными свойствами.

При исполнении функции deinit() решается ещё одна задача: из всей совокупности объектов, имеющихся в окне финансового инструмента, необходимо удалить только те, которые созданы экспертом. Это делается в два этапа: на первом этапе в массив Name_Del[] запоминаются имена всех объектов, которые необходимо удалить, а затем, в отдельном цикле, все эти объекты удаляются. Общее количество всех объектов в окне (в том числе, созданных программой и установленных пользователем вручную) вычисляется с помощью функции ObjectsTotal():

int Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектов

Количество раскрашиваемых баров устанавливается пользователем во внешней переменной, т.е. заранее неизвестно сколько графических объектов придётся удалять. Поэтому строковый массив, несущий имена удаляемых объектов, объявляется с количеством элементов, равным 1, а затем размер массива программно изменяется - количество его элементов увеличивается до общего количества объектов.

ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива

Для того, чтобы отобрать объекты, созданные экспертом, функции deinit() имеется цикл for, в котором производится анализ имени каждого объекта.

string Obj_Name = ObjectName(k); // Запрашиваем имя объекта

Признаком, отличающим "наши" объекты от всех других, является префикс "Paint_", с которого начинается имя каждого созданного программой объекта. Для анализа названия объекта необходимо извлечь из строковой переменной, являющейся уникальным именем объекта, начальную часть (в данном случае 6 символов), а затем сравнить полученное значение со значением переменной Prefix. Если обнаружится совпадение, то исследуемый объект подлежит удалению, если же нет, то объект удалять не нужно.

 

Функция StringSubstr()

string StringSubstr(string text, int start, int length=0)

Функция извлекает подстроку из текстовой строки, начинающейся c указанной позиции. Функция возвращает копию извлеченной подстроки, если возможно, иначе возвращается пустая строка.

Параметры:

text - строка, из которой должна быть извлечена подстрока;

start - начальная позиция подстроки. Может быть от 0 до StringLen(text)-1;

length - длина извлекаемой подстроки. Если значение параметра меньше или равно 0 либо параметр не задан, то будет извлекаться подстрока, начиная с указанной позиции и до конца строки.

 

В рассматриваемом примере извлечение подстроки из имени объекта выполняется так:

string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим

В данном случае из строковой переменной Obj_Name извлекаются первые 6 символов, начиная с нулевого. Обратите внимание, счёт любых индексов в MQL4 (баров, массивов), строк в списке ордеров, а также номер позиции в строке, начинается с 0, в то же время количественный счёт начинается с 1.

Извлечённая подстрока (значение типа string) присваивается строковой переменной Head. Если имя объекта (и сам объект) было создано рассматриваемым экспертом, то значение извлечённой подстроки будет таким: "Paint_". Если же анализируется другое имя, то искомое значение будет другим. Например, для имени объекта "StdDev Channel 23109" значение извлечённой подстроки будет таким: "StdDev", а для объекта с именем "Fibo 22800" - таким: "Fibo 2".

В последующих строках значение переменной Head сравнивается со значением переменной Prefix:

if (Head == Prefix) // Найден объект,..
{ //.. начинающийся с Paint_

И если эти значения равны, то анализируемое имя объекта заносится в массив Name_Del[] имён объектов, назначенных к удалению. В следующем цикле for удаляются все объекты, имена которых содержатся в этом массиве (отдельно нужно заметить, что в первом цикле for удалять объекты нельзя, т.к. в этом случае после каждого удаления изменится общее количество объектов и их нумерация, в результате чего некоторые имена объектов будут пропущены).

Во время исполнения эксперта strings.mq4 ценовой график будет выглядеть так:


Рис. 142. Ценовой график раскрашен с помощью графических объектов (strings.mq4).

На Рис. 142 кроме группы объектов, покрывающих ценовой график, показаны два других объекта, установленные пользователем вручную, - канал регрессии и уровни Фибоначчи. После прекращения работы эксперта созданные им объекты будут удалены, а объекты, установленные пользователем, останутся в окне финансового инструмента. Указанный результат получен благодаря использованию в программе строковых функций, позволяющих создавать и анализировать строковые значения, в том числе, имена графических объектов.

 

Строковые функции

 

Функция Краткое описание
StringConcatenate Формирует строку из переданных параметров и возвращает её. Параметры могут иметь любой тип. Количество параметров не может превышать 64.
StringFind Поиск подстроки. Возвращает номер позиции в строке, с которой начинается искомая подстрока, либо -1, если подстрока не найдена.
StringGetChar Возвращает значение символа, расположенного в указанной позиции строки.
StringLen Возвращает число символов в строке.
StringSetChar Возвращает копию строки с измененным значением символа в указанной позиции.
StringSubstr Извлекает подстроку из текстовой строки, начинающейся c указанной позиции. Функция возвращает копию извлеченной подстроки, если возможно, иначе возвращается пустая строка.
StringTrimLeft Функция урезает символы перевода каретки, пробелы и символы табуляции в левой части строки. Функция возвращает копию преобразованной строки, если это возможно, в противном случае возвращается пустая строка.
StringTrimRight Функция урезает символы перевода каретки, пробелы и символы табуляции в правой части строки. Функция возвращает копию преобразованной строки, если это возможно, в противном случае возвращается пустая строка.

 

Функции преобразования данных

 

Функция Краткое описание
CharToStr Преобразование кода символа в односимвольную строку.
DoubleToStr Преобразование числового значения в текстовую строку, содержащую символьное представление числа в указанном формате точности.
NormalizeDouble Округление числа с плавающей запятой до указанной точности. Рассчитываемые значения StopLoss, TakeProfit, а также значения цены открытия отложенных ордеров должны быть нормализованы с точностью, значение которой хранится в предопределенной переменной Digits.
StrToDouble Преобразование строки, содержащей символьное представление числа, в число типа double (формат двойной точности с плавающей точкой).
StrToInteger Преобразование строки, содержащей символьное представление числа, в число типа int (целое).
StrToTime Преобразование строки, содержащей время и/или дату в формате "yyyy.mm.dd [hh:mi]", в число типа datetime (количество секунд, прошедших с 01.01.1970).
TimeToStr Преобразование значения, содержащего время в секундах, прошедшее с 01.01.1970, в строку формата "yyyy.mm.dd hh:mi".

 

Для получения подробного описания этих и других функций необходимо обратиться к справочной документации на MQL4.community, сайте MetaQuotes Software Corp. или к разделу "Справка" в редакторе MetaEditor.

Дата и время

 

Информационно-торговая система MetaTrader использует показания двух источников времени - локальное (компьютерное) время и серверное время.

Локальное время - это время, установленное на локальном компьютере.

Серверное время - это время, установленное на сервере.

 

Функция TimeLocal()

datetime TimeLocal()

Функция возвращает локальное компьютерное время в виде количества секунд, прошедших после 00:00 1 января 1970 года. Замечание: при тестировании локальное время моделируется и совпадает с моделированным последним известным временем сервера.

 

Подавляющее большинство событий, происходящих в клиентском терминале, учитываются в соответствии с серверным временем. По серверному времени отмечается приход тика, начало нового бара, открытие и закрытие ордеров. Для получения значения серверного времени, соответствующего текущему моменту, необходимо исполнить функцию TimeCurrent():

Функция TimeCurrent()

datetime TimeCurrent()

Функция возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года. Перед запуском на исполнение специальных функций клиентский терминал обновляет время прихода последней котировки (наряду с другими переменными окружения). Каждый тик характеризуется своим значением серверного времени, которое можно получить с помощью TimeCurrent(). В процессе выполнения программы это значение может быть изменено только в результате вызова функции RefreshRates() и только в том случае, если с момента последнего исполнения RefreshRates() данные были фактически обновлены, т.е с сервера поступили новые значения каких-либо переменных окружения.

Время открытия бара Time[i], как правило, не совпадает со временем поступления тика. Время открытия бара для любого таймфрейма всегда кратно таймфрейму. Любой первый тик, возникший в пределах таймфрейма, является барообразующим; если же в пределах таймфрейма не поступило ни одного тика, то и бар в пределах этого таймфрейма не образуется.

Например, тик, поступивший в терминал в момент (серверного) времени t 0, приводит к образованию бара со временем открытия Time[i+2] (Рис. 143). Момент, отмеченный началом таймфрейма, не совпадает с моментом t 0, а в общем случае может совпадать случайно. Последующие тики, поступающие в терминал в пределах того же таймфрейма (в моменты t 1 и t 2), могут изменить характеристики бара, например, максимальную цену или цену закрытия, но уже не влияют на время открытия бара. Время закрытия бара в информационно-торговой системе MetaTrader не учитывается (формально временем закрытия бара можно считать время поступления последнего тика в пределах таймфрейма, как показано на Рис. 143, или время начала следующего таймфрейма).


Рис. 143. Порядок формирования баров в в информационно-торговой системе MetaTrader.

На Рис. 143. показано, что на некоторых временных интервалах, равных таймфрейму, бары могут не образовываться. Так, в промежуток между временем поступления тика t 5 и временем поступления очередного тика t 6 укладывается полный таймфрейм, поэтому в данном временном промежутке новый бар не образовался. Таким образом, время открытия бара может отличаться от времени открытия соседнего бара более, чем на один таймфрейм, но всегда кратно таймфрейму. Для наглядного представления порядка формирования баров можно исполнить эксперт timebars.mq4, который выводит время поступления тика и время открытия бара:

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

// timebars.mq4

// Предназначен для использования в качестве примера в учебнике MQL4.

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

int start() // Спец. функция start

{

Alert("TimeCurrent=",TimeToStr(TimeCurrent(),TIME_SECONDS),

" Time[0]=",TimeToStr(Time[0],TIME_SECONDS));

return; // Выход из start()

}

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

На Рис. 144 представлены результаты работы эксперта timebars.mq4. Очевидно, что первый тик на очередном временном промежутке, длительностью 1 минуту, поступил в 14:29:12, при этом образовался новый бар, время открытия которого 14:29:00. Обратите внимание, в правом столбце окна сообщений отображается серверное время, а в левом столбце - локальное.


Рис. 144. Порядок формирования баров в в информационно-торговой системе MetaTrader.

В случае, если тики поступают редко (например, в период между окончанием европейской и началом азиатской сессии), то при исполнении эксперта timebars.mq4 можно наблюдать и другое явление - время открытия соседних баров может отличаться более, чем на 1 минуту (для минутного таймфрейма), при этом индексация баров сохраняется подряд, без пропусков.

Серверное время в разных серверах, установленных в разных дилинговых центрах, может отличаться. Время начала и окончания торгов также устанавливается на каждом сервере персонально и может не совпадать со временем начала или окончания очередного дня. В некоторых дилинговых центрах, например, выполнены такие настройки, при которых открытие торгов происходит в воскресенье, в 23:00 по серверному времени. Это приводит к образованию "неполноценных" дневных баров, фактическая продолжительность которых равна одному часу (Рис. 145).


Рис. 145. Различная баровая история в разных дилинговых центрах.

Использование функций даты и времени в MQL4 достаточно просто. Некоторые из них преобразуют серверное или локальное время, выраженное в количестве секунд, прошедших после 00:00 1 января 1970 года, в целое число, соответствующее часу, дню и пр. Другие функции возвращают целое значение, соответствующее текущему часу, минуте, дню и пр.

Функции TimeSeconds (), TimeMinute(), TimeHour(), TimeDay(), TimeMonth(), TimeYear(), TimeDayOfWeek () и TimeDayOfYear()

 

Это - группа подобных функций, возвращающих соответственно количество секунд, прошедших с начала минуты, минуту, час, день, месяц, год, день недели и день в году для указанного времени. Например:

int TimeMinute(datetime time)

Функция возвращает минуты для указанного времени.

Параметры:

time - дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.

int TimeDayOfWeek(datetime time)

Возвращает день недели (0-Воскресенье,1,2,3,4,5,6) для указанной даты.

Параметры:

time - дата, представленная в виде количества секунд, прошедших после 00:00 1 января 1970 года.

 

Указанные функции можно использовать, например, для анализа времени открытия любого бара. Ниже представлен эксперт bigbars.mq4 для поиска бара не менее заданного размера.

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

// bigbars.mq4

// Предназначен для использования в качестве примера в учебнике MQL4.

//--------------------------------------------------------------- 1 --

extern int Quant_Pt=20; // Количество пунктов

//--------------------------------------------------------------- 2 --

int start() // Спец. функция start

{

int H_L=0; // Высота бара

for(int i=0; H_L=Quant_Pt) // Если найден высокий бар

{

int YY=TimeYear(Time[i]); // Год

int MN=TimeMonth(Time[i]); // Месяц

int DD=TimeDay(Time[i]); // День

int HH=TimeHour(Time[i]); // Час

int MM=TimeMinute(Time[i]); // Минута

Comment("Последнее движение цены более ",Quant_Pt,//Вывод

" pt произошло ", DD,".",MN,".",YY," ",HH,":",MM);//сообщения

}

}

return; // Выход из start()

}

//--------------------------------------------------------------- 3 --

Эксперт bigbars.mq4 ищет ближайший бар, высота которого (разница между максимумом и минимумом) больше или равна значению, указанному пользователем во внешней переменной Quant_Pt. Дата и время найденного бара выводятся в окно финансового инструмента с помощью функции Comment().

 

Функции Seconds (), Minute(), Hour(), Day(), TimeMonth(), TimeYear(), DayOfWeek () и DayOfYear()

 

Это - группа подобных функций, возвращающих текущую секунду, минуту, час, день, месяц, год, день недели и день в году для последнего известного серверного времени. Последним известным серверным временем считается серверное время, соответствующее моменту старта программы (запуска на исполнение какой-либо специальной функции клиентским терминалом). В процессе исполнения специальной функции значение серверного времени не изменяется.

int Hour()

Возвращает текущий час (0,1,2,..23) последнего известного серверного времени. Замечание: при тестировании последнее известное время сервера моделируется.

int DayOfYear()

Возвращает текущий день года (1-1 января,..,365(6) - 31 декабря), т.е. день года последнего известного серверного времени. Замечание: при тестировании последнее известное время сервера моделируется.

Примером использования указанных функций может служить эксперт timeevents.mq4, выполняющий некоторые действия при наступлении заданного времени.

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

// timeevents.mq4

// Предназначен для использования в качестве примера в учебнике MQL4.

//--------------------------------------------------------------- 1 --

extern double Time_Cls=16.10; // Время закрытия ордеров

bool Flag_Time=false; // Флаг, сообщения ещё не было

//--------------------------------------------------------------- 2 --

int start() // Спец. функция start

{

int Cur_Hour=Hour(); // Серверное время в часах

double Cur_Min =Minute(); // Серверное время в минутах

double Cur_time=Cur_Hour + Cur_Min100; // Текущее время

Alert(Cur_time);

if (Cur_time>=Time_Cls) // Если наступило время события

Executor(); //.. то выполняем задуманное

return; // Выход из start()

}

//--------------------------------------------------------------- 3 --

int Executor() // Пользовательская функция

{

if (Flag_Time==false) // Если ещё не было сообщения..

{ //.. то сообщаем (1 раз)

Alert("Время важных новостей. Закройте ордера.");

Flag_Time=true; // Теперь сообщение уже было

}

return; // Выход из польз. функции

}

//--------------------------------------------------------------- 4 --

При исполнении специальной функции start() (блок 2-3) вычисляется серверное время в часах и минутах. В строке:

double Cur_time = Cur_Hour + Cur_Min100; // Текущее время

текущее серверное время представлено в виде действительной переменной Cur_time. Действительные переменные удобно использовать в операциях сравнения:

if (Cur_time >= Time_Cls) // Если наступило время события

Если текущее время оказывается больше или равным времени, указанному пользователем во внешней переменной Time_Cls, то вызывается для исполнения пользовательская функция Executor(). В данном примере пользовательская функция выводит сообщение с рекомендациями по ведению торгов. В общем случае эта функция может содержать любой код, например, осуществлять торговые операции, отправлять электронные письма, создавать графические объекты и пр.

Функции даты и времени

 

Функция Краткое описание
Day Возвращает текущий день месяца, т.е день месяца последнего известного времени сервера.
DayOfWeek Возвращает порядковый номер дня недели (воскресенье-0,1,2,3,4,5,6) последнего известного времени сервера.
DayOfYear Возвращает текущий день года (1-1 января,..,365(6) - 31 декабря), т.е день года последнего известного времени сервера.
Hour Возвращает текущий час (0,1,2,..23) последнего известного серверного времени на момент старта программы (в процессе выполнения программы это значение не меняется).
Minute Возвращает текущую минуту (0,1,2,..59) последнего известного серверного времени на момент старта программы (в процессе выполнения программы это значение не меняется).
Month Возвращает номер текущего месяца (1-Январь,2,3,4,5,6,7,8,9,10,11,12), т.е. номер месяца последнего известного времени сервера.
Seconds Возвращает количество секунд, прошедших с начала текущей минуты последнего известного серверного времени на момент старта программы (в процессе выполнения программы это значение не меняется).
TimeCurrent Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.
TimeDay Возвращает день месяца (1 - 31) для указанной даты.
TimeDayOfWeek Возвращает день недели (0-Воскресенье,1,2,3,4,5,6) для указанной даты.
TimeDayOfYear Возвращает день (1 - 1 января,..,365(6) - 31 декабря) года для указанной даты.
TimeHour Возвращает час для указанного времени.
TimeLocal Возвращает локальное компьютерное время в виде количества секунд, прошедших после 00:00 1 января 1970 года.
TimeMinute Возвращает минуты для указанного времени.
TimeMonth Возвращает номер месяца для указанного времени (1-Январь,2,3,4,5,6,7,8,9,10,11,12).
TimeSeconds Возвращает количество секунд, прошедших с начала минуты для указанного времени.
TimeYear Возвращает год для указанной даты. Возвращаемая величина может быть в диапазоне 1970-2037.
Year Возвращает текущий год, т.е. год последнего известного времени сервера.

 

Для получения подробного описания этих и других функций необходимо обратиться к справочной документации на MQL4.community, сайте MetaQuotes Software Corp. или к разделу "Справка" в редакторе MetaEditor.

Файловые операции

 

В MQL4 предусмотрена возможность работы с файлами, содержащими некоторый набор информации. Необходимость записи информации в файл, а также считывания информации из файла может возникнуть по нескольким причинам.

Файл может применяться как средство передачи данных в другую программу. В этом случае файл может быть создан прикладной программой и использоваться ею как приёмник информации. Например, при исполнении прикладной программы в файл может быть записана торговая история по счёту. В дальнейшем этот файл может быть прочитан другой программой, например, Excel, для построения диаграммы изменения баланса.

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




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 330; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.112 сек.