//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); }
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; } }
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; }
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); } }
protected virtual void GomOnMarketData(Gom.MarketDataType e) { }
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); } } }