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

Рис. 1. Стакан фьючерса на доллар 9.15
Как видим, спрэд составляет более 1000 рублей, за день было продано 5 контрактов (по состоянию на 13 июня 2012 года, 18:13). Возьмем другой инструмент: HYDR-9.12 (фьючерс на акции «РусГидро»). На рис. 2 вы видите его стакан. Тут спред гораздо меньше, порядка 30-40 рублей, но зато и объемы торгов выше. Так, с начала торгов до 18.20 13 июня 2012 года оборот составил 1034 контракта.

Рис. 2. Стакан фьючерса на РусГидро срок исполнения сентябрь 2012 года.
Таким образом, просматривая различные инструменты, мы можем подобрать инструмент с приемлемым для нас спредом и объемом торгов. Торговать спреды можно и руками, но такая работа требует постоянного внимания к тому, что происходит в стакане, а также большого числа ручных операций по вводу и снятию заявок. Успех торговли во многом будет зависеть от выбора инструмента, а вот совершения самих операций вполне можно доверить роботу, которого мы напишем на языке Qpile для терминала Quik.
Работает робот следующим образом: делает запрос номеров выставленных заявок и стакана, вычисляет текущий размер спреда. Далее идет проверка, надо ли закрывать позицию (вышло время или спред меньше критического). Если позиция подлежит закрытию, то выставленные заявки удаляются, а существующие позиции закрываются по рынку.
Затем робот проверяет, надо ли передвигать существующие заявки. Сдвиг осуществляет в том случае, если поменялись лучшие цены на покупку или на продажу. При сдвиге старая заявка удаляется, а новая выставляется с учетом текущего остатка, так как пока заявка висела, она могла частично исполниться.
Последним этапом проверяется условие входа в позицию, а именно: в системе нет активных заявок, а спред больше или равен pSpred. В условиях проверки, надо ли выставлять заявку, также присутствует проверка времени, после которого торговать нельзя и критический спред. Проверка времени присутствует и в условиях сдвига заявки.
Будем наводить движуху в неликвиде.
Код робота и его описание
robostroy.ru/community/Article.aspx?id=358
Сейчас такой халявы давно нету даже на таких низколеквидных бумагах.