Мобильный терминал вечно подводил в нужный момент — собрал пульт в Telegram

Мобильный терминал вечно подводил в нужный момент — собрал пульт в Telegram

21 сентября 2026, 10:19
Vladimir Ershov
4
161

Тринадцать лет в трейдинге — и все эти годы не дружу с мобильным терминалом!

На компе, если совсем прижмёт, всегда есть путь отступления: открыл MetaEditor, накидал 20-30 строк — и вот уже есть кнопки «закрыть всё», «закрыть только прибыльное», «закрыть по инструменту», «залочить позиции». Комп прощает панику. А в мобильном терминале — тишина. Ни скриптов, ни экспертов, ни макросов. Только то, что дали разработчики — и точка, спасибо, что вообще график показывают. Когда я это окончательно осознал, стало ясно: чинить надо не рабочий стол, а то, что у меня в кармане.

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

Грабли №1: не могу найти НУЖНУЮ позицию

Экран маленький, позиций открыто штук 10-15 на разных инструментах. Надо закрыть ровно одну — убыточную по золоту. Листаю список пальцем, щурюсь, путаю строку с соседней, тычу не туда, как будто играю в мобильную игру «Угадай сделку». В спокойной обстановке — смешно. Когда рынок летит и решение нужно за секунды — уже не до смеха.


Сделал: /positions LOSS — присылает только убыточные, с короткими номерами N1, N2. /close N1 — превью «что именно закроется» и подтверждение. Тыкать пальцем в список больше не нужно вообще.

Грабли №2: подвинуть стоп = устный счёт под давлением

Хочу подтянуть стоп на 100 пунктов ближе к цене. В мобильном терминале это значит: посмотреть, где он сейчас, отнять или прибавить в уме, ввести новое число в крошечное поле, не ошибившись разрядом — на бегу, одной рукой, вторая держит поручень в метро.

Сделал: /shift SL N1 UP 100 — двигает то, что уже стоит, на N пунктов. Считать самому больше не надо.

Грабли №3: стоп «на глаз» за структурным уровнем — на телефоне лотерея

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


Сделал: /swing SYMBOL — присылает скриншот с уже подписанными последними свинг-хаями/лоями прямо на графике. /set SL LOW1-1.5ATR — можно вообще не смотреть глазами, стоп встанет за структурный уровень с буфером автоматически.

Грабли №4: экстренный лок перед новостью — и я запутался, где что крыть

Самый неприятный случай. Стою жду важную новость, счёт разогнан по нескольким инструментам, решаю: сейчас всё залочу, пересижу вспышку, потом разберусь. Открываю телефон — и не могу быстро сообразить: по золоту нетто BUY 0.3, по евро нетто SELL 0.5, а по фунту вообще винегрет из нескольких сделок вразнобой. Пока считаю в уме, какой объём и в какую сторону крыть на каждом инструменте — новость уже вышла. Дневная прибыль ушла вслед за ней.


Сделал: /lock EURUSD — мгновенно открывает встречную позицию именно на тот объём, который обнуляет нетто по символу, сам считает разницу. /lock ALL — делает это разом по всем инструментам с открытой экспозицией, и в превью показывает, что реально произойдёт, до того как это случится, а не постфактум разбираться, что залочилось, а что нет.

Грабли №5: не понимал, далеко ли до margin call, пока не стало поздно

Смотришь на баланс и свободную маржу в цифрах — и не сразу понимаешь, насколько это близко к проблеме именно по цене. Сколько пунктов у меня в запасе, прежде чем состоится личная встреча с дядей Колей (тем самым margin call).


Сделал: /marginview — присылает скриншот графика с уже нарисованными уровнями margin call и stop out, с автоматически подобранным масштабом, чтобы всё уместилось на одной картинке. Видно глазами, а не приходится держать в уме, как таблицу умножения.

Грабли №6: объём на глаз в панике — и один раз рискнул сильно больше, чем хотел

Открываю сделку в спешке, объём считаю на ходу вручную от размера депозита — и один раз ошибся в расчёте, рискнул заметно больше запланированного. Дядя Коля был доволен.

Сделал: вместо числа лота можно передать риск — /buy EURUSD RISK 1% SL HIGH2+0.3ATR . Объём считается сам от свободной маржи и расстояния до стопа, с показом расчёта в превью перед подтверждением. Больше не считаю на бегу.

Грабли №7: сам себе напортачил — и обратно откатить оказалось не так просто

Уже с готовой панелью, но по невнимательности запустил команду не на той позиции — подвинул стоп не там, где хотел. И понял, что во всей этой удобной автоматизации не хватает одной вещи: возможности откатить, если накосячил сам.

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

