/// <summary> /// True if the periodicity of the data feed is correct for this indicator. /// </summary> /// <returns></returns> public bool DatafeedPeriodicityIsValid(ITimeFrame timeframe) { TimeFrame tf = (TimeFrame)timeframe; if (tf.Periodicity == DatafeedHistoryPeriodicity.Day && tf.PeriodicityValue == 1) { return(true); } else { return(false); } }
/// <summary> /// True if the periodicity of the data feed is correct for this indicator. /// </summary> /// <returns></returns> public bool DatafeedPeriodicityIsValid(ITimeFrame timeframe) { TimeFrame tf = (TimeFrame)timeframe; if (tf.Periodicity == DatafeedHistoryPeriodicity.Day || tf.Periodicity == DatafeedHistoryPeriodicity.Hour || tf.Periodicity == DatafeedHistoryPeriodicity.Minute) { return(true); } else { return(false); } }
/// <summary> /// True if the periodicity of the data feed is correct for this indicator. /// </summary> /// <returns></returns> public bool DatafeedPeriodicityIsValid(ITimeFrame timeframe) { TimeFrame tf = (TimeFrame)timeframe; if (this.Bars.TimeFrame.Periodicity == DatafeedHistoryPeriodicity.Hour || this.Bars.TimeFrame.Periodicity == DatafeedHistoryPeriodicity.Minute || this.Bars.TimeFrame.Periodicity == DatafeedHistoryPeriodicity.Second || this.Bars.TimeFrame.Periodicity == DatafeedHistoryPeriodicity.Tick) { return(true); } else { return(false); } }
/// <summary> /// Saves a snapshot of the current chart. /// </summary> /// <param name="Indicator"></param> /// <param name="InstrumentName"></param> /// <param name="Chart"></param> /// <param name="Bars"></param> /// <param name="TimeFrame"></param> public static void SaveSnapShot(string Indicator, String InstrumentName, IEnumerable <IChart> AllCharts, IBars Bars, ITimeFrame TimeFrame) { string filepart = GlobalUtilities.CleanFileName(Indicator + "_" + TimeFrame.PeriodicityValue + TimeFrame.Periodicity + "_" + InstrumentName + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm")); string directory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Auswertung\\SnapShot\\" + filepart + "\\"; System.IO.Directory.CreateDirectory(directory); string fileName = InstrumentName + "_" + TimeFrame.PeriodicityValue + TimeFrame.Periodicity + "_" + Bars[0].Time.ToString("yyyy_MM_dd_HH_mm") + ".jpg"; fileName = GlobalUtilities.CleanFileName(fileName); //take 20 Bars to future and 20 Bars from the past (but only if they exist, if not, just take first or last) DateTime ChartStart = DateTime.MinValue; DateTime ChartEnd = DateTime.MinValue; if (Bars.GetByIndex(Bars.GetIndex(Bars[0]) + 20) != null) { ChartEnd = Bars.GetByIndex(Bars.GetIndex(Bars[0]) + 20).Time; } else { ChartEnd = Bars.Last().Time; } if (Bars.GetByIndex(Bars.GetIndex(Bars[0]) - 20) != null) { ChartStart = Bars.GetByIndex(Bars.GetIndex(Bars[0]) - 20).Time; } else { ChartStart = Bars.First().Time; } //pick the right chart matching the current timeframe foreach (IChart chart in AllCharts) { if (chart.HistoryRequest.TimeFrame.Periodicity == TimeFrame.Periodicity && chart.HistoryRequest.TimeFrame.PeriodicityValue == TimeFrame.PeriodicityValue) { chart.SetDateRange(ChartStart, ChartEnd); chart.SaveChart(directory + fileName); } } }
/// <summary> /// Return the target Bar, meaning a certain Bar in the future based on given timeFrame parameter /// eg getting 5 Bars in Future, this could be 5 days, or 75 Minutes in a 15M Chart /// </summary> /// <param name="Bars"></param> /// <param name="CurrentBarDateTime"></param> /// <param name="timeFrame"></param> /// <param name="BarsTilTarget"></param> /// <returns></returns> public static DateTime GetTargetBar(IBars Bars, DateTime CurrentBarDateTime, ITimeFrame timeFrame, int BarsTilTarget) { DateTime Target = CurrentBarDateTime; int i = 0; do { switch (timeFrame.Periodicity) { case DatafeedHistoryPeriodicity.Minute: switch (timeFrame.PeriodicityValue) { case 1: Target = Target.AddMinutes(1); break; case 5: Target = Target.AddMinutes(5); break; case 15: Target = Target.AddMinutes(15); break; case 30: Target = Target.AddMinutes(30); break; } break; case DatafeedHistoryPeriodicity.Hour: switch (timeFrame.PeriodicityValue) { case 1: Target = Target.AddHours(1); break; case 5: Target = Target.AddHours(4); break; } break; case DatafeedHistoryPeriodicity.Day: Target = Target.AddDays(1); break; case DatafeedHistoryPeriodicity.Week: Target = Target.AddDays(7); break; default: return(DateTime.MinValue); } if (Bars.IsDateTimeInMarket(Target) == true) { i++; } } while (i < BarsTilTarget); return(Target); }
/// <summary> /// Return the DateTime for the last candle before the last candel in this timeframe. ///You can use this function to close the trade in the end of the trading day. /// </summary> /// <param name="bars"></param> /// <param name="date"></param> /// <param name="timeframe"></param> /// <param name="closexcandlesbeforeendofday"></param> /// <returns></returns> public DateTime getDateTimeForClosingBeforeTradingDayEnds(IBars bars, DateTime date, ITimeFrame timeframe, int closexcandlesbeforeendofday) { return(getEndOfTradingDay(bars, date).AddSeconds((timeframe.GetSeconds() * (-1) * closexcandlesbeforeendofday))); }
public static bool IntersectWith(this ITimeFrame reference, ITimeFrame other) => reference.From <other.To && reference.To> other.From;
public PersonDailyCalendar(string name, DateTime scheduleFrom, DateTime scheduleTo) { Name = name; CalendarEvents = new List <ITimeFrame>(); Schedule = new TimeFrame(scheduleFrom, scheduleTo); }
public void SetTimeFrame(ITimeFrame timeFrame) { this.TimeFrame = timeFrame; }