Отрисовка стакана
Стратегия из кода может отрисовывать на панели Стакана данные аналогично кубику Стакан. Для этого необходимо написать следующий код.
- Создать наследника интерфейса IOrderBookSource, который Дизайнер использует для идентификации источника. В случае примера используется класс OrderBookSource, который является реализацией интерфейса по умолчанию:
private static readonly OrderBookSource _bookSource = new OrderBookSource("SMA");
- Переопределить свойство OrderBookSources:
public override IEnumerable<IOrderBookSource> OrderBookSources
=> new[] { _bookSource };
Таким образом стратегия будет указывать внешнему коду (в данном случае, панели Стакана), какие источники стаканов доступны. Множество источников бывает в том случае, когда стратегия работает с несколькими стаканами (разные инструменты или стаканы с различными модификациями, как например разреженный стакан).
- Добавить инициализацию подписки на стакан в код стратегии. В случае SmaStrategy добавляется в конец OnStarted метода:
var bookSubscription = new Subscription(DataType.MarketDepth, Security);
bookSubscription
.WhenOrderBookReceived(this)
.Do(book =>
{
// drawing order book
DrawOrderBook(bookSubscription, _bookSource, book);
})
.Apply(this);
Subscribe(bookSubscription);
В обработчике Do делается вызов метода DrawOrderBook, который отправляет стакан на отрисовку.
- Добавить панель Стакана и выбрать созданный в коде источник:

- После запуска стратегии на тестирование стакан будет заполняться данными:
