Example #1
0
        //void ProcessDelta(int delta, bool firstTick)
        protected override void GomOnMarketData(Gom.MarketDataType e)
        {
            int delta = CalcDelta(e);

            totalvolume += delta;

            hi = Math.Max(hi, totalvolume);
            lo = Math.Min(lo, totalvolume);
        }
Example #2
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--;
            }

            Gom.MarketDataType tcTemp;

            for (int i = 0; i < queueCount; i++)
            {
                GMktData = 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 + GMktData.Volume) <= MaxVolume) || (i < (queueCount - 1)) || !splitVolume)
                {
                    Gvol2send = GMktData.Volume;
                    SendMarketData();
                }
                else
                {
                    //split volume
                    Gvol2send = 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(GMktData);
                        tickQueue.Enqueue(tcTemp);
                    }
                    else
                    {
                        tickQueue.Enqueue(GMktData);
                    }
                }
            }
        }
        protected override void GomOnMarketData(Gom.MarketDataType e)
        {
            curbardelta += CalcDelta(e);

            if (curbardelta > 0)
            {
                curdelta = Math.Max(prevdelta, 0) + curbardelta;
            }
            if (curbardelta < 0)
            {
                curdelta = Math.Min(prevdelta, 0) + curbardelta;
            }
        }
Example #4
0
        protected override void GomOnMarketData(Gom.MarketDataType e)
        {
            int delta = CalcDelta(e);

            totalvolume += e.Volume;

            if (delta > 0)
            {
                upvolume += delta;
            }
            if (delta < 0)
            {
                downvolume += delta;
            }

            deltavolume += delta;
        }
Example #5
0
        private bool FindFileNameAndOpen(DateTime date)
        {
            bool found;

            Gom.MarketDataType gomData = new Gom.MarketDataType();

            if (isRealNinja)
            {
                found = FindFileNameAndOpen(_RNFiles, ref date);

                if (found)
                {
                    _maxtime = date.AddHours(1).Ticks;
                    File.Delete(GetFileName(date.AddHours(-1), false));
                    return(true);
                }
                else
                {
                    _maxtime    = DateTime.Now.Ticks;
                    isRealNinja = false;
                    long ticktime = 0;
                    date  = new DateTime(curTime.Year, curTime.Month, curTime.Day, curTime.Hour, 0, 0);
                    found = FindFileNameAndOpen(_NotRNFiles, ref date);
                    if (found)
                    {
                        do
                        {
                            GetNextTick(ref gomData);
                            ticktime = gomData.Time.Ticks;
                        }while ((ticktime != 0L) && (ticktime <= curTime.Ticks));
                    }

                    return(ticktime > 0L);
                }
            }
            else
            {
                return(FindFileNameAndOpen(_NotRNFiles, ref date));
            }
        }
private bool FindFileNameAndOpen( DateTime date)
		{
			bool found;
			Gom.MarketDataType gomData=new Gom.MarketDataType();

			if (isRealNinja)
			{
				found=FindFileNameAndOpen(_RNFiles,ref date);
				
				if (found)
				{
					_maxtime=date.AddHours(1).Ticks;
					File.Delete(GetFileName(date.AddHours(-1),false));
					return true;
				}
				else
				{
					_maxtime=DateTime.Now.Ticks;
					isRealNinja=false;
					long ticktime=0;
					date=new DateTime(curTime.Year,curTime.Month,curTime.Day,curTime.Hour,0,0);
					found=FindFileNameAndOpen(_NotRNFiles,ref date);	
					if (found)
					do
					{
						GetNextTick(ref gomData);
						ticktime = gomData.Time.Ticks;
					}
					while ((ticktime != 0L) && (ticktime <= curTime.Ticks));
					
					return 		(ticktime>0L);
					
				}
			}
			else 
			{
				return FindFileNameAndOpen(_NotRNFiles,ref date);	
				
			}
			
		}
Example #7
0
 protected virtual void GomOnMarketData(Gom.MarketDataType e)
 {
 }
Example #8
0
 protected int CalcDelta(Gom.MarketDataType e)
 {
     return(CalcDelta(e.TickType, e.Price, e.Volume, calcMode, backupMode, filterSize, filterMode));
 }
		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--;

			Gom.MarketDataType tcTemp;

			for (int i = 0; i < queueCount; i++)
			{
				GMktData = 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 + GMktData.Volume) <= MaxVolume) || (i < (queueCount - 1)) || !splitVolume)
				{
					Gvol2send = GMktData.Volume;
					SendMarketData();
				}
				else
				{
					//split volume 						
					Gvol2send = 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(GMktData);
						tickQueue.Enqueue(tcTemp);
					}
					else
						tickQueue.Enqueue(GMktData);
				}
			}
		}