Торговая панель SmartOrders для МТ5

Торговая панель SmartOrders для МТ5

14 июня 2025, 15:25
Anton Polkovnikov
0
9

Торгую я давно, торговых терминалов перепробовал немало. И везде мне не хватало одной важной вещи — нормальной функциональной торговой панели. Что-то более менее интересное было в скальперских приводах, но хотелось большего.

Чего же хотелось?

Для начала, возможность управления заявками с графика. Такое было реализовано в TigerTrade, но сам Tiger не устраивал. Также было бы неплохо делать автоматическое разделение объема, дабы не кидать в стакан всю заявку. И к этому процессу добавить немного динамики. Дабы заявки не кидались по одной цене, а следовали за ней. Обеспечивая оптимальный вход в позицию. И такой же оптимальный выход.

А еще сделать привязку к индикаторам. Чтобы не сидеть часами в мониторе, не ждать оповещения. Нет. Есть позиция, есть индикатор по которому надо выйти. Задал это всё системе и давай, до свидания.

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

Идеология

Скрипт «SmartOrders» или «Умные заявки» – это серьезное расширение возможностей терминала МТ5 в области работы с заявками. При создании преследовались следующие цели:

  • Создание системы управления заявками с графика
  • Скрытие больших объемов
  • Полуавтоматическая работа с индикаторами

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

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

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

В основе идеологии скрипта лежит разделение на заявки и на процесс исполнения заявки. Всё происходит сродни конструктору, где мы создаем структуру заявок, а к ним прописываем процесс их исполнения.

Одной из важнейших особенностей скрипта являются «виртуальные» заявки (ордера). Виртуальные заявки не выставляются в систему (не уходят на биржу), а висят в терминале. Они являются «триггером». И когда он срабатывает, запускается функционал исполнения заявок. Уникальная вещь на отечественно рынке биржевого ПО. Имеет свои плюсы и минусы. Минус один – терминал должен быть открыт, только в этом случае виртуальная заявка сработает. Плюсы – невидимость замыслов пользователя для биржевой инфраструктуры. Его заявки не находятся в стакане, а значит не считываются скриптами, анализирующими стакан.

Обзор интерфейса скрипта.



Основное окно состоит из 5 рабочих зон.

  1. Кнопки выбора настроек режимов работы. Они приводят к открытию соответствующей вкладки.
  2. Зона открытых позиций
  3. Основные параметры заявки
  4. Управления стопами
  5. Схемы процесса исполнения заявок
  6. Управляющие кнопки

Далее разберем ряд зон отдельно.

Зона настроек режимов.

Включается посредством нажатия на кнопку. Выход в основное окно осуществляется тем же действием.

Indicators

Окно настроек взаимодействия с индикаторами. Выбор алгоритма для входа и выхода из позиции. Работают отдельно.

Для запуска схемы с индикаторами требуется подавать команду на вход или выход кнопками Buy и Sell из данного окна. Подробнее ниже в отдельном разделе.

Parts Mode

Вкладка настройки режима выставления заявок «лесенкой». Также предусмотрена возможность выставления лесенкой стоп-приказов Take Profit и Stop Loss

Smart

Вкладка настроек Смарт-ордера. Псевдо-айсберги.

Settings

Рабочие настройки скрипта, которые будут сохраняться для следующих запусков и меняться налету без перезапуска.

Параметры заявки



Основные параметры заявки: цена и объем. Действует для лимитных заявок без указания сдвига (см. раздел «Параметры стопов»).

%M – объем заявки в % от максимально возможного ГО

%C – объем заявки в % от депозита

Price – цена заявки. При нажатии на надпись «Price», будет выставлена цена последней сделки на рынке

Volume – количество контрактов в заявке. При нажатии на надпись «Volume» значение изменится на минимально возможное.

 

Параметры стопов

Shifting Off – сдвиг лимитной заявки.

