示例#1
0
        //TODO make unit tests
        private static List <Price> CreatePriceListClean(IReadOnlyList <Price> price_list_unclean)
        {
            //Build price
            List <Price> clean_price_list = new List <Price>();
            DateTimeUTC  time             = price_list_unclean[0].Time;
            double       bid         = price_list_unclean[0].Bid;
            double       ask         = price_list_unclean[0].Ask;
            int          price_index = 0;

            while (price_index < price_list_unclean.Count)
            {
                if (time < price_list_unclean[price_index].Time)
                {
                    //Create new price
                    clean_price_list.Add(new Price(time, bid, ask));
                    time = time.AddSeconds(1);
                }
                else
                {
                    //Save and scroll
                    ask = price_list_unclean[price_index].Ask;
                    bid = price_list_unclean[price_index].Bid;
                    price_index++;
                }
            }
            //TODO make last
            clean_price_list.Add(new Price(time, bid, ask));
            return(clean_price_list);
        }
示例#2
0
        private static IReadOnlyList <Price> CreatePrices(DateTimeUTC open_time, DateTimeUTC final_time)
        {
            List <Price> price = new List <Price>();

            while (open_time <= final_time)
            {
                price.Add(new Price(open_time, 0, 0));
                open_time = open_time.AddSeconds(1);
            }
            return(price);
        }
示例#3
0
        private static IReadOnlyList <PriceCandle> CreateSecond1(DateTimeUTC open_time, DateTimeUTC final_time)
        {
            List <PriceCandle> candles = new List <PriceCandle>();

            while (open_time < final_time)
            {
                candles.Add(new PriceCandle(open_time, 0, 0));
                open_time = open_time.AddSeconds(1);
            }
            return(candles);
        }
示例#4
0
        public static DateTimeUTC GetCloseTime(DateTimeUTC time, TimeScale time_scale)
        {
            DateTimeUTC open_time = GetOpenTime(time, time_scale);

            switch (time_scale)
            {
            case TimeScale.Second1:
                return(open_time.AddSeconds(1));

            case TimeScale.Minute1:
                return(open_time.AddMinutes(1));

            case TimeScale.Minute15:
                return(open_time.AddMinutes(15));

            case TimeScale.Minute30:
                return(open_time.AddMinutes(30));

            case TimeScale.Hour1:
                return(open_time.AddHours(1));

            case TimeScale.Hour4:
                return(open_time.AddHours(4));

            case TimeScale.Day1:
                return(open_time.AddDays(1));

            case TimeScale.Week1:
                return(open_time.AddDays(7));

            case TimeScale.Month1:
                return(open_time.AddMonths(1));

            default:
                throw new Exception("Unknown Timescale");
            }
        }