Beispiel #1
0
 public IKLineData GetData(String code, int startDate, int endDate, KLinePeriod period)
 {
     if (period.PeriodType == KLineTimeType.MINUTE)
     {
         if (period.Period == 1 || period.Period == 15)
         {
             return(LoadKLineData(code, startDate, endDate, period));
         }
         IKLineData data = LoadKLineData(code, startDate, endDate, new KLinePeriod(KLineTimeType.MINUTE, 1));
         return(DataTransfer_KLine2KLine.Transfer(data, period, null));
     }
     if (period.PeriodType == KLineTimeType.HOUR)
     {
         if (period.Period == 1)
         {
             return(LoadKLineData(code, startDate, endDate, period));
         }
         IKLineData data = LoadKLineData(code, startDate, endDate, new KLinePeriod(KLineTimeType.HOUR, 1));
         return(DataTransfer_KLine2KLine.Transfer(data, period, null));
     }
     if (period.PeriodType == KLineTimeType.DAY)
     {
         if (period.Period == 1)
         {
             return(LoadKLineData(code, startDate, endDate, period));
         }
         IKLineData data = LoadKLineData(code, startDate, endDate, new KLinePeriod(KLineTimeType.DAY, 1));
         return(DataTransfer_KLine2KLine.Transfer(data, period, null));
     }
     if (period.PeriodType == KLineTimeType.SECOND)
     {
         //return LoadKLineData_Second(code, startDate, endDate, period);
         return(dataReaderExtend.GetKLineData_Second(code, startDate, endDate, period));
     }
     //return LoadKLineData(code, startDate, endDate, period);
     throw new ArgumentException("暂未实现");
 }
Beispiel #2
0
        private void Init(IDataPackage_Code dataPackage, ForwardReferedPeriods referedPeriods, ForwardPeriod forwardPeriod)
        {
            this.dataPackage    = dataPackage;
            this.referedPeriods = referedPeriods;
            this.forwardPeriod  = forwardPeriod;

            Dictionary <KLinePeriod, KLineData_RealTime> allKLineData = new Dictionary <KLinePeriod, KLineData_RealTime>();

            for (int i = 0; i < referedPeriods.UsedKLinePeriods.Count; i++)
            {
                KLinePeriod        period             = referedPeriods.UsedKLinePeriods[i];
                IKLineData         klineData          = this.dataPackage.GetKLineData(period);
                KLineData_RealTime klineData_RealTime = new KLineData_RealTime(klineData);
                allKLineData.Add(period, klineData_RealTime);
            }

            //ITimeLineData timelineData = this.dataReader.TimeLineDataReader.GetData(code, startDate);
            //this.timeLineData_RealTime = new TimeLineData_RealTime(timelineData);

            IList <int> allTradingDays = dataPackage.GetTradingDays();

            if (forwardPeriod.IsTickForward)
            {
                //this.historyDataForward = new HistoryDataForward_Code_TickPeriod(dataReader, code, allKLineData, allTradingDays, forwardPeriod.KlineForwardPeriod);
                this.historyDataForward = new HistoryDataForward_Code_TickPeriod(dataPackage, allKLineData, allTradingDays, forwardPeriod.KlineForwardPeriod);
            }
            else
            {
                KLinePeriod        mainPeriod    = forwardPeriod.KlineForwardPeriod;
                KLineData_RealTime mainKLineData = allKLineData[mainPeriod];
                this.historyDataForward = new HistoryDataForward_Code_KLinePeriod(Code, mainKLineData, allKLineData);
            }

            this.historyDataForward.OnRealTimeChanged += HistoryDataForward_OnRealTimeChanged;
            this.historyDataForward.OnTick            += KlineDataForward_OnTick;
            this.historyDataForward.OnBar             += KlineDataForward_OnBar;
        }
Beispiel #3
0
        private void AddStep(CodeInfo codeInfo, IList <IStep> steps)
        {
            IList <int> days  = historyData.GetKLineDataDays(codeInfo.Code);
            int         start = codeInfo.Start;

            if (start <= 0)
            {
                start = days[0];
            }

            int end = codeInfo.End;

            if (end <= 0)
            {
                end = days[days.Count - 1];
            }

            for (int i = 0; i < klinePeriods.Count; i++)
            {
                KLinePeriod period = klinePeriods[i];
                //Step_UpdateKLineData step = new Step_UpdateKLineData(codeInfo.Code, start, end, period, historyData, klineDataStore);
                //steps.Add(step);
            }
        }
