Sundancer0369
Sundancer0369 личный блог
Вчера в 16:14

Один робот, разные рынки: что пришлось сделать, чтобы добавить форекс

Меня регулярно спрашивают одно и то же: «У вас робот под Мосбиржу, а под мой рынок будет?»

Раньше я отвечал уклончиво. Теперь отвечаю: будет, и вот почему.

На этой неделе я добавил в свою систему форекс. Не переписал стратегию, не завёл второго робота — добавил шлюз к MetaTrader 5. Торговая логика не поменялась ни на строчку.

И это, по-моему, самое интересное во всей истории. Потому что рынок, если смотреть со стороны кода, — всего лишь способ доставить заявку.

Что было до этого

Система торгует фьючерсами на Мосбирже через QUIK и бессрочными контрактами на Bybit. Два разных мира: в одном терминал стоит на машине клиента и заявки идут через него, в другом биржевой API принимает запросы напрямую по ключу.

Когда я делал второй коннектор, стало понятно простое: стратегия про рынок знать ничего не должна. Сетке всё равно, что она торгует. Ей нужны цена, возможность поставить заявку и ответ, что заявка исполнилась. Остальное — детали доставки.

Поэтому доступ к рынку вынесен в отдельный слой. Ядро говорит «поставить лимитную заявку на такой-то уровень», а как это сделать — забота шлюза: через QLua в QUIK, через REST на криптобирже или через терминал MT5.

Звучит как банальность из учебника по архитектуре. Но пока не попробуешь перенести систему на третий рынок, не узнаешь, честно ли у тебя разделены слои. У меня, к счастью, оказалось честно: ядро я не трогал.

Как устроен шлюз

Со шлюзом к QUIK схема такая. Робот работает на сервере. Рыночные данные он берёт сам — по фьючерсам Мосбиржи их отдаёт ISS, терминал для этого не нужен. А вот заявки идут в терминал клиента: на его машине работает служба, которая принимает команды от сервера и передаёт их в QUIK, а обратно отдаёт подтверждения, состояние заявок и позиций.

Ключевая деталь: терминал остаётся у клиента. Робот не подключается к брокеру от своего имени, не знает паролей от личного кабинета и ничего вывести не может. Он умеет ровно то, что умеет торговый интерфейс терминала: ставить и снимать заявки, читать позиции.

Со шлюзом к MT5 принцип ровно тот же: служба на машине клиента принимает команды от сервера и передаёт их в терминал, обратно идут подтверждения, состояние заявок и позиций. Меняется только то, как служба разговаривает с конкретным терминалом. Схема, зона ответственности и ограничения остаются прежними — и это, собственно, и значит, что рынок добавляется шлюзом, а не переделкой системы.

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

Что на форексе оказалось другим

Логика переносится, экономика — нет. Сетку на форексе ждут три вещи, которых нет на ФОРТС.

Своп. Сетка по своей природе держит позиции, иногда долго. На фьючерсе стоимость переноса зашита в цену контракта: купил дальний контракт — заплатил контанго сразу. На форексе вам начисляют своп каждую ночь, у каждой пары он свой, а по некоторым он ещё и разный по знаку в зависимости от стороны. Для стратегии, которая живёт неделями, это не мелочь, а отдельная статья расходов, которую надо считать до запуска.

Плечо. На форексе оно щедрее, и это ровно та щедрость, которая убивает сетку. Сетка набирает максимальный объём именно тогда, когда рынок идёт против неё — то есть когда её исходная гипотеза уже не подтвердилась. Чем легче набрать объём, тем быстрее это кончится margin call. Ограничение числа живых уровней и потолок суммарного объёма на форексе важнее, чем на фьючерсах.

Контрагент. На бирже заявка попадает в общий стакан, и исполнение не зависит от того, как к вам относится брокер. На форексе исполнение зависит от устройства конкретного брокера. Это не повод для спора о рынке — это фактор, который либо учитывают в расчётах, либо потом удивляются расхождению бэктеста с реальностью.

