Beispiel #1
0
        private void ForwardToday_KLineData(IKLineData_RealTime klineData, KLinePeriod period)
        {
            ITickData_Extend currentTickData = forwardData.CurrentTickData;
            ITickBar         nextTickBar     = currentTickData.GetBar(currentTickData.BarPos + 1);

            //日线,肯定不会跳到下一个bar
            if (period.Equals(KLinePeriod.KLinePeriod_1Day))
            {
                dic_KLinePeriod_IsEnd[period] = false;
                klineData.ChangeCurrentBar(GetKLineBar(klineData, nextTickBar));
                return;
            }
            double nextTickTime   = nextTickBar.Time;
            int    nextKLineIndex = FindNextKLineIndex(klineData, nextTickTime);

            if (nextKLineIndex == klineData.BarPos)
            {
                dic_KLinePeriod_IsEnd[period] = false;
                klineData.ChangeCurrentBar(GetKLineBar(klineData, nextTickBar));
            }
            else
            {
                dic_KLinePeriod_IsEnd[period] = true;
                klineData.ChangeCurrentBar(GetKLineBar(nextTickBar), nextKLineIndex);
            }
        }
Beispiel #2
0
        public bool Forward()
        {
            if (isEnd)
            {
                return(false);
            }

            ITickData currentTickData = forwardData.CurrentTickData;

            if (currentTickData == null || currentTickData.BarPos + 1 >= currentTickData.Length)
            {
                bool forwardNextDay = ForwardNextDay();
                currentTickData = forwardData.CurrentTickData;
                if (currentTickData != null)
                {
                    if (currentTickData.BarPos + 1 < currentTickData.Length)
                    {
                        isDayEnd = false;
                    }
                    isDayStart = true;
                    this.isTradingTimeStart = true;
                    this.isTradingTimeEnd   = false;
                    ForwardNextDay_AttachCode(currentTickData.TradingDay);
                }
                if (forwardNextDay)
                {
                    DealEvents();
                }
                return(forwardNextDay);
            }
            else
            {
                isDayStart = false;
            }

            ForwardToday();
            ForwardToday_AttachCode();
            if (currentTickData.BarPos + 1 >= currentTickData.Length)
            {
                isDayEnd = true;
                KLinePeriod[] periods = dic_KLinePeriod_IsEnd.Keys.ToArray <KLinePeriod>();
                for (int i = 0; i < periods.Length; i++)
                {
                    KLinePeriod period = periods[i];
                    if (period.PeriodType < KLineTimeType.DAY || period.Equals(KLinePeriod.KLinePeriod_1Day))
                    {
                        forwardData.GetKLineData(period).ResetCurrentBar();
                        dic_KLinePeriod_IsEnd[periods[i]] = true;
                    }
                }
            }
            else
            {
                isDayEnd = false;
            }
            DealEvents();
            return(true);
        }
        public DataForForward_CodeIndeier(DataForForward_Code data)
        {
            this.data = data;
            IList <KLinePeriod> periods = data.ReferedKLinePeriods;

            for (int i = 0; i < periods.Count; i++)
            {
                KLinePeriod period = periods[i];
                if (period.Equals(data.MainKLinePeriod))
                {
                    continue;
                }
                dic_Period_CurrentIndex.Add(period, data.GetKLineData(period).BarPos);
            }
            this.Index();
        }
Beispiel #4
0
 private static void PrintData(DataForForward_Code dataForForward, ForwardDataIndeier indeier, IKLineData_Extend klineData, int mainBarPos, KLinePeriod mainPeriod, List <string> list_OnBar)
 {
     Console.WriteLine(klineData.Period + ":" + klineData.GetBar(mainBarPos));
     list_OnBar.Add(klineData.Period + ":" + klineData.GetBar(mainBarPos));
     for (int m = 0; m < dataForForward.ReferedKLinePeriods.Count; m++)
     {
         KLinePeriod period = dataForForward.ReferedKLinePeriods[m];
         if (mainPeriod.Equals(period))
         {
             continue;
         }
         int barPos = indeier.GetOtherKLineBarPosIfFinished(mainBarPos, period);
         if (barPos >= 0)
         {
             IKLineData otherKLine = dataForForward.GetKLineData(period);
             Console.WriteLine(period + ":" + otherKLine.GetBar(barPos));
             list_OnBar.Add(period + ":" + otherKLine.GetBar(barPos));
         }
     }
     Console.WriteLine("分时线:" + dataForForward.CurrentTimeLineData.GetBar(mainBarPos));
     list_OnBar.Add("分时线:" + dataForForward.CurrentTimeLineData.GetBar(mainBarPos));
 }