MQL4 - automated forex trading   /  

Статьи

Cтатьи  MetaTrader 5  Вот мы и получили долгожданные MetaTrader 5 и MQL5 Авторизуйтесь или зарегистрируйтесь , чтобы добавить новую статью


Почитай статьи про MQL5
Готовься к Чемпионату -

Эта статья о возможностях
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Вот мы и получили долгожданные MetaTrader 5 и MQL5 [ en ]

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


Рис. 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); //мы каждую секунду будем обращаться к OnTimer()
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit()
  {
   EventKillTimer(); // обязательно вызвать при выходе отмену обращения к таймеру
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   MqlDateTime str1;
   TimeGMT(str1); // новая функция получить время GMT
   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

Создана: 24.09.2009  Автор: Yuriy Zaytsev
Предупреждение: все права на данные материалы принадлежат MetaQuotes Software Corp. Полная или частичная перепечатка запрещена.
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5

Описание особенностей создания индикаторов в MQL5 в сравнении с MQL4, а также описание новых возможностей.

73 комментария: 1 2 3 4 5 6 7 8   Авторизуйтесь или зарегистрируйтесь
olegf0x писал(а):
Не нашел информации по оффлайн графикам, возможно ли в МТ5 создать свой символ?
На данный момент такой возможности нет. Возможно, появится в будущем.
22.12.2009 10:09 Rosh
Не нашел информации по оффлайн графикам, возможно ли в МТ5 создать свой символ?
19.12.2009 23:55 olegf0x

Я так понимаю в МТ5 нет возможности выставлять противоположные ордера или "замок".

В чем причина таких ограничений? Только не надо говорить, что это бессмысленно. Смысл есть только в расширении возможностей, а не сужении их.

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

С уважением,

Александр

10.12.2009 15:08 religare
m_o_jul писал(а):

Добрый день. Вопрос MQL5 - запись данных в файл.

Как дописать данные в файл? Пробовала открыть с помощью команды FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открыватеся. Хэндл - 1. Но при записи в файл (FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е. ранее записанные данные пропадают. Подскажите в чем ошибка? Всего доброго.

Попробуйте

FileOpen("SomeFile.txt",FILE_READ|FILE_WRITE|FILE_ANSI); 
30.10.2009 10:06 Rosh

Добрый день. Вопрос MQL5 - запись данных в файл.

Как дописать данные в файл? Пробовала открыть с помощью команды FileOpen("SomeFile.txt",FILE_BIN|FILE_SHARE_READ|FILE_ANSI); - файл открыватеся. Хэндл - 1. Но при записи в файл (FileWriteString(lnFHW,"Some String"); - данные не пишутся. Если же открыть файл с флагом FILE_WRITE - файл открывается нулевой длины, т.е. ранее записанные данные пропадают. Подскажите в чем ошибка? Всего доброго.

30.10.2009 09:34 m_o_jul
Огромным минусом МТ4 является то,что нет адекватной возможности просматривать большое кол-во графиков.При превышении определенного кол-ва инструментов начинается лаг в управлении.Будет ли устранена эта проблема в новом терминале?
20.10.2009 06:17 sayayay
Справку MQL5 перевел в PDF формат чтобы было удобнее распечатывать . Кому надо пожалуйста Справочник MQL5 .
15.10.2009 20:23 lucka88

Уважаемые господа!

Есть два вопроса
1. Какие идеи есть по поводу наработанного материала (в исходниках)
2. Как использовать на новой платформе компилированный материал (ладно с бесплатными вещами особенно интересно какие есть идеи по поводу платных)

Может кто слышал о перепроцессоре или декомпиляторе (или какие другие идеи или какие примочки есть)
PS
Особое спасибо за ООП

PPS
НЕУЖЕЛИ ЭТО НИКОГО НЕ ИНТЕРЕСУЕТ (или уже есть готовое решение)

12.10.2009 02:41 GregoryK
VikinGOO7 писал(а):
AndyGri писал(а):
Здорово, конечно!!!. Но есть вопрос. Кто получил и где взять? :)

Во!!! Во!!! хотя-бы HELP выложили.
Смотрите Справка по языку MQL5
07.10.2009 12:29 Rosh
AndyGri писал(а):
Здорово, конечно!!!. Но есть вопрос. Кто получил и где взять? :)

Во!!! Во!!! хотя-бы HELP выложили.
07.10.2009 10:25 VikinGOO7
73 комментария: 1 2 3 4 5 6 7 8