绘制订单簿
代码策略可以在订单簿面板中绘制数据,效果与市场深度面板模块相同。为此,需要编写以下代码。
- 创建 IOrderBookSource 接口的实现,Designer 使用该接口识别数据源。本例使用 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 =>
{
// 绘制订单簿
DrawOrderBook(bookSubscription, _bookSource, book);
})
.Apply(this);
Subscribe(bookSubscription);
在 Do 处理程序中调用 DrawOrderBook 方法,将订单簿发送到界面进行绘制。
- 添加订单簿面板,并选择在代码中创建的数据源:

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