Грабли №8: поставить стопы в безубыток именно в мобильном терминале — вот где начинается настоящий цирк

В терминале на компе ухватил мышью стоп, потянул куда надо — или готовым скриптом ткнул в нужную область цены, и все стопы послушно встали в безубыток. А в мобильном всё нужно прописывать циферками, как будто я заполняю налоговую декларацию.

Сделал: /SET BE N1 — поставить в безубыток одну сделку, /SET BE XAUUSD — по инструменту, /SET BE PROFIT — сразу все прибыльные.

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

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

Файл — рабочий билд, привязка к демо-счетам (пожалуйста, тестируйте именно на демо, дядя Коля шуток не любит). Баги и идеи — в комментарии под постом, буду честно фиксить и выкладывать новые версии прямо здесь же. За основу взял скриншотер в телеграм с функцией поиска популярных паттернов. И с уже готовым блоком учета загрузки маржи. Как раз удобно! В  телеграм-бот  идет скриншот с паттерном, например, неожиданной большой свечой или пин-баром. И сразу же, оценив обстановку, влетаешь в сделку через тот же бот!

-----------------------------------------

 Как подключить TradePilot к Telegram — пошагово

Три шага: создать бота, узнать свой ID, вписать это в настройки советника. Займёт минут пять.

 

Шаг 1. Создаём бота через @BotFather

1. В Telegram найдите @BotFather (это официальный бот Telegram для создания других ботов — у него синяя галочка подтверждённого аккаунта, не перепутайте с похожими подделками).

2. Напишите ему `/newbot`.

3. Придумайте имя бота — любое, это просто отображаемое название (например: `Мой TradePilot`).

4. Придумайте username — техническое имя, обязательно заканчивается на `bot` (например: `my_tradepilot_bot`). Если занято — BotFather предложит попробовать другой.

5. В ответ BotFather пришлёт сообщение с токеном — длинная строка вида:

   123456789:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw

   Это и есть `Inp_Token`. Скопируйте её целиком и сохраните куда-нибудь — она пригодится на шаге 3. Никому не показывайте этот токен — у кого он есть, тот может полностью управлять вашим ботом от вашего имени.

 

Шаг 2. Узнаём свой Chat ID

 

Бот должен знать, кому именно писать. Для этого нужен ID вашего личного чата с ним (это число, не username).

1. Найдите в Telegram бота @userinfobot (или @getmyid_bot — подобных ботов-утилит несколько, любой подойдёт).

2. Напишите ему что угодно, например `/start`.

3. Он в ответ пришлёт ваш Id — число вида `987654321`. Это и есть `Inp_ChatID`.

Альтернативный способ, без сторонних ботов: напишите своему только что созданному боту любое сообщение (например "привет"), затем в браузере откройте:

https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates

(подставьте свой токен вместо `<ВАШ_ТОКЕН>`). В ответе (это JSON) найдите `"chat":{"id":987654321` — это число и есть нужный ID.

Важно: прежде чем токен и ID заработают вместе, боту нужно, чтобы вы написали ему первым хотя бы одно любое сообщение — Telegram не разрешает ботам писать первыми в личку. Если пропустите этот шаг, советник будет исправно пытаться отправить алерт, но Telegram будет его отклонять.

 

 Шаг 3. Вписываем в настройки советника

 

1. Прикрепите `TradePilot.mq5` к графику в MetaTrader 5.

2. В открывшемся окне настроек найдите вкладку "Входные параметры".

3. В группе "1. Telegram — General" (или похожей, в самом верху списка) найдите:

   - `Inp_Token` — вставьте токен из шага 1.

   - `Inp_ChatID` — вставьте число из шага 2.

4. Обязательно включите (по умолчанию `true`) `Inp_EnableAlerts` — это общий рубильник всех оповещений.

5. Если хотите ещё и управлять счётом командами (не только получать алерты) — включите `Inp_EnableTelegramCommands` (по умолчанию тоже `true`, читающие команды вроде `/status` доступны сразу).

6. Если хотите именно торговать через Telegram (закрывать/открывать/двигать стопы) — отдельно включите `Inp_EnableTelegramTrading` (по умолчанию `false` — это осознанная защита от случайного включения торговли).

 

Шаг 4. Разрешаем MetaTrader обращаться к Telegram (самый частый затык)

 

MQL5 по умолчанию блокирует любые запросы советников в интернет. Без этого шага советник будет молчать, даже если токен и ID введены правильно.

 

1. В терминале: Сервис → Настройки (или Tools → Options).

2. Вкладка "Советники" (Expert Advisors).

3. Поставьте галочку "Разрешить WebRequest для перечисленных URL".

