示例#1
0
        private IKLineData GetKLineData(string code, KLinePeriod klinePeriod, IList <int> openDates, float lastEndPrice, int lastEndHold)
        {
            List <IKLineData> klineDataList = new List <IKLineData>();

            for (int i = 0; i < openDates.Count; i++)
            {
                int        openDate  = openDates[i];
                IKLineData klineData = GetKLineData(code, openDate, klinePeriod);
                if (klineData != null)
                {
                    klineDataList.Add(klineData);
                    lastEndPrice = klineData.Arr_End[klineData.Length - 1];
                    lastEndHold  = klineData.Arr_Hold[klineData.Length - 1];
                }
                else
                {
                    IList <double[]> tradingTime = GetTradingTime(code, openDate);
                    IList <double[]> klineTimes  = TradingTimeUtils.GetKLineTimeList(tradingTime, klinePeriod);
                    klineData = DataTransfer_Tick2KLine.GetEmptyKLineData(klineTimes, lastEndPrice, lastEndHold);
                    klineDataList.Add(klineData);
                }
            }

            return(KLineData.Merge(klineDataList));
        }
示例#2
0
        /// <summary>
        /// 将一天的tick数据转换为K线
        /// </summary>
        /// <param name="tickData"></param>
        /// <param name="tradingPeriod"></param>
        /// <param name="klinePeriod"></param>
        /// <returns></returns>
        public static IKLineData Transfer(ITickData tickData, IList <double[]> tradingPeriod, KLinePeriod klinePeriod, float yesterdayEndPrice, int yesterdayEndHold)
        {
            if (tickData == null)
            {
                return(null);
            }
            List <double[]>         klineTimeList = TradingTimeUtils.GetKLineTimeList(tradingPeriod, klinePeriod);
            DataTransfer_Tick2KLine transfer      = new DataTransfer_Tick2KLine(tickData, klineTimeList, yesterdayEndPrice, yesterdayEndHold);

            return(transfer.CalcKLineData());
        }
示例#3
0
 public KLineDataTimeInfo GetKLineDataTimeInfo(string code, int startDate, int endDate, KLinePeriod klinePeriod)
 {
     IList <double[]>[] periodArr;
     if (klinePeriod.PeriodType == KLineTimeType.SECOND)
     {
         periodArr = GetPeriodArr(code, startDate, endDate, KLinePeriod.KLinePeriod_1Minute);
     }
     else
     {
         periodArr = GetPeriodArr(code, startDate, endDate, klinePeriod);
     }
     return(TradingTimeUtils.GetKLineDataTimeInfo(periodArr, klinePeriod));
 }
        private List <double[]> GetTimeArr(string code, List <ITickData> tickData, List <double[]> openTime)
        {
            ITickData        mainTick    = GetMainTickData(tickData);
            int              tradingDay  = mainTick.TradingDay;
            IList <double[]> tradingTime = dataUpdateHelper.GetTradingTime(code, tradingDay).TradingPeriods;//GetTradingSessionDetailReader().GetTradingTime(code, tradingDay);

            return(TradingTimeUtils.GetKLineTimeList(tradingTime, new KLinePeriod(KLineTimeType.SECOND, 1)));
            //int prevTradingDay = dataUpdateHelper.GetUpdatedTradingDayReader().GetPrevTradingDay(tradingDay);
            //List<double[]> tradingTime = dataUpdateHelper.GetTradingSessionDetailReader().GetTradingTime(mainTick.Code, tradingDay);
            //List<double[]> times =TradingTimeUtils.GetKLineTimeList_Full(tradingTime, new KLinePeriod(KLineTimeType.SECOND, 1));
            //List<double> timeArr = new List<double>(times.Count);

            //int dateStart = (int)mainTick.Arr_Time[0];
            //int dateEnd = (int)mainTick.Arr_Time[mainTick.Length - 1];
            //if (dateStart == dateEnd)
            //{
            //    for (int i = 0; i < times.Count; i++)
            //    {
            //        //times[i] = dateStart + times[i];
            //        timeArr.Add(times[i][0]);
            //    }
            //}
            //else
            //{
            //    bool isNextDay = false;
            //    int between = dateEnd - dateStart;
            //    for (int i = 0; i < times.Count; i++)
            //    {
            //        if (i != 0 && !isNextDay)
            //            isNextDay = times[i - 1] > times[i];
            //        int dateAdd = isNextDay ? between : 0;
            //        //times[i] = date + times[i];
            //        timeArr.Add(dateAdd + times[i]);
            //    }
            //}

            //return timeArr;
        }