Beispiel #4
0
        private void AddSteps_KLineData_Instrument(List <IStep> steps, CodeInfo codeInfo, CacheUtils_TradingDay tradingDaysCache)
        {
            //if (!(codeInfo.Exchange == "SQ" && codeInfo.Code.EndsWith("0000")))
            //    return;
            string code = codeInfo.Code;

            for (int i = 0; i < updatePeriods.Count; i++)
            {
                //TODO 暂时没处理FillUp的情况,考虑使用全覆盖的方式实现
                KLinePeriod period          = updatePeriods[i];
                int         lastUpdatedDate = updatedDataInfo.GetLastUpdatedKLineData(code, period);
                int         lastCodeDate    = codeInfo.End;
                if (lastCodeDate <= 0)
                {
                    lastCodeDate = tradingDaysCache.LastTradingDay;
                }

                //20171015 ww 在不全面更新数据情况下,如果最新的交易日比合约截止时间更新,则不再更新该合约数据
                int firstNewTradingDay = newTradingDays.Count == 0 ? tradingDaysCache.LastTradingDay : newTradingDays[0];
                if (firstNewTradingDay > lastCodeDate)
                {
                    continue;
                }

                if (!isFillUp)
                {
                    if (lastUpdatedDate >= lastCodeDate || lastUpdatedDate >= tradingDaysCache.LastTradingDay)
                    {
                        continue;
                    }
                }

                Step_UpdateKLineData step = new Step_UpdateKLineData(codeInfo, period, tradingDaysCache, historyData, klineDataStore, updatedDataInfo, updateInfoStore, isFillUp);
                steps.Add(step);
            }
        }
        private void ForwardNextDay_KLine(IKLineData_RealTime klineData, KLinePeriod period)
        {
            if (period.PeriodType >= KLineTimeType.DAY)
            {
                double day            = currentTickData.TradingDay;
                int    nextKLineIndex = FindNextKLineIndex(klineData, day);
                if (nextKLineIndex != klineData.BarPos)
                {
                    dic_KLinePeriod_IsEnd[period] = true;
                    klineData.ChangeCurrentBar(GetKLineBar(currentTickData), nextKLineIndex);
                }
                else
                {
                    dic_KLinePeriod_IsEnd[period] = false;
                    klineData.ChangeCurrentBar(GetKLineBar(klineData, currentTickData));
                }
                return;
            }

            ITickBar tickBar    = currentTickData.GetCurrentBar();
            int      nextbarPos = klineData.BarPos + 1;

            klineData.ChangeCurrentBar(GetKLineBar(tickBar), nextbarPos);
        }
Beispiel #6
0
        public IStrategyExecutor CreateExecutor(IDataPackage_Code dataPackage, IStrategy strategy, KLinePeriod period)
        {
            StrategyReferedPeriods referedPeriods = new StrategyReferedPeriods();

            referedPeriods.UsedKLinePeriods.Add(period);
            StrategyForwardPeriod forwardPeriod = new StrategyForwardPeriod(false, period);

            return(StrategyCenter.Default.GetStrategyExecutorFactory_History().CreateExecutorByDataPackage(dataPackage, referedPeriods, forwardPeriod, compChart1.StrategyHelper));
        }
Beispiel #7
0
        public static KLineData_RealTime GetKLineData_RealTime(string code, int startDate, int endDate, KLinePeriod klinePeriod)
        {
            IKLineData klineData = GetDataReader().KLineDataReader.GetData(code, startDate, endDate, klinePeriod);

            return(new KLineData_RealTime(klineData));
        }
Beispiel #8
0
 /// <summary>
 /// 得到股票或期货的K线数据
 /// </summary>
 /// <param name="code"></param>
 /// <param name="startDate"></param>
 /// <param name="endDate"></param>
 /// <param name="klinePeriod"></param>
 /// <returns></returns>
 public static IKLineData GetKLineData(String code, int startDate, int endDate, KLinePeriod klinePeriod)
 {
     return(mockData.GetKLineData(code, startDate, endDate, klinePeriod));
 }
 public KLineBarPos(KLinePeriod klinePeriod, int barPos)
 {
     this.KLinePeriod = klinePeriod;
     this.BarPos      = barPos;
 }