4. Добавьте в список ровно этот адрес:   https://api.telegram.org

5. ОК, и перезапустите советник на графике (снимите и заново прикрепите, или нажмите "Обновление" в списке экспертов).

 

Проверка

 

Если всё сделано верно, при запуске советник пришлёт в чат стартовое сообщение. Дальше можете написать боту `/status` — если в ответ прилетит сводка по счёту, значит связь настроена полностью. Если тишина — 90% случаев это:

- забытая галочка WebRequest (шаг 4);

- не написали боту первым хотя бы раз (конец шага 2);

- опечатка в токене или ID (лишний пробел при копировании — частая причина).

-----------------------------------------

Список команд условно делится на информационные и торговые.

Информационные (работают всегда):

- `/status` — статус счёта.

- `/positions [ФИЛЬТР]` — открытые позиции, с короткими номерами N1,  N2... для ссылок в других командах.

- `/pending [ФИЛЬТР]` — отложенные ордера, номера P1, P2...

- `/exposure` — нетто-объём и нагрузка маржи по каждому символу (важно  при локах — видно, сколько реально ходит по рынку, а не просто сумма  лотов).

- `/swing SYMBOL [глубина]` — присылает скриншот графика с подписанными   последними 5 свинг-хаями и 5 свинг-лоями прямо на графике (не просто  цифры в тексте) — удобно проверить глазами, прежде чем ставить стоп за   структурный уровень.

- `/marginview CUR|SYMBOL` — автоматически подбирает таймфрейм и масштаб

  графика так, чтобы ВСЕ маржинальные уровни (margin call, stop out и   т.д.) и текущая цена поместились в один скриншот целиком — не нужно  вручную скроллить/зумить график, чтобы увидеть, насколько далеко цена   от критического уровня. Работает не только по символу графика, на  котором висит советник, но и по ЛЮБОМУ символу с открытой позицией —   `/marginview eurusd` покажет уровни по EURUSD, даже если советник  висит на графике золота.

- `/pause`, `/pause N` / `/resume` — приостановить автоматические алерты  (например, на время сна), не трогая торговые команды.

Торговые (требуют отдельного включения в настройках):

- `/close`, `/set`, `/shift`, `/del`, `/buy`, `/sell`, `/lock`, `/undo` —

  полный набор операций с позициями и ордерами.

- `/shift SL|TP <ref> UP|DOWN <пункты>` — сдвигает УЖЕ СТОЯЩИЙ стоп/тейк на N пунктов относительно его текущего значения (в отличие от `/set`,  который задаёт абсолютную цену) — не нужно самому смотреть, где сейчас   стоп, и что-то вычислять, чтобы подтянуть его при ручном трейлинге.

  По фильтру — каждая позиция сдвигается от СВОЕГО собственного текущего   уровня, удобно для сеток/мартингейла.

- `/undo` — откатывает последнюю команду, менявшую SL/TP (`/set`,   `/shift`, `/del`, перевод в безубыток), в течение 10 минут после неё.

  Один шаг назад (без истории), требует отдельного подтверждения с явным   предупреждением о необратимости. Закрытие позиций и открытие новых  сделок не откатываются — закрытие необратимо в принципе. 

- Все команды используют один и тот же язык: вместо длинного тикета —   короткая ссылка (N1, P1) или фильтр (`ALL`, `PROFIT`, `LOSS`, `BUY`,  `SELL`, `VOL>x`, имя символа) — можно закрыть/изменить сразу несколько  позиций одной командой.

- Цена SL/TP или входа отложки — не только число, но и выражение вида   `LOW1-1.5ATR` / `HIGH2+50P` — последний/2-й/.../5-й подтверждённый  свинг-уровень с буфером в ATR или пунктах.

- Объём — либо фиксированное число, либо `RISK 1%` — лот считается   автоматически от заданного % риска (от свободной маржи) и расстояния  до стоп-лосса, с показом расчёта в превью перед подтверждением.

- Каждая торговая операция — сначала превью (что именно будет сделано),  потом слово подтверждения или отмены, с автоотменой по таймауту.  Слова подтверждения настраиваются (`Inp_ConfirmKeywordYes/No`) — по  умолчанию только однозначные `CONFIRM`/`YES` и `CANCEL`/`NO`  (лучше без коротких `Y`/`N`/`1`/`0` — случайно набранная цифра по другому   поводу не должна подтверждать реальную сделку).

- Символ можно писать в любом регистре (`bitcoin`, `BITCOIN`,  `Bitcoin` — бот сам находит нужный тикер у брокера).


Примеры использования

/positions PROFIT

→ список только прибыльных позиций, пронумерованных N1, N2...

/close N1

