FastQuant.BarFactory.OnData C# (CSharp) Method

OnData() private method

private OnData ( DataObject obj ) : void
obj DataObject
return void
        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;
                }
            }

        }

Usage Example

Example #1
0
        private void OnAsk(Event e)
        {
            DataEventCount++;
            var ask = (Ask)e;

            SyncLocalClockWithDataObject(ask);
            SyncExchangeClockWithTick(ask, nameof(OnAsk));
            BarFactory.OnData(ask);
            this.framework.DataManager.OnAsk(ask);
            this.framework.InstrumentManager.GetById(ask.InstrumentId).Ask = ask;
            this.framework.ProviderManager.ExecutionSimulator.OnAsk(ask);
            this.framework.StrategyManager.OnAsk(ask);
        }
All Usage Examples Of FastQuant.BarFactory::OnData