Поэтому параметры с фьючерсов я не переносил один в один и не собираюсь. Шаг сетки, ограничение объёма и правила выхода для валютных пар считаются заново, и считаются на демо-счёте.

Как подключиться, если захотите попробовать

Порядок такой же, как с QUIK, только вместо него MT5.

1. Счёт. Любой брокер, у которого есть MetaTrader 5. Начинать лучше с демо-счёта: он даёт настоящие котировки и настоящее исполнение по правилам брокера, но без денег.

2. Терминал. Установить MT5, войти в счёт, разрешить автоматическую торговлю в настройках терминала. Терминал должен быть запущен, пока работают боты, — это ограничение схемы, и оно честное: закрыли терминал, связь с сервером потеряна, заявки не уходят.

3. Связь с сервером. На машину с терминалом ставится служба-шлюз — та же схема, что и в варианте с QUIK: она принимает команды от сервера и передаёт их терминалу. Параметры подключения выдаются при настройке; ключей от личного кабинета и паролей брокера служба не знает и не запрашивает.

4. Бот. В системе создаётся бот на один инструмент: пара, шаг сетки, объём уровня, ограничение числа живых заявок, правила выхода. Один бот — один инструмент; несколько ботов собираются в портфель, и статистика считается и по каждому, и по портфелю.

5. Проверка на истории. До запуска стоит прогнать параметры в бэктесте — по инструменту и по портфелю. Это не гарантия, а способ отсеять заведомо нерабочие настройки.

6. Запуск. Бот стартует, заявки уходят в ваш терминал, сделки и позиции видны и в терминале, и в системе. Деньги всё это время лежат на вашем счёте у вашего брокера.

Отдельно повторю то, что обычно спрашивают первым. Робот работает через торговый интерфейс терминала. Вывести деньги по такому каналу нельзя. Но набрать плечо и создать обязательства перед брокером — можно, как и любым другим способом торговли. Поэтому лимит объёма и ограничение числа уровней в настройках бота — не украшение, а обязательная часть, и выставлять их надо до запуска, а не после.


Счёт запущен только что: заведены четыре пары — EURUSD, GBPUSD, EURGBP и USDJPY, прошли первые сделки, кривая доходности начинается буквально сегодня. Это демо: денег в нём нет, и задача у него одна — набрать статистику на живых котировках, а не нарисовать красивый график.

Счёт публичный, как и два других: фьючерсы Мосбиржи и крипта на Bybit. На крипто-счёте сейчас минус, и я его не прячу. Человеку, который выбирает себе инструмент, полезнее видеть, как оно бывает на самом деле, чем смотреть на подобранный удачный период.

Зачем всё это

Я не доказываю, что на форексе надо торговать. Я показываю, что инструмент не привязан к рынку.

Для меня это главный результат последних месяцев. Мосбиржа, криптобиржа, валютные пары — три разных рынка, три разных способа доставки заявок и одна торговая логика сверху. Добавить четвёртый теперь стоит не месяцев, а недель, и это работа по шлюзу, а не по стратегии. А значит, вопрос «а под мой рынок будет?» перестал быть вопросом про стратегию и стал вопросом про сроки.

Мне интересно вот что. Если у вас есть робот под один рынок — вы его переносили куда-нибудь ещё? И что сломалось первым: исполнение, расчёт объёма или сами правила входа? У меня первым ломалось исполнение, причём каждый раз по-разному.

Портфели открыты, смотреть можно без регистрации:

https://ngcorp.pro/bots/rent/?utm_source=smartlab&utm_medium=post&utm_campaign=pyramid-forex#portfolios

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
2 Комментария
  • PeptideNovaru
    Вчера в 16:27
    Сетка хорошо выглядит в боковике: много мелких закрытий, ровная кривая. Но при устойчивом тренде против неё она набирает позиции всё большего объёма, а плавающий убыток растёт быстрее прибыли))

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

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