Table of Contents

Отрисовка стакана

Стратегия из кода может отрисовывать на панели Стакана данные аналогично кубику Стакан. Для этого необходимо написать следующий код.

  1. Создать наследник интерфейса IOrderBookSource, который Дизайнер использует для идентификации источника. В случае примера используется класс OrderBookSource, который является реализацией интерфейса по-умолчанию:
private static readonly OrderBookSource _bookSource = new OrderBookSource("SMA");
  1. Переопределить свойство OrderBookSources:
public override IEnumerable<IOrderBookSource> OrderBookSources
	=> new[] { _bookSource };

Таким образом стратегия будет указывать внешнем коду (в данном случае, панели Стакана) какие источники стаканов доступны. Множество источников бывает в том случае, когда стратегия работает с несколькими стаканами (разные инструменты, или стаканы с различными модификациями, как например, разреженный стакан).

  1. Добавить инициализацию подписки на стакан в код стратегии. В случае 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, который отправляет стакан на отрисовку.

  1. Добавить панель Стакана и выбрать созданный в коде источник:

Designer_Source_Code_OrderBook_00

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

Designer_Source_Code_OrderBook_01