При включеном параметре (выжата кнопка) лимитная заявка не будет обращать внимание на параметр Price, а будет выставляться в соответствии с указанным отступом.

0 – в середину спреда, если такой имеется. Если спред минимален, то заявка выставится по лучшему биду (в случае покупки) или лучшему аску (в случае продажи)

1 — заявка выставится по лучшему биду (в случае покупки) или лучшему аску (в случае продажи)

2 – заявка выставится по второму от спреда биду или аску. Ну и далее аналогично.

ВАЖНО! При включенном сдвиге, любое лимитное исполнение (прямое, в стопах) будет происходит, игнорируя прописанную цену. Поэтому важно отслеживать этот параметр. К примеру, если по открытой позиции принято решение выставить стоп на каком-то ценовом уровне, исполнение указано лимитное и заявка выставляется в систему, при зажатом параметре Shifting on срабатывание стоп-заявки произойдет немедленно.

 

Ticks

Выбор системы измерения для уровней TP и SL. В тиках или абсолютных значениях.

 

Set TPSL

Кнопка установки стоп-приказов Take Profit и Stop Loss. При нажатии при наличии открытой позиции будут установлены в систему соответствующие ордера на расстояниях от текущей цены, прописанных в окошках TP и SL. При нажатии на соответствующие названия значения устанавливаются в 0. Функция выставления стопов может быть опционально включена в автоматическое исполнение, когда при наличии значений выше нуля в окнах TP и SL после входа в позицию произойдет автоматическое выставление заявок. Опция включается в допокне Settings.

 

SL Check Time

Задержка исполнения стоп-заявки. Функция сделана для исключения выноса стопов при резких ценовых выбросах на рынке. В случае включения стоп-приказ вида SL сработает при нахождении цены в зоне срабатывания свыше указанного в окне количества секунд (при режиме SL Check Time) или количества баров (при режиме SL Check Bar). Режим SL Check Time с количеством равным 0 отключает работу функции. Действует только для виртуальных стоп-приказов.

 

Схемы процесса исполнения заявок

В данном разделе происходит назначения способов отработки заявок и их видов. Отдельно устанавливаются настройки для заявок, приводящих к открытию позиции (IN) и выходу из позиции (OUT).

Реализация (исполнение) ордера возможна четырьмя способами:

Market – традиционная заявка по рынку.

Limit – лимитная заявка. При работе обращаем внимание на параметр Shifting.

Stop Order – вид ордера, который приводит к открытию позиции при достижении ценой определенных уровней, к примеру, когда надо войти в лонг при пробое ценой какого-то уровня вверху. При работе системными заявками будет выставляться дефолтный ордер МТ5 соответствующего вида, исполнение которого пойдет «по рынку». С виртуальными заявками не работает (треубется проверка и изменение подхода).

Smart Order – исполнение заявки через схему дробления с поиском оптимальной цены. Настривается в соответствующем окне.

 

Способы выбираются отдельно для входа и выхода из позиции.

Parts Off – кнопка включения/отключения разбивки ордеров «лесенкой». Настройки «лесенки» происходят в допокне PartsMode. При включении режима и выставленных значениях в допокне, нажатие кнопки Buy/Sell приведет к выставлении заявок в соответствии с выставленными значениями.

System/Virtual – выставление ордеров непосредственно на биржу, либо работа внутри скрипта.

Control Off – выбор работы с заявками с графика.

Panel – обычные заявки

Parts-In/Parts-Out – в соответствии с настройками «лесенок»



Выбора пункта Panel приводит к появлению блока потенциальной заявки на графике. Разделы блока интерактивны. Нажатие на разделе направления приводит к смене направления (Buy/Sell), зажатие раздела цены позволяет передвигать блок во всех направлениях. Х – снятие потенциальной или готовой заявки. Place – выставление заявки, превращение из потенциальной в активную. При этом подпись поменяется на Virtual или System, чтобы будет показывать способ выставления заявки.

