Гондурас опять - MetaTrader 5.

Понадобилось проверить идею мультисимвольной стратегии. Точность исполнения требовала расчеты на базе реальных торговых тиков. Обычно для этих целей использую MultiCharts, который позволяет загружать большие объемы тиковой истории. Тиковые графики для изучения построил в MultiCharts. Загрузка истории по нескольким символам в серии BID и ASK требовала очень много памяти. В итоге моя Windows 7 несколько раз вылетала в синий экран смерти. Графики изучил в MultiCharts и решил для сравнения по-быстрому сделать советник в MetaTrader 5, который позволяет использовать реальную тиковую историю и учитывает свопы во время симуляции. 

В период с апреля до июня 2020 года совместно с товарищем плотно поработали с актуальными версиями MetaTrader 5 (платформа x64). Результат нашего пользовательского опыта опишу далее. Надеюсь, многим это будет полезно.

Начну с приятного:
  • Написание и отладка кода в MetaEditor сделаны очень удобно. Есть отладка на истории с возможностью просмотра значений переменных. Транслятор код советников MetaTrader 5 работает в несколько раз медленнее скомпилированного кода TradeStation и MultiCharts, поэтому в MetaEditor реализован толковый профилировщик кода. С его помощью можно найти основные моменты торможения кода советника.

  • Запуск советника в облаке MetaQuotes происходит в несколько кликов. Пинг до нужного брокера оптимален. Сделано очень удобно и просто. Цена для одного советника гуманная: 15$ в месяц. Если один и тот же советник нужно запустить у 10 разных брокеров, выгоднее арендовать отдельный VPS, а не платить лишние деньги MetaQuotes.
