В данный момент в платформе присутствуют некоторые неудобства, связанные с выбором роутов для отправки ордеров.
Сейчас платформой полностью поддерживаются ордера, отправленные на инструменты из списка Trader.Securities. Если нужно отправить ордер на роут, не представленный в этом списке, то приходится прибегать ко всяким ухищрениям.
В данный список инструменты попадают следующими путями (может есть еще, но я нашел только эти):
1. Trader.LookupSecurities() и ждем, когда нужная нам ECN появится в списке. Это произойдет только если у нас есть подписка на данные по нашей ECN (BATS Book и пр.).
2. Если в этот день по нужному нам инструменту и роуту уже были совершены какие-либо действия, например поставлен и отменен ордер, тогда такой инструмент сам появляется в списке.
Есть способ отправки ордера на инструмент, не представленный в данном списке. При создании ордера создаем инструмент сами, и отправляем ордер на него.
Пример:
Code
var sec = new Security()
{
Code = "C",
Board = new ExchangeBoard()
{
Code = "BATS",
},
};
Ордер отправится и появится в терминале, но фреймворк не ожидает такого развития событий и начинаются всякие глюки. Создается автоматически еще один ордер и работа идет уже с ним, а наш ордер с вручную созданным инструментом не обновляется. При отмене ордера он может продублироваться еще раз и т.п.
Еще одна проблема связана с тем, что при отправке описанным выше способом ордера на какой-нибудь нестандартный роут, например "NSDQ", фреймворк его заблокирует и никуда не отправит. У меня в платформе к примеру есть отдельные роуты для стоп ордеров, соответственно на них тоже ничего не уходит ни в каком виде.
В связи с этим просьба реализовать в будущих версиях какой-нибудь адекватный механизм отправки с отслеживанием ордеров на произвольные роуты без необходимости подписки на котировки, выполнения LookupSecurities() и какой-либо деятельности в терминале перед торговлей.