Новая версия платформы MetaTrader 5 build 1860: Функции для работы с барами в MQL5 и улучшения в тестере стратегий
- Terminal: В историю сделок добавлено отображение значений Стоп Лосс и Тейк Профит. Для сделок входа и разворота они устанавливаются в соответствии со значениями Стоп Лосс и Тейк Профит ордеров, в результате исполнения которых они были совершены. Для сделок выхода используются значения Стоп Лосс и Тейк Профит соответствующих позиций на момент их закрытия. Последнее позволяет сохранять и показывать информацию о том, какие значения Стоп Лосс и Тейк Профита были у позиции в момент ее закрытия. До этого такая информация нигде не сохранялась, так как позиция после закрытия исчезает, а история позиций в терминале формируется на основе сделок.
- MQL5: Исправлено значение, отдаваемое функцией SymbolInfoDouble для свойства SYMBOL_PROP_LIQUIDITY_RATE
Что это за свойство?
- Пересчет критерия оптимизации на ходу
- Критерий
оптимизации — некий показатель, значение которого определяет качество
тестируемого набора входных параметров. Чем больше значение критерия
оптимизации, тем лучше оценивается результат тестирования с данным
набором параметров.
Ранее при оптимизации рассчитывался только один критерий, выбранный перед началом оптимизации. Теперь при просмотре результатов вы можете на ходу изменить критерий оптимизации, тестер стратегий автоматически пересчитает все значения.
Что значит "пересчитает"? Это же сортировка по другому столбцу. Фактически, просто показывается только один критерий в таблице. Но сохранены все. Или не так?
OnTester будет выполняться принудительно - даже когда при Оптимизации не выбран кастомный критерий?
Terminal: Теперь при отображении отложенных ордеров на графике используется текущий объем ордера вместо изначально запрошенного.
Что это значит поконкретней? Если я выставил объем 10 лотов в отложенном ордере, а исполнилось (отоварилось) только 4, то будет показывать объем 6? Если так - то это хорошо, но лучше такой стиль "4/10" - он кажется наглядней.
- Tester: Убран запрет на использование OpenCL в агентах тестирования. Ранее OpenCL-устройства можно было использовать только при тестировании на локальных агентах. Теперь агентам разрешено использовать все доступные OpenCL-устройства (процессор, видеокарту) при работе в локальной сети и в MQL5 Cloud Network.
Поконкретней можно про это, так как не ясна ситуация.
1. Допустим у меня есть 6 ядер и 1 GPU. Как мне указать к какому агенту дать/не дать эту GPU?
2. Какие тарифы на использование GPU в MQL5 Cloud Network ?
3. Как выбрать агентов для оптимизации в MQL5 Cloud Network только отвечающие определенным критериям - наличие GPU?
4. Если у меня более 1 GPU, то агент по прежнему может использовать только 1 GPU?
5. Если у меня 6 GPU и 4 CPU ядра, то как сделать распределение/привязку ядер процессора к ядрам GPU?
6. Не совсем ясно, как будет происходить оплата MQL5 Cloud Network , если используется 1 агент и задействуется OpenCL для процессора, т.е. по факту используется ещё x ядер?
- cloud.mql5.com
Как установить запрет на использование моего GPU чужими агентами тестирования не запрещая использования CPU?
iBarShift работает некорректно при exact=true:
Print(iBarShift(_Symbol,_Period,iTime(_Symbol,_Period,7)+PeriodSeconds()/2,true)); // -1 - неправильный результат (должно быть 7) Print(iBarShift(_Symbol,_Period,iTime(_Symbol,_Period,7),true)); // 7 - правильный результат Print(iBarShift(_Symbol,_Period,iTime(_Symbol,_Period,7)+PeriodSeconds()/2,false)); // 7 - правильный результат
Функции ITime, iClose и т.д. виснут на те же пресловутые 16 секунд.
void OnStart() { Print("1"); Print(TimeToString(iTime(_Symbol,PERIOD_D1,1000000))); Print(iClose(_Symbol,PERIOD_D1,1000000)); Print("2"); } 2018.06.15 03:16:56.562 Speed (EURUSD,M1) 1 2018.06.15 03:17:12.427 Speed (EURUSD,M1) 1970.01.01 00:00 // 16 секунд 2018.06.15 03:17:28.316 Speed (EURUSD,M1) 0.0 // 16 секунд 2018.06.15 03:17:28.316 Speed (EURUSD,M1) 2
iBarShift работает некорректно при exact=true:
Распечайте значение
+PeriodSeconds()/2
и посмотрите сколько у вас баров реально на графике
Функции ITime, iClose и т.д. виснут на те же пресловутые 16 секунд.
Терминал пытается получить данные для запрошенной даты с сервера. Вы зачем лом суете в бензопилу?
Распечайте значение
и посмотрите сколько у вас баров реально на графике
У меня все правильно. Конструкцию +PeriodSeconds()/2 я добавил, чтобы получить дробную часть бара. Т.к. дробная часть бара не должна влиять на результат, но она влияет.
Т.е. если у нас H1, тогда
Print(TimeToString(iTime(_Symbol,PERIOD_H1,7))); // 2018.06.15 03:00 Print(TimeToString(iTime(_Symbol,PERIOD_H1,7)+PeriodSeconds()/2)); // 2018.06.15 03:30
при exact=true и существовании бара результат у iBarShift будет правильный если time - ровно время открытия бара, если промежуточное значение то всегда "-1" (что означает вне бара, но это не так). 100% Баг!
Терминал пытается получить данные для запрошенной даты с сервера. Вы зачем лом суете в бензопилу?
Я сознательно создаю такую ситуацию. Защита от дурака должна быть. А ее нет.
Проверку деления на ноль ведь тоже нужно ставить в уважающих себя функциях.
Тем более дату я не запрашиваю, а лишь номер бара.
Например если на MN1 и я запрашиваю цену открытия или любую другую характеристику 600-го бара - Зависнет на 16 секунд.
Вы же не хотите сказать, что каждый раз когда программист должен обращаться к этим функциям, он должен выяснять сколько всего существует баров и выполнять проверку? Может логичнее все же это в функцию добавить?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Новая версия платформы MetaTrader 5 build 1860: Функции для работы с барами в MQL5 и улучшения в тестере стратегий
15 июня 2018 года будет опубликовано обновление платформы MetaTrader 5.
Также для облегчения поиска в список добавлены логотипы компаний. Если нужного брокера нет в списке, просто наберите название компании или адрес сервера в поисковой строке и нажмите "Найти вашего брокера".
Чтобы помочь начинающим трейдерам, в диалог добавлены описания типов счетов. Также в связи с обновлением General Data Protection Regulation (GDPR) при открытии счета теперь могут показываться ссылки на различные соглашения и политики брокерских компаний:
Значительно расширены возможности для открытия реальных счетов. Функция загрузки документов для подтверждения личности и адреса, представленная ранее в мобильных терминалах, теперь доступна и в десктопной версии. MiFID-регулируемые брокеры теперь могут запрашивать всю необходимую информацию для идентификации клиента, включая данные о занятости, доходах, опыте торговли и т.п. Все это позволит проще и быстрее получать реальные счета, а также избавит от лишней бюрократии.
Ранее большинство задач, решаемых этими функциями, можно было легко выполнить при помощи функций Copy*. Однако для поиска максимальных/минимальных значений на графике и поиска баров по времени пользователю требовалось реализовывать собственные функции. Теперь это можно легко выполнить функциями iHighest, iLowest и iBarShift.
iTime
Возвращает значение времени открытия бара (указанного параметром shift) соответствующего графика.
iOpen
Возвращает значение цены открытия бара (указанного параметром shift) соответствующего графика.
iHigh
Возвращает значение максимальной цены бара (указанного параметром shift) соответствующего графика.
iLow
Возвращает значение минимальной цены бара (указанного параметром shift) соответствующего графика.
iClose
Возвращает значение цены закрытия бара (указанного параметром shift) соответствующего графика.
iVolume
Возвращает значение тикового объема бара (указанного параметром shift) соответствующего графика.
iBars
Возвращает количество баров в истории по соответствующему символу и периоду.
iBarShift
Поиск бара по времени. Функция возвращает индекс бара, в который попадает указанное время.
iLowest
Возвращает индекс наименьшего найденного значения (смещение относительно текущего бара) соответствующего графика.
iHighest
Возвращает индекс наибольшего найденного значения (смещение относительно текущего бара) соответствующего графика.
iRealVolume
Возвращает значение реального объема бара (указанного параметром shift) соответствующего графика.
iTickVolume
Возвращает значение тикового объема бара (указанного параметром shift) соответствующего графика.
iSpread
Возвращает значение спреда бара (указанного параметром shift) соответствующего графика.
Изменения в формате хранения кэша оптимизации
Ранее кэш оптимизации хранился в виде одного XML-файла, в который попадали все проходы оптимизации эксперта с заданными настройками тестирования. В один и тот же файл попадали результаты оптимизации с разными входными параметрами.
Теперь кэш оптимизации хранится в виде бинарных файлов отдельно для каждого набора оптимизируемых параметров. За счет изменения формата и сокращения размера файлов работа тестера с кэшем оптимизации значительно ускорилась. Это ускорение будет особенно заметно при продолжении ранее приостановленной оптимизации.
Просмотр результатов ранее выполненных оптимизаций
Теперь вы можете просматривать результаты ранее выполненных оптимизаций прямо в тестере стратегий, не разбирая огромные XML-файлы в сторонних программах. Откройте вкладку "Результаты оптимизации", выберите эксперта и файл с кэшем оптимизации:
В списке отображаются все файлы кэша оптимизации, которые есть на диске для выбранного эксперта. Для каждого файла показывается дата оптимизации, настройки тестирования (символ, таймфрейм, даты), а также информация о входных параметрах. Дополнительно вы можете отфильтровать результаты оптимизации по торговому серверу, на котором они были получены.Пересчет критерия оптимизации на ходу
Критерий оптимизации — некий показатель, значение которого определяет качество тестируемого набора входных параметров. Чем больше значение критерия оптимизации, тем лучше оценивается результат тестирования с данным набором параметров.
Ранее при оптимизации рассчитывался только один критерий, выбранный перед началом оптимизации. Теперь при просмотре результатов вы можете на ходу изменить критерий оптимизации, тестер стратегий автоматически пересчитает все значения.
Как использовать кэш оптимизации вручную
Ранее кэш оптимизации хранился в виде XML-файла, который можно было открывать и анализировать в сторонних программах. Теперь он хранится в закрытых бинарных файлах. Чтобы получить данные в формате XML, экспортируйте их через контекстное меню вкладки "Результаты оптимизации".
Учитывайте, что для корректного тестирования на счете должны быть доступны кросс-курсы для пересчета прибыли и маржи в указанную валюту депозита.
Обновление будет доступно через систему Live Update.