В первую очередь хочу поблагодарить создателя проекта Stock#, Михаила Сухова.
Я считаю, что Stock# – достаточно успешный стартап, который объединяет прогрессивно мыслящих трейдеров и, безусловно, является частью МФЦ:)
В этой теме предлагаю обсудить вопросы, связанные с созданием алгоритма торгового робота.
Поскольку я торгую опционами, примеры буду приводить для этих инструментов. Не обессудьте.
Начнем с блок-схемы, описывающей основные элементы системы.
1. Выбор источника данных.
В качестве источника данных может выступать торговый терминал (Quik, Альфа-Директ, SmartCOM) или шлюз Plaza2.
2. Проверка работы источника данных
В случае проблем с подключением выдает сообщение об ошибке и предлагает выбрать другой источник данных.
3. Выбор стратегии
Предоставляет возможность тестировать несколько стратегий в одной оболочке. Например, торговля волатильностью, торговля спредами, арбитраж.
4. Грааль
Основной элемент системы. Рассчитывает оптимальные параметры для совершения торговых операций.
5. Проверка сигналов на сделку
Решение о сделке принимается на основании получаемых данных. В случае если соблюдается условие, необходимое для совершения сделки, программа переходит к этапу отправки заявки.
На этом этапе предусматривается возможность изменять параметры для принятия решения. Например, менять значение волатильности или стоимости спреда -n страйков от центра.
6. Отправка заявки
Программа отправляет заявку в торговый терминал или шлюз. Если от биржи приходит ответ о выставлении заявки, сообщает об этом пользователю. Если возвращает ошибку или не приходит ответ, сообщает пользователю об ошибке и пытается отправить заявку повторно.
Здесь можно настроить время или количество попыток для отправки заявки.
7. Проверка активных заявок
Этот элемент проверяет, исполнилась ли заявка. В случае исполнения заявки и ответа от биржи сообщает пользователю о сделке.
8. Изменение заявки
Если заявка не исполнилась, предлагает изменить цену.
Бывают такие ситуации, когда мы согласны на исполнение по худшей цене. Можно ввести условие, например, увеличивать цену на 15 пунктов, если заявка не исполняется в течение 5 секунд.
Или исполнить по рынку, если заявка висит больше 15 секунд. При этом алгоритм перейдет в п.6 (Отправка заявки). Программа также сообщает пользователю о снятии первоначальной заявки.
Буду признателен за конструктивную критику и рацпредложения.
Алгоритм
Оригинал