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.
- 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");
- 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).
- 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.
- Adicione o painel Livro de ordens e selecione a fonte criada no código:

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