Отрисовка стакана
Стратегия из кода может отрисовывать на панели Стакана данные аналогично кубику Стакан. Для этого необходимо написать следующий код.
- Создать наследник интерфейса 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, который отправляет стакан на отрисовку.
- Добавить панель Стакана и выбрать созданный в коде источник:
- После запуска стратегии на тестирование стакан будет заполнятся данными: