Example #1
0
        private void _OnBarUpdateRealTime()
        {
            if (FirstTickOfBar)
            {
                _curBarVol = 0;
            }

            //now we empty the tick queue used in OnMarketData
            int queueCount = _tickQueue.Count;

            // if COBC=true then last tick belongs to next bar
            if (CalculateOnBarClose)
            {
                queueCount--;
            }

            GMarketDataType tcTemp;

            for (int i = 0; i < queueCount; i++)
            {
                _mktData = _tickQueue.Dequeue();

                //not the same process if we have to split volume or not.
                //if we don't, we send all volume
                //we only split on volume chart, if volume is too high, if it is the last tick of the queue and if we asked for splitting

                if ((BarsPeriod.Id != PeriodType.Volume) || ((_curBarVol + _mktData.volume) <= _maxVolume) || (i < (queueCount - 1)) || !_splitVolume)
                {
                    _vol2Send = _mktData.volume;
                    _SendMarketData();
                }
                else
                {
                    //split volume
                    _vol2Send = Math.Max(_maxVolume - _curBarVol, 0);
                    _SendMarketData();//Math.Max(MaxVolume - curBarVol, 0), FirstTickOfBar);

                    //requeue remaining volume
                    //if COBC=true we have to remove the last tick or we will have an ordering problem
                    if (CalculateOnBarClose)
                    {
                        tcTemp = _tickQueue.Dequeue();
                        _tickQueue.Enqueue(_mktData);
                        _tickQueue.Enqueue(tcTemp);
                    }
                    else
                    {
                        _tickQueue.Enqueue(_mktData);
                    }
                }
            }
        }
Example #2
0
 protected virtual void GOnMarketData(GMarketDataType e)
 {
 }
 protected int CalcDelta(GMarketDataType e)
 {
     return(_CalcDelta(e.tickType, e.price, e.volume, _calcMode, _backupMode, _filterSize, _filterMode));
 }