Собственно на этом все приятное и закончилось... А далее началось хождение по граблям MetaTrader 5 по полной программе:
  • Терминал периодически намертво виснет. Может после убийства процесса запуститься с потерей настроек всех аккаунтов. Такое происходило многократно. Не лечится никак. Бэкап каталога Config не помогает.

  • Визуализатор торговли может сойти с ума: генерирует 240 Gb временных файлов и отказывается принимать подключение. То есть, вообще не работает. Лечится удалением каталога локального агента и перезапуском терминала.

  • Генетический оптимизатор не имеет параметров настройки и работает очень плохо. Пока более медленные агенты не досчитают всю пачку своих заданий, остальные агенты тупо ждут и ничего не делают. Таких "перекуров" в TradeStation и MultiCharts нет. Видимо это сделано для стимулирования покупки дополнительных мощностей в облаке MetaQuotes.

    Стартует генетический оптимизатор с целью оптимизации в районе 10000 тестов и очень неохотно увеличивает число тестов по ходу оптимизации. У меня максимум был в районе 14000 тестов. В TradeStation я делал оптимизации на сотни тысяч тестов и нужный набор параметров находил через неделю расчета. MetaTrader 5 за меня решает, что заниматься такой ерундой мне не надо. Что нашлось по-быстрому, то я и должен хавать.

    Для оценки качества генетического оптимизатора сделал полный перебор по трем параметрам. Потом сделал оптимизацию с помощью генетического оптимизатора. Оптимизатор отработал, но оптимальные параметры он не нашел даже для такой малой выборки. В последствии мы проводили много оптимизаций с большим числом вариантов. Генетический алгоритм не справлялся. Приходилось делать оптимизацию малыми группами и в итоге доходность многократно увеличивалась. Генетический оптимизатор MetaTrader 5 по сравнению с TradeStation и MultiCharts - это дичайшее днище.

  • Тиковые базы могут занимать значительный объем. С удивлением обнаружил, что загруженные мной тиковые базы исчезли, после того как я их загрузил и не использовал некоторое время. Загрузка в выходные через 3G повторно данных привела к потере времени. Видимо терминал сам решает сколько и какой истории мне положено хранить. В итоге можно по кругу перезакачивать гигабайты одних и тех же данных.

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

  • В окнах с графиками и в окне с итогами симуляции не отрисовываются нормально цифры на вертикальной шкале. Такие же проблемы с обрезанием цифр, как и в МetaTrader 4. Владелец MetaQuotes хвалился, что MetaTrader 5 написан с нуля. Ага, сейчас. Все баги перенесены из MetaTrader 4 и не лечатся годами. Позорище.

  • В тестере стратегий иногда невозможно сменить советник. Лечится перезапуском терминала.

  • Если виснет процесс metatester.exe, терминал в итоге ничего просимулировать не может. Нужно прибивать процесс руками и перезапускать терминал.

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

  • Цены на аренду мощностей в облаке MetaQuotes - это мечта матерого капиталиста. У меня тест на компьютере проводился 9 минут, в облаке MetaQuotes - 56 минут. Возможно проблема была из-за долгой синхронизации истории. Так что тормознутость не в счет. Ценник за такой итог просто прекрасен - 0.81$ за 100 простейших проходов. В итоге мой компьютер выдает мощность на 130$ в сутки при цене самого компьютера в 400$. MetaQuotes просто охренели от жадности. Аренда компьютера в месяц стоит на порядки дешевле, чем стоят мощности в облаке MetaQuotes. Грабят дилетантов средь бела дня.

  • Если случайно выбран режим "Все тики", во время симуляции рисуется фейковая прибыль. В этом режиме MetaTrader 5 генерирует случайную историю и в итоге выходит полная лажа, которая вообще никак не совпадает с реальной торговлей.

  • Агенты могут изничтожить всю память, сделать файл виртуальной памяти на весь диск. В итоге памяти не хватит и они перестают нормально работать. Вместо результата расчета они возвращают ноль и портят работу всего расчета нескольких компьютеров.

  • Иногда терминал отказывается делать оптимизацию и симуляцию на реальном аккаунте. Такое несколько раз было замечено на выходных. При тестировании обязательно нужно брать тики реального аккаунта, так как тики на демо могут существенно отличаться от реала. На демо всё всегда у всех лучше, чем в реале. Маркетинг, ничего личного.

  • Агент может вернуть ноль сделок для теста, хотя на истории при одиночном тестировании сделок много.

  • Агенты могут зависать и в итоге в памяти создаются сотни процессов metatester64, которые сжирают память и тормозят в итоге всю систему.

  • Окно "Тестер стратегий" при любом неверном клике норовит вклеиться внутрь рабочей области. Работать с ним удобно если оно развернуто и имеет большой размер. В итоге с ним постоянно проблемы с отклеиванием и восстановлением большого размера. Если вы хотите тренировать выдержку на том, что вас выбешивает, "Тестер стратегий" - отличный тренажер.

  • Агент, подключенный по сети, отключается и вся оптимизация останавливается. В итоге оптимизацию надо перезапускать вручную.

  • В "Тестере стратегий" во вкладке История может отсутствовать последняя совершенная сделка. Для ее показа нужно сменить режим представления несколько раз и сделка будет в итоге отображена правильно. Во вкладке Операции этот баг не был пока замечен.

  • В отличие от тестирования внутри MetaTrader 4, в MetaTrader 5 "Тестер стратегий" вынесен в отдельное приложение, лишенное всех инструментов технического анализа полученного результата. Что делает анализа итогов просто ужасным. Даже вертикальную линию нельзя нарисовать или воспользоваться курсором с перекрестием. Разработчики явно впали в маразм, когда додумались сделать такое улучшение относительно MetaTrader 4.

  • Пункт меню "Одиночное тестирование" может блокироваться. Лечится перезапуском терминала.

  • После перезапуска терминала нужно что-то прооптимизировать, чтобы посмотреть историю других оптимизаций. Даже если нужно было только посмотреть историю оптимизаций.

  • Нужных мне параметров стратегии в отчете и списке результатов оптимизации нет от слова совсем. Просмотр результата теста делается очень медленно через симуляцию. В TradeStation я это делаю в один двойной клик и результат получаю за пару секунд.

  • Запустил советник на реальном счете в MetaTrader 5. Терминал в течение суток закрывается без записи в лог причины закрытия. Таких закрытий терминала в MetaTrader 4 не наблюдал. Если автозакрытия MetaTrader 5 без восстановления работы терминала - это прозрачный намек на необходимость купить VPS у MetaQuotes, тогда конечно все понятно. Контроль работы терминала можно сделать бесплатно с помощью ProcessLasso и подобных готовых утилит, без необходимости платить за VPS от MetaQuotes.
В общем, врагу не пожелаю разрабатывать стратегии с помощью MetaTrader 5. Пользуясь таким "достижением" русских программистов, я не мог избавиться от постоянно прокручивания у себя в голове песни из ролика:


Каждый раз, запуская MetaTrader 5, через нехочу ощущаю себя "любителем всякого говна". Русские программисты сделали MultiCharts, TradingView, Thinkorswim. Можно гордиться их достижениями. Но вот MetaTrader - это "достижение", за которое стыдно и с которым не хочется иметь дела. Но деваться некуда, так как это "достижение" очень выгодно брокерам. Для открытия позиций и установки ордеров MetaTarder вполне подходит. Можно приспособиться к его багам и глюкам. Но вот как инструмент для разработки стратегий - это только для тех, кто хочет любить "всякое говно".

 

Перепечатка авторских материалов сайта без указания ссылки на
сайт Gelium.net запрещена.

Gelium.net | 2000-2020 | © All rights reserved.