private bool FillLimitOrder(Order order)
{
if (order.Type != OrderType.Limit)
return false;
int iId = order.InstrumentId;
if (FillOnQuote)
{
var ask = this.framework.DataManager.GetAsk(iId);
if (ask != null && this.FillWithAsk(order, ask))
{
return true;
}
var bid = this.framework.DataManager.GetBid(iId);
if (bid != null && this.FillWithBid(order, bid))
{
return true;
}
}
if (FillOnTrade)
{
Trade trade = this.framework.DataManager.GetTrade(iId);
if (trade != null && this.FillWithTrade(order, trade))
{
return true;
}
}
if (FillOnBar)
{
var bar = this.framework.DataManager.GetBar(iId);
if (BarFilter.Count != 0 && !BarFilter.Contains(bar.Type, bar.Size))
{
return false;
}
if (bar != null && this.FillWithBar(order, bar))
{
return true;
}
}
return false;
}