Я очень кратко пройду по некоторым моментам.

Рис. 1. Это не Photoshop - это MQL5.
Практически все, что меня и многих других интересовало в MQL5 и MT5, разработчики
реализовали и выполнили на высочайшем уровне
Основные базовые изменения MQL5 - это введения ООП (Объектно-ориентированное программирование).
Я не стану останавливаться на ООП,
просто отмечу, что для профессиональных
программистов стало больше возможностей, а для тех, кто научился писать на MQL4 и не знает
ООП, есть радостная новость: они могут
вполне писать на MQL5 в стиле MQL4, не пользуясь ООП. Разница будет в функционале, который придется
освоить заново.
Возьмем простой пример:
переменных Ask и Bid больше не существует. И чтобы получить эти значения Bid необходимо вызвать функцию
SymbolInfoDouble(Symbol(),SYMBOL_BID);
Не существует часто используемых Low[0] или iLow ( Symbol(), PERIOD_D1, 0 ), но вы легко можете их воссоздать. Зато в функциях работы с историческими данными появилась возможность читать в память исторические данные
от точки до точки, от одного конкретного
бара до другого конкретного бара, или от указанного
времени до указанного. Ранее чтение серии данных приводило к загрузке в память всего
видимого диапазона, нужен он вам или нет, но он читался, и если имелась необходимость
начитать M1, то она читалась от 1999 года( при наличии истории) до текущего дня, часа
и минуты.
Сейчас можно
читать только нужный диапазон, что значительно экономит время и память.
MqlRates rates_arrayG[];
Int Bar=30; // прочитать только 30 баров начиная с нулевого
iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);
Эти нововведения
значительно экономят память и время одновременно.
Такое изменение функционала не пугает, просто необходимо время для освоения новых функций – аналогов.
Некоторые функциональные нововведения, которые я ждал от MQL:
- Функция OnTimer() для обработки событий таймера (теперь не требуется зацикливать эксперт, чтобы он работал с заданной периодичностью, независящей от прихода тика);
- OnTrade() - функция для обработки торговых собютий - открытия, закрытия или измененияобъема торговой позиции;
- OnChartEvent() - обработка событий мыши и клавиатуры на графике.
Кратко о них.
Функция OnTimer() вызывается, если предварительно инициировать таймер в предопределенной функции OnInit (обработчике события инициализации эксперта).
Пример:
int OnInit()
{
EventSetTimer(1);
}
void OnDeinit()
{
EventKillTimer();
}
void OnTimer()
{
MqlDateTime str1;
TimeGMT(str1);
Comment(str1.hour
,str1.min
,str1.sec
,str1.day
,str1.mon
,str1.year
,str1.day_of_year
,OrdersTotal()
,PositionsTotal()
);
}
Таким образом, можно получать управление не только по
приходу тика, как раньше, но и от таймера, что позволяет писать полноценные
программы, управляемые в реальном времени. Такая возможность дает создавать
более полноценные системы.
Очень радует функция OnTrade(). Эта функция вызывается в момент, когда срабатывает любое из торговых событий: выставление
ордера, срабатывание StopLoss или TakeProfit, изменение уровней stoploss или takeprofit, выставление/удаление отложенного ордера.
Теперь мониторить события по торговым операциям значительно легче, чем
раньше. Отпадает необходимость в циклах проверки состояния ордеров на тиках или на
барах, которые ранее приходилось делать в
MQL4, что значительно снижало быстродействие программ, особенно актуальное
при оптимизации.
Коснемся функции OnChartEvent(). Вызов функции происходит при нескольких событиях. Мне не удалось оттестировать каждое, но список событий
впечатляет:
- CHARTEVENT_KEYDOWN — событие нажатия
клавиатуры;
- CHARTEVENT_OBJECT_CLICK — событие щелчка мыши на графическом объекте,
принадлежащего графику;
- CHARTEVENT_OBJECT_DRAG — событие
перемещения графического объекта при помощи мыши;
- CHARTEVENT_OBJECT_ENDEDIT — событие
окончания редактирования текста CHARTEVENT_CUSTOM+n — идентификатор
пользовательского события
- CHARTEVENT_CUSTOM_LAST — последний
В MQL5 появилась возможность управлять торговлей и графикой на новом
функциональном уровне, что нам и обещали разработчики.
Новые графические объекты, конпки, поля ввода. Управление графиками теперь стало фантастическим, можно даже вставлять
картинки из файлов - для
любителей нестандартных дизайнов большой простор для фантазии. Это не
Photoshop, это
возможности MQL5 и MetaTrader 5. Появились новые возможности, вы можете создавать свои кнопки и свои поля
ввода, добавив например в интерфейс кнопку которая закроет все открытые
ордера. или быстрый бай или селл в один клик, с заранее выставленными
параметрами стопа и тейка.

Рис. 2. Графические объекты позволяют создавать информационные панно.
Есть маленькое неприятное событие: из индикаторов нельзя
создавать объекты. Разработчики шли на это сознательно, и взамен мы получим
быстродействие индикаторов. Приятная новость в том, что они прекрасно это понимают
и, вероятно, сделают возможность запускать на одном чарте несколько экспертов. Тем
самым можно будет создавать эксперты-индикаторы с объектами, без торговых
функций. Такие эксперты можно создавать
и сейчас – они просто будут работать как индикаторы. Но при необходимости сейчас можно выйти из положения, запустив на одном чарте торгующего эксперта,
на другом запустить эксперта-индикатора, создающего объекты, и наладить между
ними обмен.
К примеру, переложить свой индикатор пробоя с MQL4 на MQL5 мне удалось за
несколько часов. Основная
часть времени ушла на освоение
функционала и отладку, при этом код стал
короче.
Если говорить о самом терминале, то поражает количество
таймфреймов, тут мне кажется даже перебор. Но обилие минутных таймфреймов, вероятно,
обрадует тех, кто так давно об этом мечтал. Мечтатели
о нестандартных таймфремах задумаются, остался один шаг до создания
задаваемого произвольного таймфрейма, что,
впрочем, считаю излишним. Способ хранения данных теперь только минутка, и нет проблем с
синхронизацией разных таймфреймов - это очень важное технологическое решение.
В каталоге HISTORY теперь нет файлов по разным таймфреймам

Рис. 3. Вся история теперь хранится в одном файле.
Приятные нововведения в том, что теперь можно очищать
логи

Рис. 4. Одним нажатием кнопки очищаем Журнал экспертов от ставших ненужными сообщений.
Это очень краткий обзор МТ5, я не могу описать все новшества системы за столь короткий
период времени - старт тестирования
прошел 9-9-2009. Это символическая дата, и я уверен, что это будет счастливым числом. И, как
подозреваю, дата выбрана неслучайно.
Всего несколько дней у меня на руках бета-версия терминала MetaTrader 5 и MQL5. Я не
успел опробовать все, что в нем есть нового, но то, что есть, уже впечатляет.
Волшебники из MetaQuotes сделали великолепный продукт. Сам я - разработчик с 25 летним стажем, видел не один проект при пуске и могу с уверенностью сказать это.
С уважением
Юрий Зайцев
Skype: yurazyuraz
yzh@mail.ru