Вчера мы выпустили очередной релиз десктопного MetaTrader 5.
Что нового:
- Terminal: Изменен порядок отображения записей в журналах терминала и MetaEditor. Ранее в начале журнала показывались самые свежие записи, теперь — самые старые. Обратный порядок сортировки сделает чтение журнала более удобным и привычным.
- Terminal: В торговой истории у ордеров и сделок закрытия позиций в режиме хеджинга теперь показывается тикет закрытой позиции. Это облегчит поиск парных операций открытия и закрытия.
- Terminal: Исправлена ошибка, приводившая к копированию уровней SL/TP из имеющейся позиции в новую позицию по тому же инструменту. Ошибка проявлялась при использовании функций торговли одним кликом (например, на графике, в окне «Обзор рынка») в режиме хеджинга.
- Terminal: Исправлено отображение объектов-стрелок на экранах сверхвысокого разрешения (4К).
- MQL5: Добавлена функция ArrayPrint для вывода в журнал массивов простых типов и структур.
ArrayPrint выводит в журнал не все поля массива структур – поля-массивы и поля-указатели объектов пропускаются. Для вывода всех полей такой структуры понадобится собственная функция массового вывода с желаемым форматированием.
- MQL5: Исправлена ошибка сложения строк вида S1=S2+S1
- MQL5: Изменено поведение функции ArrayResize. При передаче в качестве параметра reserve_size значения -1 функция освобождает неиспользованную (зарезервированную) память, если при этом не происходит увеличение размера массива. Изменение размера массива на 0 со значением reserve_size=-1 эквивалентно вызову ArrayFree. Новое поведение позволяет оптимизировать использование памяти в MQL5-программах.
- MQL5: В стандартную библиотеку добавлены функции для построения графиков. Для использования включите файл MQL5\Include\Graphics\Graphic.mqh в свой проект.
Построение графика из 3 серий данных при помощи GraphPlot:
#include <Graphics/Graphic.mqh>
double Func1(double x) { return MathPow(x,2); }
double Func2(double x) { return MathPow(x,3); }
double Func3(double x) { return MathPow(x,4); }
void OnStart()
{
GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES);
}
Результат:
Построение графика на основе массива данных при помощи GraphPlot:
#include <Math/Stat/Binomial.mqh>
#include <Graphics/Graphic.mqh>
void OnStart(void)
{
double vars[101];
double results[101];
const int N=2000;
//---
MathSequence(0,N,20,vars);
MathProbabilityDensityBinomial(vars,N,M_PI/10,true,results);
ArrayPrint(results,4);
GraphPlot(results);
//---
}
Результат:
- MQL5: Обновлены функции работы с математической статистикой в стандартной библиотеке. Проведена большая проверка качества и точности всех функций как в MQL5-версии, так и в исходном языке R. Для контроля точности и скорости работы вместе со статистической библиотекой распространяются юнит-тесты. Они находятся в каталоге \MQL5\Scripts\UnitTests\Stat.
- TestStat.mq5 — основной тестовый скрипт для проверки результатов вычислений
- TestPrecision.mq5 — тест точности вычислений
- TestBenchmark.mq5 — тест с замером производительности вычислений
- Tester: Расширены настройки задержки исполнения торговых запросов при тестировании. Теперь проверить торгового робота можно в еще большем количестве разнообразных торговых условий: от идеального случая без задержек до любой задержки, заданной пользователем.
Ранее был доступен только режим произвольных задержек.
- Tester: Исправлена ошибка формирования тикового объема баров при тестировании в режиме OHLC на М1.
- Tester: Исправлено проставление времени открытия у ордеров и позиций с точностью до миллисекунд при торговле в режиме хеджинга.
- Tester: Исправлена ошибка «old tick» (тик устарел), появлявшаяся при мультивалютном либо мультитаймфреймовом тестировании в режиме реальных тиков.
- Tester: Ускорена работа функции CopyTicks в случае, когда запрошенные тики читались из базы на диске.
- MetaEditor: Команды работы с версионным хранилищем исходных кодов MQL5 Storage добавлены в контекстное меню файла в Навигаторе и на панель инструментов.
- MetaEditor: Исправлена ошибка, приводившая к нарушению целостности локальной базы MQL5 Storage при работе более чем с 1024 файлами в хранилище.
- MetaEditor: Исправлены ошибки отображения дерева файлов MQL5 Storage.
- MetaEditor: Исправлено отображение файла после массовой замены текста.
- Обновлена документация.
Обновление будет доступно через систему LiveUpdate.
Огорчили. СНОВА нет даже настраиваемой комиссии в тестере. Это несерьёзно. И до сих пор нет возможности использовать собственные исторические данные. Открытие-Брокер полных данных тоже не даёт. Как этой балалайкой вообще пользоваться в таких условиях?
Уважаемые разработчики Метатрейдера, скажите когда будет выполнено ваше обещание о собственных дата-фидах?
Потому что прошло больше года, а результат отсутствует. И второй вопрос: когда будет настраиваемая комиссия? Удивительно, что вы не осознаёте её важность.
Это мелочь.
Но это ошибка.
Часть комиссии в колонке комиссия.
Часть в вычетах со счета.
А она ~= биржевой.
Получается половина комиссий не учитывается.
Робот установлен на три инструмента.
При работе с объектами в роботе, по какой то причине происходит видимость данных объектов на глобальном уровне терминала между разными копиями роботов, при этом данный баг замечен при использовании OnBookEvent. Т.е. к примеру я создаю объект списка (из их стандартной поставки), активно передаю указатель на данный объект между своими объектами классов внутри одной копии робота. Но иногда видно, как объект списка в другой копии робота, содержащий 0 элементов, вдруг становится списком с содержанием 1 элемента. Уточняю, баг не в коде робота, это проявляется при выводе размера списка по условию > 0 во всех запущенных копиях одного и того же робота на разных инструментах. Список заполняется только при совершении сделок. Т.е. после совершения сделки к примеру на Si, я вижу вывод списка по данному инструменту и иногда проскакивает через данное условие список с другой копии данного робота запущенной на другом инструменте, по которому сделок не совершено ))
Если честно, то я даже не подозревал, что такое возможно, а когда стал разбираться, то был сильно удивлен. В общем MQ изобрели свой велосипед, но детские ошибки там были, есть и будут, и их терминал так и останется игрушкой для биржевых трейдеров... Писать в их техподдержку не стал, т.к. с данной платформой связываться по серьезному не планирую, да и им нужны всякие там доказательства в виде исходных кодов, а мне лень очищать готового робота что бы не засветить то, что не нужно им видеть.