/// <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);
            }
        }
Exemple #3
0
        /// <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);
        }
Exemple #6
0
 /// <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;
Exemple #8
0
 public PersonDailyCalendar(string name, DateTime scheduleFrom, DateTime scheduleTo)
 {
     Name           = name;
     CalendarEvents = new List <ITimeFrame>();
     Schedule       = new TimeFrame(scheduleFrom, scheduleTo);
 }
Exemple #9
0
 public void SetTimeFrame(ITimeFrame timeFrame)
 {
     this.TimeFrame = timeFrame;
 }