Beispiel #10
0
        public static IList <double[]> GetKLineTimeList(IList <double[]>[] tradingPeriodArr, KLinePeriod klinePeriod)
        {
            List <double[]> klineTimeList = new List <double[]>();

            for (int i = 0; i < tradingPeriodArr.Length; i++)
            {
                klineTimeList.AddRange(GetKLineTimeList(tradingPeriodArr[i], klinePeriod));
            }
            return(klineTimeList);
        }
Beispiel #11
0
        /// <summary>
        /// 得到一天内K线的每一根柱子的时间
        /// </summary>
        /// <param name="openDateReader"></param>
        /// <param name="openTimes"></param>
        /// <param name="targetPeriod"></param>
        /// <returns></returns>
        public static List <double> GetKLineTimeList(int date, ITradingDayReader openDateReader, List <double[]> openTimes, KLinePeriod targetPeriod)
        {
            if (!openDateReader.IsTrade(date))
            {
                throw new ArgumentException(date + "不开盘");
            }

            int lastOpenDate = openDateReader.GetPrevTradingDay(date);

            return(GetKLineTimeList(date, lastOpenDate, openTimes, targetPeriod));
        }
Beispiel #12
0
 public KLineNewDataInfo(InstrumentDatesInfo newDataInfo, KLinePeriod KLinePeriod)
 {
     this.NewDataInfo = newDataInfo;
     this.KLinePeriod = KLinePeriod;
 }
Beispiel #13
0
 public static KLineDataTimeInfo GetKLineDataTimeInfo(IList <double[]> tradingPeriod, KLinePeriod klinePeriod)
 {
     return(new KLineDataTimeInfo(GetKLineTimeList(tradingPeriod, klinePeriod), klinePeriod));
 }
Beispiel #14
0
 public void Init(IDataCenter dataCenter, string code, double time, KLinePeriod klinePeriod)
 {
     this.chartComponent1.Init(dataCenter, code, time, klinePeriod);
     this.currentInfoComponent1.Init(this.chartComponent1.Controller);
 }
        private static int GetStartTickIndex(IKLineData_RealTime klineData_RealTime, ITickData_Extend tickData, KLinePeriod klinePeriod, int klineIndex)
        {
            int startTickIndex;

            if (klinePeriod.PeriodType == KLineTimeType.DAY)
            {
                startTickIndex = 0;
            }
            else
            {
                double klineTime = klineData_RealTime.BarPos == klineIndex?klineData_RealTime.GetCurrentBar_Original().Time : klineData_RealTime.Arr_Time[klineIndex];

                startTickIndex = TimeIndeierUtils.IndexOfTime_Tick(tickData, klineTime, true);
                if (klineData_RealTime.IsTradingTimeStart(klineIndex))
                {
                    while (!tickData.IsTradingTimeStart(startTickIndex))
                    {
                        startTickIndex--;
                    }
                }
            }

            return(startTickIndex);
        }
Beispiel #16
0
 public bool IsPeriodEnd(KLinePeriod period)
 {
     return(this.currentRealTimeDataReader.IsPeriodEnd(period));
 }
Beispiel #17
0
 public IKLineData GetKLineData(KLinePeriod period)
 {
     return(this.currentRealTimeDataReader.GetKLineData(period));
 }
Beispiel #18
0
 public StrategyReferedPeriods(IList <KLinePeriod> usedKLinePeriods, KLinePeriod mainPeriod, bool useTick, bool useTimeLine) : base(usedKLinePeriods, useTick, useTimeLine)
 {
     this.mainPeriod = mainPeriod;
 }
Beispiel #19
0
 public static KLineDataTimeInfo GetKLineDataTimeInfo(IList <ITradingTime> tradingTimeList, KLinePeriod klinePeriod)
 {
     return(new KLineDataTimeInfo(GetKLineTimeList(tradingTimeList, klinePeriod), klinePeriod));
 }
Beispiel #20
0
 public bool IsPeriodEnd(KLinePeriod period)
 {
     //TODO 需要实现获取当日K线每个时间
     return(false);
 }
Beispiel #21
0
        public static IList <double[]> GetKLineTimeList(IList <ITradingTime> tradingTimeList, KLinePeriod klinePeriod)
        {
            List <double[]> klineTimeList = new List <double[]>();

            for (int i = 0; i < tradingTimeList.Count; i++)
            {
                klineTimeList.AddRange(GetKLineTimeList(tradingTimeList[i], klinePeriod));
            }
            return(klineTimeList);
        }
Beispiel #22
0
 public IKLineData GetKLineData(KLinePeriod period)
 {
     return(dataForForward.GetKLineData(period));
 }
