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("暂未实现"); }
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; }
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); } }
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); }
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)); }
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)); }
/// <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; }
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); }
/// <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)); }
public KLineNewDataInfo(InstrumentDatesInfo newDataInfo, KLinePeriod KLinePeriod) { this.NewDataInfo = newDataInfo; this.KLinePeriod = KLinePeriod; }
public static KLineDataTimeInfo GetKLineDataTimeInfo(IList <double[]> tradingPeriod, KLinePeriod klinePeriod) { return(new KLineDataTimeInfo(GetKLineTimeList(tradingPeriod, klinePeriod), klinePeriod)); }
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); }
public bool IsPeriodEnd(KLinePeriod period) { return(this.currentRealTimeDataReader.IsPeriodEnd(period)); }
public IKLineData GetKLineData(KLinePeriod period) { return(this.currentRealTimeDataReader.GetKLineData(period)); }
public StrategyReferedPeriods(IList <KLinePeriod> usedKLinePeriods, KLinePeriod mainPeriod, bool useTick, bool useTimeLine) : base(usedKLinePeriods, useTick, useTimeLine) { this.mainPeriod = mainPeriod; }
public static KLineDataTimeInfo GetKLineDataTimeInfo(IList <ITradingTime> tradingTimeList, KLinePeriod klinePeriod) { return(new KLineDataTimeInfo(GetKLineTimeList(tradingTimeList, klinePeriod), klinePeriod)); }
public bool IsPeriodEnd(KLinePeriod period) { //TODO 需要实现获取当日K线每个时间 return(false); }
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); }
public IKLineData GetKLineData(KLinePeriod period) { return(dataForForward.GetKLineData(period)); }
/// <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)); }
public Strategy_MaList(KLinePeriod klinePeriod, int length) { this.period = klinePeriod; this.length = length; }
/// <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); }
/// <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); }
public static String GetKLineDataPath(String csvDataPath, String code, int date, KLinePeriod period) { return(csvDataPath + "\\" + code + "\\kline\\" + period.ToEngString() + "\\" + code + "_" + period.ToEngString() + "_" + date + ".csv"); }
public IKLineData GetKLineData(KLinePeriod period) { return(currentNavigate_Code.GetKLineData(period)); }
public bool IsPeriodEnd(KLinePeriod period) { return(false); }
public void Forward(KLinePeriod period, int len) { currentNavigate_Code.Forward(period, len); }