public void updatePreMergeRTBarSeries(RTDataBar bar)
        {
            if (isDataMerged)
            {
                return;
            }

            DateTime          time           = bar.time;
            MarketDataElement currentRTBData = MarketDataUtil.convertBarToMarketDataElement(bar);

            if (preMergeRTBarSeries == null)
            {
                preMergeRTBarSeries = new SeriesBuilder <DateTime, MarketDataElement>()
                {
                    { time, currentRTBData }
                }.Series;
            }
            else
            {
                if (!preMergeRTBarSeries.ContainsKey(time))
                {
                    preMergeRTBarSeries = preMergeRTBarSeries.Merge(new SeriesBuilder <DateTime, MarketDataElement>()
                    {
                        { time, currentRTBData }
                    }.Series);
                }
            }
            return;
        }
Exemplo n.º 2
0
        private static Series <DateTime, MarketDataElement> addMarketDataElementWithTimeOnlyToSeries(DateTime dateTime, Series <DateTime, MarketDataElement> series)
        {
            MarketDataElement currentElement = MarketDataUtil.createHLOC(dateTime, "HLOC", "HSI", "FUT");

            currentElement.volume = 900;
            MarketDataUtil.setHLOC(currentElement, 20200, 20000, 20050, 20150);

            if (series == null)
            {
                series = new SeriesBuilder <DateTime, MarketDataElement>()
                {
                    { dateTime, currentElement }
                }.Series;
            }
            else
            {
                if (!series.ContainsKey(dateTime))
                {
                    series = series.Merge(new SeriesBuilder <DateTime, MarketDataElement>()
                    {
                        { dateTime, currentElement }
                    }.Series);
                }
            }
            return(series);
        }
Exemplo n.º 3
0
        public void updateRTBarSeriesActions()
        {
            if (currentCompleteRTBar == null)
            {
                return;
            }

            MarketDataElement data = MarketDataUtil.convertBarToMarketDataElement(currentCompleteRTBar);

            if (!isRTBarMergeNeed || TimeBarSeries != null)
            {
                if (TimeBarSeries != null)
                {
                    if (TimeBarSeries.ContainsKey(data.time))
                    {
                        return;
                    }
                    TimeBarSeries = TimeBarSeries.Merge(new SeriesBuilder <DateTime, MarketDataElement>()
                    {
                        { data.time, data }
                    }.Series);
                }
                else
                {
                    TimeBarSeries = new SeriesBuilder <DateTime, MarketDataElement>()
                    {
                        { data.time, data }
                    }
                }.Series;
        public Boolean updateTimeBarSeries(IBMessage message)
        {
            Boolean isAdded = false;

            if ((!isDataMerged && getNeedMergeFlag()) || !getNeedMergeFlag())
            {
                return(isAdded);
            }
            Series <DateTime, MarketDataElement> TimeBarSeries = appMDManager.getTimeBarSeries();

            if (TimeBarSeries == null)
            {
                return(isAdded);
            }

            HistoricalDataMessage histMessage = (HistoricalDataMessage)message;

            double h   = Convert.ToDouble(histMessage.High);
            double l   = Convert.ToDouble(histMessage.Low);
            double o   = Convert.ToDouble(histMessage.Open);
            double c   = Convert.ToDouble(histMessage.Close);
            double vol = Convert.ToDouble(histMessage.Volume);

            DateTime          time           = DateTime.ParseExact(histMessage.Date.Trim(), "yyyyMMdd  HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal);
            MarketDataElement currentHsiData = MarketDataUtil.createHLOC(time, "HLOC", "HSI", "FUT");

            currentHsiData.volume = vol;
            currentHsiData.time   = time;


            if (TimeBarSeries == null)
            {
                TimeBarSeries = new SeriesBuilder <DateTime, MarketDataElement>()
                {
                    { time, currentHsiData }
                }.Series;
                isAdded = true;
            }
            else
            {
                MarketDataElement element = TimeBarSeries.GetAt(TimeBarSeries.KeyCount - 1);
                if (!TimeBarSeries.ContainsKey(time))
                {
                    TimeBarSeries = TimeBarSeries.Merge(new SeriesBuilder <DateTime, MarketDataElement>()
                    {
                        { time, currentHsiData }
                    }.Series);
                    isAdded = true;
                }
            }
            return(isAdded);
        }
        public Boolean updatePreMergeHistBarSeries(IBMessage message)
        {
            Boolean isAdded = false;

            if (isDataMerged)
            {
                return(isAdded);
            }

            HistoricalDataMessage histMessage = (HistoricalDataMessage)message;

            double h   = Convert.ToDouble(histMessage.High);
            double l   = Convert.ToDouble(histMessage.Low);
            double o   = Convert.ToDouble(histMessage.Open);
            double c   = Convert.ToDouble(histMessage.Close);
            double vol = Convert.ToDouble(histMessage.Volume);

            DateTime          time            = DateTime.ParseExact(histMessage.Date.Trim(), "yyyyMMdd  HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal);
            MarketDataElement currentHistData = MarketDataUtil.createHLOC(time, "HLOC", "HSI", "FUT");

            MarketDataUtil.setHLOC(currentHistData, h, l, o, c);
            currentHistData.volume = vol;
            currentHistData.time   = time;
            if (preMergeHistBarSeries == null)
            {
                preMergeHistBarSeries = new SeriesBuilder <DateTime, MarketDataElement>()
                {
                    { time, currentHistData }
                }.Series;
                isAdded = true;
            }
            else
            {
                if (!preMergeHistBarSeries.ContainsKey(time))
                {
                    preMergeHistBarSeries = preMergeHistBarSeries.Merge(new SeriesBuilder <DateTime, MarketDataElement>()
                    {
                        { time, currentHistData }
                    }.Series);
                    isAdded = true;
                }
            }
            return(isAdded);
        }
Exemplo n.º 6
0
        protected void calculateCurrentOpen(Series <DateTime, MarketDataElement> series)
        {
            if (currentOpenPrice != 0)
            {
                return;
            }
            MarketDataElement lastItem = (MarketDataElement)series.GetAt(series.KeyCount - 1);
            MarketDataElement openItem = MarketDateElementHelper.getFirstAvaMarketData(series, MarketDataUtil.getStartTime(lastItem.time));

            currentOpenPrice = openItem.open;
            log.Info("[calculateCurrentOpen] : currentOpen = " + currentOpenPrice);
        }