Beispiel #23
0
 /// <summary>
 /// 获得交易时间
 /// </summary>
 /// <param name="tradingTime"></param>
 /// <param name="klinePeriod"></param>
 /// <returns></returns>
 public static IList <double[]> GetKLineTimeList(ITradingTime tradingTime, KLinePeriod klinePeriod)
 {
     return(GetKLineTimeList(tradingTime.TradingPeriods, klinePeriod));
 }
Beispiel #24
0
 public Strategy_MaList(KLinePeriod klinePeriod, int length)
 {
     this.period = klinePeriod;
     this.length = length;
 }
Beispiel #25
0
        /// <summary>
        /// 计算指定交易时间段内指定周期的K线的每个bar的起止时间
        /// </summary>
        /// <param name="tradingPeriod"></param>
        /// <param name="klinePeriod"></param>
        /// <param name="splitPeriod"></param>
        /// <returns></returns>
        public static List <double[]> GetKLineTimeList(IList <double[]> tradingPeriod, KLinePeriod klinePeriod)
        {
            List <double[]> klineTimeList = new List <double[]>();

            int offset = 0;

            for (int i = 0; i < tradingPeriod.Count; i++)
            {
                offset = GetTimeArr(tradingPeriod[i], klinePeriod, klineTimeList, offset);
            }
            return(klineTimeList);
        }
Beispiel #26
0
        /// <summary>
        /// 得到当日的所有K线时间列表
        /// </summary>
        /// <param name="openDate">今日</param>
        /// <param name="lastOpenDate">上一个开盘日</param>
        /// <param name="tradingSession">交易时段</param>
        /// <param name="targetPeriod"></param>
        /// <returns></returns>
        public static List <double> GetKLineTimeList(int date, int lastOpenDate, List <double[]> tradingSession, KLinePeriod targetPeriod)
        {
            bool overNight   = IsOverNight(tradingSession);
            bool isWeekStart = IsWeekStart(date, lastOpenDate);

            KLineOpenPeriods dayOpenTime    = TradingTimeUtils.GetKLineTimeList_DayOpenTime(tradingSession, targetPeriod);
            List <double>    klineFullTimes = new List <double>(dayOpenTime.KlineTimes.Count);

            List <double> klineTimes = dayOpenTime.KlineTimes;

            if (overNight)
            {
                bool isFistOpenTimeOverNight = IsOpenTimeOverNight(tradingSession[0]);
                if (isWeekStart)
                {
                    int firstDate  = lastOpenDate;
                    int secondDate = (int)TimeUtils.AddDays(firstDate, 1);

                    AddFullKLineTimes(klineFullTimes, firstDate, klineTimes, 0, dayOpenTime.OverNightIndex - 1);
                    AddFullKLineTimes(klineFullTimes, secondDate, klineTimes, dayOpenTime.OverNightIndex, dayOpenTime.SplitIndeies[1] - 1);
                    AddFullKLineTimes(klineFullTimes, date, klineTimes, dayOpenTime.SplitIndeies[1], dayOpenTime.KlineTimes.Count - 1);
                }
                else
                {
                    int firstDate = lastOpenDate;
                    AddFullKLineTimes(klineFullTimes, firstDate, dayOpenTime.KlineTimes, 0, dayOpenTime.OverNightIndex - 1);
                    AddFullKLineTimes(klineFullTimes, date, dayOpenTime.KlineTimes, dayOpenTime.OverNightIndex, dayOpenTime.KlineTimes.Count - 1);
                }
            }
            else
            {
                AddFullKLineTimes(klineFullTimes, date, dayOpenTime.KlineTimes, 0, dayOpenTime.KlineTimes.Count - 1);
            }

            return(klineFullTimes);
        }
Beispiel #27
0
 public static String GetKLineDataPath(String csvDataPath, String code, int date, KLinePeriod period)
 {
     return(csvDataPath + "\\" + code + "\\kline\\" + period.ToEngString() + "\\" + code + "_" + period.ToEngString() + "_" + date + ".csv");
 }
Beispiel #28
0
 public IKLineData GetKLineData(KLinePeriod period)
 {
     return(currentNavigate_Code.GetKLineData(period));
 }
Beispiel #29
0
 public bool IsPeriodEnd(KLinePeriod period)
 {
     return(false);
 }
Beispiel #30
0
 public void Forward(KLinePeriod period, int len)
 {
     currentNavigate_Code.Forward(period, len);
 }