Все нижеизложенное является плодом моего извращенного чтением smart-lab-а и программированием воображения и никогда не происходило ни в одной из известных мне реальностей. Любые совпадения случайны, а действующие лица выдуманы.
Электрические полусумерки, хаотически прорезаемые редкими светящимися пятнами работающих мониторов и мягко-приглушенным светодиодным флером пары настольных ламп покрывали открытое офисное пространство. За окном, в тревожном свете уличного фонаря бесновались снежные белые вихри декабрьской вьюги. Временами, эта хаотическая пляска на миг замирала, а в следующую секунду ветер срывался с места и яростно тащил стылые хлопья вдоль окна так, что начинало казаться что это само здание несется в пространстве, продирая угловато-уродливыми контурами пушистые снежные завесы.
Илмар потер лицо руками и вернул взгляд на монитор, почти все пространство которого занимало мягко мерцающее, похожее на галактические скопления светящееся облако. В разных местах облака периодически появлялись и постепенно угасали затем цветные точки, сопровождаемые длинными строками дробных чисел. В целом вид этой виртуальной вселенной порождал ощущение спокойной надежности, за исключением одной очень небольшой области, смещенной от центра влево.
Всех приветствую. Продолжаем изучение языка MQL4. В прошлый раз мы говорили о строковом типе данных, а сегодня поговорим о типе данных, который позволяет хранить дату и время, — datetime. На самом деле мы уже с ним знакомились, когда говорили о целых типах данных. Потому что тип datetime является целым и хранит целочисленное значение, которое равно количеству секунд, прошедших с 1 января 1970 года. Эта дата является началом диапазона значений, которые может хранить тип datetime. Конечной датой является 31 декабря 3000 года.
Отдельное внимание уделить типу данных datetime я решил потому, что мы не затрагивали самый простой и удобный способ задания даты – литеральный. Любые дату и время можно задать в виде целого числа, равного количеству секунд прошедших с 1 января 1970 года 00:00:00. Только это совершенно неудобно. Литеральный способ записи позволяет указывать сразу нужную дату и время, заключая их в одинарные кавычки, перед которыми указывается буква D, — первая буква в названии типа данных datetime. Литеральный способ записи выглядит следующим образом: D’YYYY.MM.DD HH:MM:SS’, например D’2018.11.17 12:10:00’ – 17 ноября 2018-го года, 12 часов, 10 минут, 0 секунд. В указании даты можно порядок: год, месяц, день поменять на: день, месяц, год. Оба варианта будут корректны. Что касается времени, то его можно указывать до необходимой точности. Например, если секунды не важны, можно указать только часы и минуты, — HH:MM. Если и минуты не требуются, можно указать только часы, — HH. Можно указать только дату, а время не указывать. В этом случае время будет равно полночи, т.е. 0 часов, 0 минут, 0 секунд. Если указать только время, но не указать дату, ошибки не будет, но компилятор выдаст предупреждение о неполной литеральной записи.
Всех приветствую. Продолжаем изучение языка MQL4.
В прошлый раз мы рассмотрели целые типы данных, а сегодня поговорим о вещественных типах. Они предназначены для того, чтобы хранить не только целую, но и дробную часть числа. Поэтому они гораздо более универсальны, чем целые типы данных. В плане математических операций с целыми числами мы ограничены тем, что результат обязательно должен быть целым, иначе мы потеряем дробную часть числа. По этой причине целые типы чаще всего применяются для нумерации элементов массива и для всевозможных счётчиков, когда нам необходимо посчитать сколько раз выполнилось какое-либо условие. Например, перебрать все активные ордера и посчитать сколько из них каждого типа: (buy, sell, buy stop, buy limit, sell stop, sell limit).
Вещественные типы в этом смысле могут применяться гораздо шире, в самых разных математических операциях, потому что хранят целую и дробную часть числа.
Вещественных типов данных в языке MQL4 (и в MQL5 тоже) всего 2:
//-------------------------------------------------------------------------------------------- struct sDataBar { ... }; //--------------------------------------------------------------------------------------------
sDataBar OsnDataBar; // Структура с ДАННЫМИ на баре для основного ТФ sDataBar HlpDataBar; // Структура с ДАННЫМИ на баре для вспомогательного ТФ
MathDataForBar(OsnDataBar, i, 1); MathDataForBar(HlpDataBar, i, 2);
void MathDataForBar(sDataBar &DataBar,int i, int variant) { ... //делаю с данными шпили вили )) ... }