Особенности условных заявок

Опубликовано в FAQ Общее

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

Первый способ является наиболее простым. Однако он имеет существенный минус. Дело в том, что работа торгового робота в этом режиме возможна лишь при наличии соединения с брокером. Если соединения нет, терминал не получает актуальную информацию из торговой системы. Таким образом, например, робот не сможет вовремя закрыть позицию, если убытки превысили допустимый предел.

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

Однако и такой способ не лишен своих недостатков. Дело в том, что многие алгоритмы предусматривают различного рода действия с условными заявками - их перемещение, изменение параметров и так. далее. На текущий момент любая операция с условной заявкой в системе QUIK разделяется на 2 действия: удаление старой заявки и выставление новой с измененными параметрами.

У условных заявок есть своя особеность. Операции с ней возможны только с того сервера, с которого она была установлена. Это свойство архитектуры QUIK. Например, если у брокера есть 2 соединения (сервера) и вы установили условную заявку на первом, то со второго Вы ничего с ней сделать не сможете. В терминале QUIK имеется возможность "переместить" стоп-заявку с одного сервера на другой. Делается это в контекстном меню в таблице стоп-заявок - "Сделать стоп-заявку своей" и только после этого с заявкой можно производить действия.

Все бы хорошо, но только сделать заявку своей можно только вручную. Программных способов для решения этой проблемы разработчики QUIK не предусмотрели. Чем это грозит в случае автоматизированной торговли?

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

Такая ситуация не слишком страшна - прибыль будет меньше. Представим другой алгоритм. Робот вошел в позицию, выставил стоп. В процессе сопровождения позиции переподсоединился к другому серверу брокера. Далее сработало какое-то условие фиксации прибыли. Позиция закрыта (например лимитированным ордером) и нужно снять условную заявку. А сделать это робот не может. Чем грозит наличие лишней стоп-заявки - очевидно.

Как бороться? Использовать подключение только к одному серверу брокера. Если соединение с ним пропало, не переключаться на другой автоматически. Для этого в меню "Доступные соединения" терминала QUIK установить галочку в "При восстановлении использовать только параметры последнего соединения". В этом случае терминал не будет пробовать подключиться к другим серверам и будет пробовать восстановить связь только с тем, с которым он работал до момента потери связи. Способ неприятный, но таковы реалии.

 


 

Решение проблемы чужого сервера найдено: Сделать стоп-заявку своей

Комментарии   

# Юрк 24.08.2016 18:22
Приветствую, спасибо за Ваш сайт. Оч полезный.
Не подскажите, как получить qpile-ом значение поля "Сервер" в таблице стоп-заявок. Вариант с Get_Value(Get_I tem("STOP_ORDER S",i),"SERVER") выдает пустой результат.
Спасибо
# admin 24.08.2016 20:12
Добрый день!

Попробуйте адресоваться к полю OWNER_SERVER
Чтобы в дальнейшем узнавать имена необходимых параметров, создайте вывод в эксель необходимой вам таблицы с флагом "Формальные параметры" и смотрите в нем названия параметров столбцов.

Статья эта написана довольно давно и решение для автоматического перенесения стоп-заявки на текущий сервер уже имеется. Я добавил ссылку в статью.
# Юрк 24.08.2016 22:22
Да, за ссылку спасибо. Я ее уже давно видел. Но чтобы "воспользоватьс я" функцией, надо же сначала определить, перенесена ли активная стоп-заявка на другой сервер.
С OWNER все получилось. Спасибо большое!

Недостаточно прав для комментирования

Библиотека