→ превью "закрыть #12345 XAUUSD BUY 0.10, P/L +42.10?" → подтверждаете → закрыто

/set TP N1 HIGH1+20P

→ тейк-профит на 20 пунктов выше последнего свинг-хая

/buy BITCOIN RISK 1% SL LOW2-0.5ATR

→ бот считает объём по 1% риска от свободной маржи и расстоянию до стопа  (второй снизу свинг-лоу минус половина ATR), показывает расчётный лот   в превью, ждёт подтверждения

/lock XAUUSD

→ мгновенно открывает встречную позицию, обнуляя нетто-объём по золоту

/shift SL N1 UP 50

→ подтягивает уже стоящий стоп на 50 пунктов вверх (например, ручной   трейлинг по BUY) — не нужно смотреть текущую цену стопа самому 

/shift SL XAUUSD DOWN 30

→ сдвигает стоп вниз на 30 пунктов сразу на ВСЕХ позициях по золоту —   каждая от своего собственного текущего уровня (удобно для сетки)

/undo

→ "Откатить: SET SL по фильтру 'XAUUSD': ... ⚠️ ЭТО ДЕЙСТВИЕ НЕЛЬЗЯ БУДЕТ   ОТКАТИТЬ" → подтверждаете → все стопы/тейки из последней команды

  возвращаются к значениям, которые были до неё

/marginview

→ скриншот графика с автоматически подобранным масштабом, на котором   видно текущую цену и все маржинальные уровни разом

Советы и рекомендации

- Начните с `Inp_ConfirmTradingOperations = true` (это и есть значение по   умолчанию) — так каждая операция требует явного подтверждения, и вы   успеете заметить опечатку в объёме или неверный символ до реального   исполнения.

- Проверяйте выражения `LOW/HIGH ± ATR` через `/swing SYMBOL` перед тем,   как использовать их в реальной торговой команде — так видно, на какой   стороне от текущей цены на самом деле окажется уровень. - Для сеток/мартингейла используйте фильтры `VOL>x` в `CLOSE`/`SET`, чтобы управлять только частью позиций по объёму, а не всеми сразу.

- `Inp_EnableBulkTradingCommands` держите выключенным, пока не   протестируете единичные операции (по тикету/N-номеру) — массовые   команды (`ALL`, `PROFIT` и т.д.) стоит включать осознанно.


 Известные ограничения (честно, без замалчивания)

- Свинг-уровни (`LOW/HIGH`) считаются на таймфрейме ГРАФИКА, на котором   запущен советник — не на произвольном другом ТФ.

- Рыночные `/buy`/`/sell` и отложенные ордера уже поддержаны; часть   редких комбинаций параметров (см. полный `/help`) может быть ещё не   покрыта — список команд продолжает пополняться.

- `WebRequest` к Telegram — синхронный вызов (ограничение самого MQL5),   поэтому при недоступности Telegram API возможна кратковременная   задержка в обработке очереди алертов.

- Если запущено несколько копий советника на одном терминале — команды   Telegram принимает и исполняет ТОЛЬКО та копия, что в режиме "Монитор"   (и не в режиме "Скриншотер"). Это намеренное ограничение: Telegram   выдаёт новые сообщения только ОДНОМУ обратившемуся, курсор общий на  бота — если бы несколько копий опрашивали его одновременно, одна и та   же команда могла бы выполниться дважды или потеряться.


📌 Важно: Все выложенные файлы — это полнофункциональные демо-версии, работающие исключительно на демо-счетах.

Наиболее свежий билд всегда ищите в самом последнем комментарии к статье. Предыдущие версии в ветке оставлены как история изменений (Changelog) и показывают эволюцию проекта.


Кто может командовать ботом

Торговля из чата — это, по сути, ключи от счёта, поэтому правила тут строгие.

Бот принимает команды только из чата с вашим Chat ID, всё остальное игнорирует [проверьте: сообщения из любых других чатов отбрасываются полностью, в том числе от чужих аккаунтов, добавивших бота]. Токен — это доступ к самому боту. Торговать с ним нельзя: команды приходят от вашего аккаунта Telegram. Но с токеном можно читать вашу переписку с ботом (позиции, скриншоты) и писать от его имени. Поэтому держите токен как пароль, а при подозрении на утечку выпустите новый в @BotFather командой /revoke .

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

Торговые команды по умолчанию выключены и включаются отдельным параметром. Каждая операция идёт через превью и слово подтверждения. Пароль для /enable вы набираете прямо в чате, он остаётся в истории переписки: используйте пароль, которого нет больше нигде, и удаляйте это сообщение сразу после ввода.


Файлы:
TradePilot.ex5  529 kb