绘制订单簿

代码策略可以在订单簿面板中绘制数据,效果与市场深度面板模块相同。为此,需要编写以下代码。

  1. 创建 IOrderBookSource 接口的实现,Designer 使用该接口识别数据源。本例使用 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 =>
	{
		// 绘制订单簿
		DrawOrderBook(bookSubscription, _bookSource, book);
	})
	.Apply(this);
			
Subscribe(bookSubscription);

在 Do 处理程序中调用 DrawOrderBook 方法,将订单簿发送到界面进行绘制。

  1. 添加订单簿面板,并选择在代码中创建的数据源:

Designer_Source_Code_OrderBook_00

  1. 启动策略测试后,订单簿中会显示数据:

Designer_Source_Code_OrderBook_01