Активную заявку также можно перемещать. Соответственно, перемещение её по оси Y приведет к снятию и выставлению по новой цене.



На картинке потенциальные заявки из режима Parts-In. Перетаскивание основной (ближней к текущей цене, с разделом Place) приведет к перетаскиванию всего массива заявок. Остальные независимы.

ВАЖНО! Исполнение заявок будет происходить в соответствии с выбранным режимом в разделах IN/OUT.

Delete orders – удаляет все текущие ордера (заявки)

 

Управляющие кнопки

Buy/Sell – выставление заявок на покупку/продажу. Всё происходит в соответствии с выбранными режимами.

Close Positions – немедленное закрытие всех позиций по всем символам. Закрытие происходит с помощью рыночных заявок.

Reverse Position – переворот позиции. Исполнение ордера в соответствии с настройками в допокне Settings (по рынку, режимы IN, режимы OUT).

 

Вкладка Indicators



Допокно разделено на две зоны: для входа и выхода из позиции. Скрипт считывает находящиеся на графике индикаторы, они доступны к выбору в левом столбце.

Далее требуется указать скрипту с какой частью индикатора он должен работать. К примеру, индикатор Левелс имеет два уровня. Необходимо прописать, взаимодействие с каким конкретно будет приводить в срабатыванию заявок на вход. К примеру, нас интересует пробой верхнего уровня для входа в лонг. Следует определить к какому «буферу» в МТ5 приписан данный уровень. Нажатие на надпись «Buffer» выведет значения всех текущих буферов на последней свече в окно «Эксперты».



Верхний Левелс на последней свече равен 6080, значит он прописан в буфере №0. Соответствующее значение прописывается в поле Buffer.

Пробой ценой вверх уровня значит, что текущее значение буфера должно быть ниже значения цены. Выбираем значок <. Value = Close. Выбираем Din (В динамике, если требуется именно пересечение). В правой колонке проставляется объем на вход. Это может быть определенное количество контрактов (Lot) либо процент от Депозита. В случае с выходом будет процент от позиции.

Нажатие на надпись IN/OUT позволит визуально проверить, где будет срабатывать выбранная схема. Будут отмечены свечи, которые следуют за свечой, на который сработали условия. Визуализация отобразится на видимой области графика. Она пропадет при выходе из окна настроек Indicators.



В данном случае выбран вход в позицию при пересечении верхнего уровня Левелс. Эти свечи отмечены синими звёздочками. Таким образом можно оценить правильность настроек.

Indicators – это конструктор, который позволяет пользователю собрать схему алгоритма. Столбец Value – выбор агента индикатора, т.е. что будет сравниваться с индикатором – какое-то значение свечи, сам с собой (разворот МА), значение другого индикатора, который задается в следующей строке и т.д.

Алгоритм выставления заявок будет отрабатывать по разному в зависимости от того, входим мы или выходим. В случае IN входы будут происходить то тех пор, поа не будет набрана заданная позиция, общий объем который вычисляется как процент от депозита, прописанный в допокне Settings, настройка Multi Margin (множитель, 1 = 100% депозита). При OUT и использовании объема сделки в процентах будет браться процент от максимума набранной позиции.

При нажатии на порядковый номер индикаторы (слева) будет меняться условие И/ИЛИ. К примеру, при необходимости входа при одновременно выполнении условий: кумулятивная дельта выше 0 и пробой ценой вверх МА, необходимо будет выставить условие «И» (вертикальная черта).

 

Вкладка Parts Mode



Настройки разделения заявки на несколько частей. Входы/выходы «Лесенкой».

Колонки ORDERS для входов. Колонки Take Profit и Stop Loss, соответственно, для выходов.

Кнопки Ticks и Lots меняют значение на Value и Percents, соответственно.

