internal void OnData(DataObject obj)
{
/*
var tick = (Tick)obj;
var items = ItemLists[tick.InstrumentId];
if (items == null)
return;
int i = 0;
while (i < items.Count)
{
var item = items[i];
switch (item.barInput)
{
case BarInput.Trade:
if (tick.TypeId == DataObjectType.Trade)
{
item.Process(tick);
i++;
continue;
}
break;
case BarInput.Bid:
if (tick.TypeId == DataObjectType.Bid)
{
item.Process(tick);
i++;
continue;
}
break;
case BarInput.Ask:
if (tick.TypeId == DataObjectType.Ask)
{
item.Process(tick);
i++;
continue;
}
break;
case BarInput.Middle:
switch (tick.TypeId)
{
case DataObjectType.Bid:
{
var ask = this.framework.DataManager.GetAsk(tick.InstrumentId);
if (ask == null)
{
i++;
continue;
}
tick = new Tick(obj.DateTime, tick.ProviderId, tick.InstrumentId, (ask.Price + tick.Price) / 2.0, (ask.Size + tick.Size) / 2);
break;
}
case DataObjectType.Ask:
{
Bid bid = this.framework.DataManager.GetBid(tick.InstrumentId);
if (bid == null)
{
i++;
continue;
}
tick = new Tick(obj.dateTime, tick.ProviderId, tick.InstrumentId, (bid.Price + tick.Price) / 2.0, (bid.Size + tick.Size) / 2);
break;
}
case DataObjectType.Trade:
i++;
continue;
}
if (obj.TypeId != DataObjectType.Ask)
{
item.Process(tick);
i++;
continue;
}
break;
case BarInput.Tick:
{
item.Process(tick);
i++;
continue;
}
case BarInput.BidAsk:
if (tick.TypeId != DataObjectType.Trade)
{
item.Process(tick);
i++;
continue;
}
break;
default:
Console.WriteLine($"BarFactory::OnData BarInput is not supported : {item.barInput}");
break;
}
i++;
}
*/
var tick = (Tick) obj;
var items = ItemLists[tick.InstrumentId];
if (items != null)
{
int i = 0;
while (i < items.Count)
{
var item = items[i];
switch (item.barInput)
{
case BarInput.Trade:
if (tick.TypeId == DataObjectType.Trade)
{
goto IL_19C;
}
break;
case BarInput.Bid:
if (tick.TypeId == DataObjectType.Bid)
{
goto IL_19C;
}
break;
case BarInput.Ask:
if (tick.TypeId == DataObjectType.Ask)
{
goto IL_19C;
}
break;
case BarInput.Middle:
switch (tick.TypeId)
{
case DataObjectType.Bid:
{
var ask = this.framework.DataManager.GetAsk(tick.InstrumentId);
if (ask == null)
{
goto IL_1A3;
}
tick = new Tick(obj.dateTime, tick.ProviderId, tick.InstrumentId,
(ask.Price + tick.Price)/2.0, (ask.Size + tick.Size)/2);
break;
}
case DataObjectType.Ask:
{
var bid = this.framework.DataManager.GetBid(tick.InstrumentId);
if (bid == null)
{
goto IL_1A3;
}
tick = new Tick(obj.dateTime, tick.ProviderId, tick.InstrumentId,
(bid.Price + tick.Price)/2.0, (bid.Size + tick.Size)/2);
break;
}
case DataObjectType.Trade:
goto IL_1A3;
}
if (obj.TypeId != DataObjectType.Ask)
{
goto IL_19C;
}
break;
case BarInput.Tick:
goto IL_19C;
case BarInput.BidAsk:
if (tick.TypeId != DataObjectType.Trade)
{
goto IL_19C;
}
break;
default:
Console.WriteLine($"BarFactory::OnData BarInput is not supported : {item.barInput}");
break;
}
IL_1A3:
i++;
continue;
IL_19C:
item.Process(tick);
goto IL_1A3;
}
}
}