FastQuant.DataProcessor.OnData C# (CSharp) Méthode

OnData() protected méthode

protected OnData ( DataObject obj ) : DataObject
obj DataObject
Résultat DataObject
        protected virtual DataObject OnData(DataObject obj)
        {
            if (obj.TypeId == DataObjectType.Bar)
            {
                var bar = (Bar)obj;
                if (EmitBarOpen)
                    Emit(new Bar(bar.OpenDateTime, bar.OpenDateTime, bar.InstrumentId, bar.Type, bar.Size, bar.Open, 0, 0, 0, 0, 0));

                if (EmitBarOpenTrade)
                    Emit(new Trade(bar.DateTime, 0, bar.InstrumentId, bar.Open, (int)(bar.Volume / 4)));

                if (EmitBarHighTrade && EmitBarLowTrade)
                {
                    if (bar.Close > bar.Open)
                    {
                        Emit(new Trade(new DateTime(bar.DateTime.Ticks + (bar.CloseDateTime.Ticks - bar.DateTime.Ticks) / 3), 0, bar.InstrumentId, bar.Low, (int)(bar.Volume / 4)));
                        Emit(new Trade(new DateTime(bar.DateTime.Ticks + (bar.CloseDateTime.Ticks - bar.DateTime.Ticks) * 2 / 3), 0, bar.InstrumentId, bar.High, (int)(bar.Volume / 4)));
                    }
                    else
                    {
                        Emit(new Trade(new DateTime(bar.DateTime.Ticks + (bar.CloseDateTime.Ticks - bar.DateTime.Ticks) / 3), 0, bar.InstrumentId, bar.High, (int)(bar.Volume / 4L)));
                        Emit(new Trade(new DateTime(bar.DateTime.Ticks + (bar.CloseDateTime.Ticks - bar.DateTime.Ticks) * 2 / 3), 0, bar.InstrumentId, bar.Low, (int)(bar.Volume / 4)));
                    }
                }
                else
                {
                    if (EmitBarHighTrade)
                        Emit(new Trade(new DateTime(bar.DateTime.Ticks + (bar.CloseDateTime.Ticks - bar.DateTime.Ticks) / 2), 0, bar.InstrumentId, bar.High, (int)(bar.Volume / 4)));

                    if (EmitBarLowTrade)
                        Emit(new Trade(new DateTime(bar.DateTime.Ticks + (bar.CloseDateTime.Ticks - bar.DateTime.Ticks) / 2), 0, bar.InstrumentId, bar.Low, (int)(bar.Volume / 4)));
                }

                if (EmitBarCloseTrade)
                    Emit(new Trade(bar.CloseDateTime, 0, bar.InstrumentId, bar.Close, (int)(bar.Volume / 4)));

                if (!EmitBar)
                    return null;
            }
            return obj;
        }