Нажатие кнопок Buy и Sell приведет к выставлению заявок частями в соответствии с настройками. Способ исполнение и выставления (системные или виртуальные заявки) будут определены в соответствии с выставленными в основном окне настройками.

 

Вкладка Smart



Настройки системы алгоритмического сопровождения исполнения заявки. Основа – разбиение заявки на несколько частей, с целью сокрытия всего объема и исполнения заявки по оптимальным ценам.

Time Out – задержка, время (в секундах), в течении которого отправленная в стакан часть общей заявки находится в нём без движения.

Shares – количество частей, на которые разбивается заявка, и их размер в отношении к друг другу. В данном случае 2/2/2/2 и 1/1/1/1 идентичные записи, которые означают разделение заявки на 4 равных части. К примеру, заявка объемом 20 контрактов будет разбита на 4 заявки объемами по 5 контрактов, которые будут отправляться в систему последовательно после исполнения каждой из частей.

Indent – отступ от лучшего бида/аска на который будет выставляться заявка. При значении 0 заявка будет кидаться в спред (при наличии) либо выставлятся по лучшему биду (в случае покупки). При значении 1 заявка выставится по лучшему биду (в случае покупки).

Если по прошествию Time Out заявке не исполнена, и находится на большем значении от спреда, чем Indent, заявка будет убрана из системы и выставлена на Indent. Таким образом заявка будет постоянно подтягиваться к цене.

Split – процесс разделения неисполненной заявки. При указании в данном окне процента, часть заявки будет по истечении TimeOut выставлена на отступ Indent. При условиий режима Direct вторая часть заявки будет выставлена по лучшей цене своего направления (при покупке – на лучший бид). Если включен режим Opposite, «сплитовая» часть уйдет на противоположенную сторону, т.е. при покупке заявка будет выставлена по цене лучшего аска, для максимально быстрого исполнения.

Режим Smart является основой разработки данного скрипта «Умных заявок». Он позволяет осуществлять «обязательное» испонение заявки через лимитные ордера, что обеспечит нулевые биржевые комиссии. Безусловно, при этом цена может уйти от изначальной.

 

Вкладка Settings



Настройки в данном окне меняются «налету». Не требуют перезагрузки скрипта.

Multi Margin – множитель для определения размера позиции относительно депозита в режиме IN работы с индикаторами.

Alert – включение/выключение алертов. Два режима. Алерт по любой сделки, либо алерт по последней сделки, которая окончательно набирает или закрытвает позицию.

Reverse Order – режим исполнения разворотной сделки. Совпадает с настройками для входа в позицию/для выхода/по рынку.

Place an Parts – выставление частичных заявок в режиме Parts. Все сразу или одна за одной (исполняется одна часть, выставляется следующая).

Work Price – используемая цена для расчетов: цена последней сделки (на рынке) или лучший бид/аск.

Set TPSL – включает автоматическую установку стоп-ордеров при входе в позицию в случае наличия отличных от 0 значений в настройках TP и SL.

Start Parts Out – аналогично при наличии прописанных настроек для выхода из позиции частями.

Color Scheme – сохранение в файл настроенной цветовой схемы. Будет использована по умолчанию. При клике на Save цветовая схема сохраняется в файле и впоследствии может загружаться при старте Эксперта, если установлен входной параметр “Loading Scheme” в общих настройках.

 

Общие настройки



Настройки интерфейса скрипта.

В основном настройки цветовой схемы. Плюс дефолтные отстуты блоков различных видов заявок при управлении с графика от правой части графика.

При изменении настроек скрипт будет перезагружен.

***

Скрипт получился дюже полезным и удобным. Хотя некоторые настройки первоначально сложны для понимания. Делал я всё это под себя, под свои задачи. Сейчас пощупать демо-версию скрипта может любой желающий. Брать его в телеге по ссылке: MarketScreenBot

Буду рад любым пожеланиям по развитию скрипта. Возможно, кто-то предложит интересные цветовые решения и тому подобное.

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