Особенности условных заявок
При построении роботов и торговых систем, принимающих торговые решения при пересечении ценой каких-либо уровней, возможны 2 различных похода. Первый - мониторинг роботом уровня цены в реальном времени, второй - использование стоп-заявок, установленных на этих уровнях и мониторинг их состояния.
Первый способ является наиболее простым. Однако он имеет существенный минус. Дело в том, что работа торгового робота в этом режиме возможна лишь при наличии соединения с брокером. Если соединения нет, терминал не получает актуальную информацию из торговой системы. Таким образом, например, робот не сможет вовремя закрыть позицию, если убытки превысили допустимый предел.
Второй способ - со стоп-заявками - лишен такого недостатка. Даже в отсутствии связи с брокером Ваша позиция будет закрыта при выполнении заложенных в ней условий. Таким образом, она с высокой вероятностью даёт страховку от неконтролируемых убытков.
Однако и такой способ не лишен своих недостатков. Дело в том, что многие алгоритмы предусматривают различного рода действия с условными заявками - их перемещение, изменение параметров и так. далее. На текущий момент любая операция с условной заявкой в системе QUIK разделяется на 2 действия: удаление старой заявки и выставление новой с измененными параметрами.
У условных заявок есть своя особеность. Операции с ней возможны только с того сервера, с которого она была установлена. Это свойство архитектуры QUIK. Например, если у брокера есть 2 соединения (сервера) и вы установили условную заявку на первом, то со второго Вы ничего с ней сделать не сможете. В терминале QUIK имеется возможность "переместить" стоп-заявку с одного сервера на другой. Делается это в контекстном меню в таблице стоп-заявок - "Сделать стоп-заявку своей" и только после этого с заявкой можно производить действия.
Все бы хорошо, но только сделать заявку своей можно только вручную. Программных способов для решения этой проблемы разработчики QUIK не предусмотрели. Чем это грозит в случае автоматизированной торговли?
Допустим, Ваш робот реализует скользящий стоп, передвигая условную стоп-завку вслед за ценой по какому-то алгоритму. Каждый раз при перестановке условной завки он ее сначала снимает, затем выставляет новую. Если во время существования позиции произошло отсоединение от сервера, на котором была выставлена условная стоп-заявка и терминал соединился с другим, переставить стоп-заявку не получится.
Такая ситуация не слишком страшна - прибыль будет меньше. Представим другой алгоритм. Робот вошел в позицию, выставил стоп. В процессе сопровождения позиции переподсоединился к другому серверу брокера. Далее сработало какое-то условие фиксации прибыли. Позиция закрыта (например лимитированным ордером) и нужно снять условную заявку. А сделать это робот не может. Чем грозит наличие лишней стоп-заявки - очевидно.
Как бороться? Использовать подключение только к одному серверу брокера. Если соединение с ним пропало, не переключаться на другой автоматически. Для этого в меню "Доступные соединения" терминала QUIK установить галочку в "При восстановлении использовать только параметры последнего соединения". В этом случае терминал не будет пробовать подключиться к другим серверам и будет пробовать восстановить связь только с тем, с которым он работал до момента потери связи. Способ неприятный, но таковы реалии.
Решение проблемы чужого сервера найдено: Сделать стоп-заявку своей
