Samvel Mayilyan
Samvel Mayilyan личный блог
Сегодня в 06:12

Как проверить MT5 EA, а не просто посмотреть, что он работает

Недавно нам написал Arnold Holm из StratCoreAlpha. Предложил проверить несколько пограничных сценариев в нашем MT5 EA: reconnect, restart, Profit Lock, состояние позиции. Сам аудит нам был не особенно нужен, но письмо оказалось достаточно конкретным, чтобы вместо обычного «спасибо, неинтересно» начать разбирать его предположения.

И тут случилась полезная вещь.

Глядя только на EA, довольно легко предположить, что после reconnect старая команда может прийти ещё раз и потребуется механизм duplicate suppression. В нашей архитектуре такого сценария вообще нет: TradingView отправляет alert, получает HTTP 201 примерно за 35 мс, дальше команда живёт уже внутри нашей очереди. Старый alert после reconnect не воспроизводится из памяти.

Мы это объяснили Arnold. И вот тут проявилось то, что я считаю главным признаком нормального технического специалиста: он не стал защищать красивую гипотезу только потому, что уже её сформулировал. Он поменял модель тестирования и разделил то, что можно проверить внутри EA, и то, что требует наблюдения за всей цепочкой TradingView >>>  WebSocket server >>> EA >>> broker.

Звучит банально, но именно на этом ломается огромное количество торгового софта. Люди спорят о коде, хотя сначала надо договориться о другом:

Когда именно считается, что сигнал возник? Кто владеет состоянием позиции?

Что происходит после restart? Что считается успешным close — намерение программы или ответ брокера?

Что должна сделать система, когда действие категорически не должно происходить?

У Arnold на StratCoreAlpha весь подход построен примерно вокруг этого: сначала сформулировать поведение и failure cases, потом уже писать или чинить код. Причём доказательства он старается оставлять публичными: test harnesses, MQL5 utilities, Pine diagnostics, cTrader preflight, логи и acceptance cases.

Мы его не нанимали для разработки и не покупали у него готовый EA. Наш опыт был интереснее: дали внешнему инженеру рассуждать о реальной системе, часть его гипотез оказалась верной как направление проверки, часть — нет, потому что он не видел серверную часть. Когда выяснялось, что предположение неверное, менялась гипотеза, а не факты. По-моему, это и есть нормальная инженерия. Не тот хорош, кто заранее знает ответ. Хорош тот, кто умеет поставить тест так, чтобы системе пришлось ответить самой.

А практически к Arnold можно прийти не только за аудитом чужого кода. StratCoreAlpha занимается исправлением воспроизводимых ошибок в MQL4/MQL5, разработкой MT5 Expert Advisors по уже определённым торговым правилам, переносом и сверкой поведения между Pine Script, MT4/MT5 и другими платформами, а также проектированием автоматизации для cTrader. Общая идея везде одна: сначала точно договориться, что программа должна и не должна делать, потом написать код и оставить клиенту исходник вместе с проверяемыми тестами. Если кому-то нужен именно такой, а не шаманский подход к торговым роботам: https://stratcorealpha.com

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн