Desenhar o livro de ordens

Uma estratégia criada a partir de código pode desenhar dados no painel Livro de ordens, de forma semelhante ao cubo Painel de livro de ofertas. Para isso, é necessário escrever o seguinte código.

  1. Crie um descendente da interface IOrderBookSource, que o Designer usa para identificar a fonte. No exemplo, é usada a classe OrderBookSource, que é a implementação predefinida da interface:
private static readonly OrderBookSource _bookSource = new OrderBookSource("SMA");
  1. Substitua a propriedade OrderBookSources:
public override IEnumerable<IOrderBookSource> OrderBookSources
	=> new[] { _bookSource };

Assim, a estratégia indicará ao código externo (neste caso, o painel Livro de ordens) quais as fontes de livros de ordens disponíveis. A multiplicidade de fontes ocorre quando a estratégia trabalha com vários livros de ordens (instrumentos diferentes, ou livros de ordens com várias modificações, como, por exemplo, um livro de ordens afinado).

  1. Adicione a inicialização da subscrição ao livro de ordens no código da estratégia. No caso de SmaStrategy, ela é adicionada ao fim do método OnStarted:
var bookSubscription = new Subscription(DataType.MarketDepth, Security);
			
bookSubscription
	.WhenOrderBookReceived(this)
	.Do(book =>
	{
		// desenhar o livro de ordens
		DrawOrderBook(bookSubscription, _bookSource, book);
	})
	.Apply(this);
			
Subscribe(bookSubscription);

No manipulador Do, é feita uma chamada ao método DrawOrderBook, que envia o livro de ordens para desenho.

  1. Adicione o painel Livro de ordens e selecione a fonte criada no código:

Designer_Source_Code_OrderBook_00

  1. Depois de lançar a estratégia para teste, o livro de ordens será preenchido com dados:

Designer_Source_Code_OrderBook_01