コード例 #1
0
        static public void get_10min_high_low_from_ticks_Prev_TimeFrame(out double High, out double Low)
        {
            try
            {
                //get 10 min high

                AlsiDBDataContext dc = new AlsiDBDataContext();
                dc.Connection.ConnectionString = AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString;

                var last = (from q in dc.OHLC_10_Minutes
                            orderby q.Stamp descending
                            select new { q.Stamp, q.L, q.H, q.C }).Take(2);


                List <DateTime> dt = new List <DateTime>();

                High = 0;
                Low  = 0;
                foreach (var v in last)
                {
                    dt.Add(v.Stamp);
                    //Debug.WriteLine(v.Stamp + "  Last " + v.C + "  High : " + v.H + "  Low : " + v.L);
                    High = Convert.ToDouble(v.H);
                    Low  = Convert.ToDouble(v.L);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("get_10min_high_low_from_ticks DATA BASE BUSY : " + ex.Message);
                High = 0;
                Low  = 0;
            }
        }
コード例 #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsCallback)
        {
            //http://www.codeproject.com/articles/432860/asp-net-plotter-toolkit-html5-charting-for-all
            AlsiDBDataContext dc = new AlsiDBDataContext();
            var data             = dc.OHLC_5_Minutes.Take(25000).ToList();
            Label1.Text = data.Count.ToString();
            Curve curve  = new Curve();
            var   points = new Point[data.Count];

            for (int x = 0; x < data.Count; x++)
            {
                var p = new Point(data[x].Stamp, data[x].C);
                points[x] = p;
            }


            BindingList <Curve> Curves = new BindingList <Curve> {
                curve
            };

            curve.Points = points;
            curve.Label  = "Dfdfdfdff";

            Dygraph1.Curves = Curves;

            Dygraph1.YLowRange  = data.Min(z => z.C);//if error check db
            Dygraph1.YHighRange = data.Max(z => z.C);
        }
    }
コード例 #3
0
        static public void InsertTradeLog(Trade TradeObject)
        {
            try
            {
                AlsiDBDataContext dc = new AlsiDBDataContext();
                dc.Connection.ConnectionString = AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString;

                TradeLog l = new TradeLog
                {
                    Time      = TradeObject.TimeStamp,
                    BuySell   = TradeObject.BuyorSell.ToString(),
                    Reason    = TradeObject.Reason.ToString(),
                    Notes     = TradeObject.IndicatorNotes.ToString(),
                    Price     = (int)TradeObject.TradedPrice,
                    Volume    = TradeObject.TradeVolume,
                    ForeColor = TradeObject.ForeColor.ToKnownColor().ToString(),
                    BackColor = TradeObject.BackColor.ToKnownColor().ToString()
                };
                dc.TradeLogs.InsertOnSubmit(l);
                dc.SubmitChanges();
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Cannot write Log");
                Debug.WriteLine(ex.Message);
            }
        }
コード例 #4
0
        private void TickDataToXMinData()
        {
            AlsiUtils.AlsiDBDataContext dc = new AlsiDBDataContext();
            switch (_Interval)
            {
            case GlobalObjects.TimeInterval.Minute_2:
                break;

            case GlobalObjects.TimeInterval.Minute_5:
                dc.OHLC_5_Temp();
                break;

            case GlobalObjects.TimeInterval.Minute_10:
                break;
            }

            GlobalObjects.Points.Clear();
            foreach (var p in dc.OHLC_Temps)
            {
                var P = new Price()
                {
                    TimeStamp      = p.Stamp,
                    Open           = p.O,
                    High           = p.H,
                    Low            = p.L,
                    Close          = p.C,
                    InstrumentName = _ContractName,
                };
                GlobalObjects.Points.Add(P);
            }
        }
コード例 #5
0
        public static void ClearTradeLog()
        {
            var dc     = new AlsiDBDataContext();
            var delAll = dc.TradeLogs;

            dc.TradeLogs.DeleteAllOnSubmit(delAll);
            dc.SubmitChanges();
        }
コード例 #6
0
        public static void MergeTempWithHisto(GlobalObjects.TimeInterval T)
        {
            var dc = new AlsiDBDataContext();

            switch (T)
            {
            case (GlobalObjects.TimeInterval.Minute_5):
                //Must be 2000 prices in db for accurate calcs
                if (dc.OHLC_5_Minutes.Count() < 20100)
                {
                    throw new IndexOutOfRangeException();
                }
                var last1000Prices = dc.OHLC_5_Minutes.Skip(Math.Max(0, dc.OHLC_5_Minutes.Count() - 20000)).Take(20000);
                dc.Clean_OHLC_Temp_2();


                DataTable MinData = new DataTable("MinData");
                MinData.Columns.Add("Stamp", typeof(DateTime));
                MinData.Columns.Add("O", typeof(int));
                MinData.Columns.Add("L", typeof(int));
                MinData.Columns.Add("H", typeof(int));
                MinData.Columns.Add("C", typeof(int));


                foreach (var p in last1000Prices)
                {
                    MinData.Rows.Add(p.Stamp, p.O, p.H, p.L, p.C);
                }


                #region BulkCopy

                DataSet minuteDataSet = new DataSet("minuteDataset");
                minuteDataSet.Tables.Add(MinData);
                SqlConnection myConnection = new SqlConnection(AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString);
                myConnection.Open();
                SqlBulkCopy bulkcopy = new SqlBulkCopy(myConnection);
                bulkcopy.DestinationTableName = "OHLC_Temp_2";
                bulkcopy.WriteToServer(MinData);
                Debug.WriteLine("Tick Bulk Copy Complete");
                MinData.Dispose();
                myConnection.Close();

                #endregion

                dc.MergeTemp();
                Debug.WriteLine("Merged Data");
                break;
            }
        }
コード例 #7
0
        static public void insertTicks(DateTime Stamp, int Price)
        {
            AlsiDBDataContext dc = new AlsiDBDataContext();
            int p = Price;

            RawTick c = new RawTick
            {
                Stamp = Stamp,
                Price = p
            };


            dc.RawTicks.InsertOnSubmit(c);
            dc.SubmitChanges();
        }
コード例 #8
0
        static public void get_10min_high_low_from_ticks(out double High, out double Low)
        {
            try
            {
                //get 10 min high

                AlsiDBDataContext dc = new AlsiDBDataContext();
                dc.Connection.ConnectionString = AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString;

                var last = (from q in dc.OHLC_10_Minutes
                            orderby q.Stamp descending
                            select new { q.Stamp, q.L }).Take(2);


                List <DateTime> dt = new List <DateTime>();


                foreach (var v in last)
                {
                    dt.Add(v.Stamp);
                    //Debug.WriteLine("LAST : " + v);
                }



                var high = (from q in dc.RawTicks
                            where q.Stamp > dt[0]
                            select q.Price).Max();

                var low = (from q in dc.RawTicks
                           where q.Stamp > dt[0]
                           select q.Price).Min();

                //Debug.WriteLine("High From Tick " + high);
                //Debug.WriteLine("Low From Tick " + low);

                High = Convert.ToDouble(high);
                Low  = Convert.ToDouble(low);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("get_10min_high_low_from_ticks DATA BASE BUSY : " + ex.Message);
                High = 0;
                Low  = 0;
            }
        }
コード例 #9
0
        static public List <Price> readDataFromDataBase_1_MIN_MasterMinute(int numberOfPeriods, bool reverseList)
        {
            try
            {
                List <Price> prices = new List <Price>();

                AlsiDBDataContext dc = new AlsiDBDataContext();
                dc.Connection.ConnectionString = AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString;


                var count = (from p in dc.MasterMinutes
                             select(p.Stamp)).Count();

                //Console.WriteLine("10 Minute Data Count : " + count);


                var result = from q in dc.MasterMinutes
                             .Skip(count - numberOfPeriods)
                             .Take(numberOfPeriods)
                             select new { q.Stamp, q.O, q.H, q.L, q.C, q.Instrument };

                foreach (var v in result)
                {
                    Price p = new Price();
                    p.Close          = v.C;
                    p.Open           = v.O;
                    p.High           = v.H;
                    p.Low            = v.L;
                    p.TimeStamp      = v.Stamp;
                    p.InstrumentName = v.Instrument;
                    prices.Add(p);
                }

                if (reverseList)
                {
                    prices.Reverse();
                }
                return(prices);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("readDataFromDataBase_10_MIN  Database Busy : " + ex.Message);
                return(null);
            }
        }
コード例 #10
0
        public static bool TestSqlConnection(string CCS, out string Error)
        {
            bool alive = true;

            try
            {
                AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString = CCS;
                AlsiDBDataContext dc = new AlsiDBDataContext();
                dc.Connection.ConnectionString = CCS;
                dc.Connection.Open();
                Error = "";
            }
            catch (Exception ex)
            {
                alive = false;
                Error = ex.Message;
            }
            return(alive);
        }
コード例 #11
0
        /// <summary>
        /// Full DataBase Update from Webdata
        /// </summary>
        /// <param name="ContractName">Contract name : example "DEC12ALSI"</param>
        /// <param name="CustomConnectionString">Custom Connection String, this will set Current Connection String</param>
        public static void FullHistoricUpdate_MasterMinute(string ContractName)
        {
            AlsiDBDataContext dc = new AlsiDBDataContext();

            var dateL = dc.MasterMinutes.AsEnumerable().Where(z => z.Instrument == ContractName);

            if (dateL.Count() == 0)
            {
                throw new Exception("Contract name has no match in database.\n" + ContractName + " cannot be found");
            }

            DateTime Last = dateL.Last().Stamp;
            DateTime Now  = DateTime.UtcNow.AddHours(2);

            GlobalObjects.Points.Clear();
            GlobalObjects.Points = HiSat.HistData.GetHistoricalMINUTE_FromWEB(Last, Now, 1, ContractName);

            UpdatePricesToImportMinute();
        }
コード例 #12
0
        public static void UpdatePricesToImportMinute()
        {
            AlsiDBDataContext dc = new AlsiDBDataContext();

            dc.ClearImportTable();
            dc.Clean_OHLC_Temp();
            DataTable MinData = new DataTable("MinData");

            MinData.Columns.Add("Stamp", typeof(DateTime));
            MinData.Columns.Add("O", typeof(int));
            MinData.Columns.Add("L", typeof(int));
            MinData.Columns.Add("H", typeof(int));
            MinData.Columns.Add("C", typeof(int));
            MinData.Columns.Add("V", typeof(int));
            MinData.Columns.Add("Instrument", typeof(string));

            foreach (var p in GlobalObjects.Points)
            {
                MinData.Rows.Add(p.TimeStamp, p.Open, p.High, p.Low, p.Close, p.Volume, p.InstrumentName);
            }


            #region BulkCopy

            DataSet minuteDataSet = new DataSet("minuteDataset");
            minuteDataSet.Tables.Add(MinData);
            SqlConnection myConnection = new SqlConnection(AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString);
            myConnection.Open();
            SqlBulkCopy bulkcopy = new SqlBulkCopy(myConnection);
            bulkcopy.DestinationTableName = "ImportMinute";
            bulkcopy.WriteToServer(MinData);
            Debug.WriteLine("Tick Bulk Copy Complete");
            MinData.Dispose();
            myConnection.Close();

            #endregion


            dc.UpadteImport();
            dc.CleanUp();
        }
コード例 #13
0
        static public List <Trade> GetTradeLogFromDatabase(int numberofLogs)
        {
            List <Trade> logdata = new List <Trade>();

            try
            {
                AlsiDBDataContext dc = new AlsiDBDataContext();
                dc.Connection.ConnectionString = AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString;

                var count = (from p in dc.TradeLogs
                             select(p.Time)).Count();


                var result = (from q in dc.TradeLogs
                              orderby q.Time ascending
                              select new { q.Time, q.BuySell, q.Reason, q.Price, q.Volume, q.ForeColor, q.BackColor })
                             .Skip(count - numberofLogs)
                             .Take(numberofLogs);

                foreach (var v in result)
                {
                    Trade l = new Trade();
                    l.TimeStamp = (DateTime)v.Time;
                    // l.BuyorSell = v.BuySell;
                    // l.TradeReason = v.Reason;
                    l.TradedPrice = (double)v.Price;
                    l.TradeVolume = (int)v.Volume;
                    l.ForeColor   = Color.FromName(v.ForeColor);
                    l.BackColor   = Color.FromName(v.BackColor);
                    logdata.Add(l);
                }

                return(logdata);
            }
            catch (Exception ex)
            {
                return(logdata);
            }
        }
コード例 #14
0
        public static void UpdatetoMinuteImport()
        {
            AlsiDBDataContext dc = new AlsiDBDataContext();

            dc.Connection.ConnectionString = GlobalObjects.CustomConnectionString;
            dc.ClearImportTable();
            decimal progress    = 0;
            decimal totProgress = GlobalObjects.Points.Count;

            foreach (Price price in GlobalObjects.Points)
            {
                int open   = (int)price.Open;
                int high   = (int)price.High;
                int low    = (int)price.Low;
                int close  = (int)price.Close;
                int volume = (int)price.Volume;

                ImportMinute c = new ImportMinute
                {
                    Stamp      = price.TimeStamp,
                    O          = open,
                    H          = high,
                    L          = low,
                    C          = close,
                    V          = volume,
                    Instrument = price.InstrumentName
                };


                dc.ImportMinutes.InsertOnSubmit(c);
                dc.SubmitChanges();
                progress++;

                int p = Convert.ToInt16(100 * (progress / totProgress));
            }
            GlobalObjects.Points.Clear();
            dc.UpadteImport();
            dc.CleanUp();
        }
コード例 #15
0
ファイル: DoStuff.cs プロジェクト: vishu57/NinjaTrader
        public static void TickBulkCopy(string InstrumentName, DateTime Start)
        {
            DateTime          _start      = DateTime.Now.AddDays(-10);
            DateTime          UseThisDate = Start > _start ? _start : Start;
            AlsiDBDataContext dc          = new AlsiDBDataContext();
            var tickData = HistData.GetHistoricalTICK_FromWEB(_start, DateTime.UtcNow.AddHours(2), InstrumentName);

            DataTable RawTicks = new DataTable("TickData");

            RawTicks.Columns.Add("N", typeof(long));
            RawTicks.Columns.Add("Stamp", typeof(DateTime));
            RawTicks.Columns.Add("Price", typeof(int));

            foreach (var p in tickData)
            {
                RawTicks.Rows.Add(1, p.TimeStamp, p.Close);
            }
            dc.CleanTick();

            #region BulkCopy

            DataSet tickDataSet = new DataSet("AllTicks");
            tickDataSet.Tables.Add(RawTicks);
            SqlConnection myConnection = new SqlConnection(AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString);
            myConnection.Open();
            SqlBulkCopy bulkcopy = new SqlBulkCopy(myConnection);
            bulkcopy.DestinationTableName = "RawTick";
            bulkcopy.WriteToServer(RawTicks);

            Debug.WriteLine("Tick Bulk Copy Complete");

            RawTicks.Dispose();
            myConnection.Close();
            dc.CleanUp();

            #endregion
        }
コード例 #16
0
        private void BulkInsert()
        {
            #region Create Data Table in Memory

            DataTable RawTicks = new DataTable("TickData");
            //RawTicks.Columns.Add("N", typeof(int));
            RawTicks.Columns.Add("Stamp", typeof(DateTime));
            RawTicks.Columns.Add("O", typeof(int));
            RawTicks.Columns.Add("H", typeof(int));
            RawTicks.Columns.Add("L", typeof(int));
            RawTicks.Columns.Add("C", typeof(int));
            RawTicks.Columns.Add("V", typeof(int));
            RawTicks.Columns.Add("Instrument", typeof(string));
            insertBW.ReportProgress(60);
            #endregion

            #region Populate data Table


            foreach (Price p in AllHisto)
            {
                RawTicks.Rows.Add(p.TimeStamp, p.Open, p.High, p.Low, p.Close, p.Volume, p.InstrumentName);
            }

            insertBW.ReportProgress(70);
            #endregion


            #region Clear SQl Table
            // currentTaskStatusLabel.Text = "Writing to Data Base";
            //PC
            string ccc = @"Data Source=ALSI-PC\;Initial Catalog=AlsiTrade;Integrated Security=True";
            AlsiUtils.Data_Objects.GlobalObjects.CustomConnectionString = ccc;
            AlsiDBDataContext dc = new AlsiDBDataContext();
            dc.Connection.ConnectionString = ccc;
            // dc.CleanTick();

            #endregion

            #region Bulk copy to SQL
            DataSet tickDataSet = new DataSet("AllTicks");
            tickDataSet.Tables.Add(RawTicks);
            SqlConnection myConnection = new SqlConnection();
            myConnection.ConnectionString = ccc;
            myConnection.Open();
            SqlBulkCopy bulkcopy = new SqlBulkCopy(myConnection);
            bulkcopy.BulkCopyTimeout      = 10000000;
            bulkcopy.DestinationTableName = "ImportMinute";
            bulkcopy.WriteToServer(RawTicks);
            //Debug.WriteLine("Ticks Written To DATASET " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));

            insertBW.ReportProgress(100);

            #endregion

            #region Cleanup
            RawTicks.Dispose();
            myConnection.Close();
            //dc.CleanUp();
            #endregion
        }
コード例 #17
0
        private void SetOHLC_IntraTrade_SingleTradePL()
        {
            var          tpl       = new List <ProfitAlgoLayer.TakeProfitTrade>();
            StreamWriter sr        = new StreamWriter(@"d:\ohlcPL2.csv");
            int          C         = _CompletedTrades.Count;
            double       totProfit = 0;
            double       start     = 0;
            var          dc        = new AlsiDBDataContext();
            var          M         = dc.OHLC_5_Minutes.ToList();

            for (int i = 1; i < C; i++)
            {
                var pl5 = from x in _FullTradeList
                          where x.TimeStamp >= _CompletedTrades[i].OpenTrade.TimeStamp && x.TimeStamp <= _CompletedTrades[i].CloseTrade.TimeStamp
                          select x;



                tpl = pl5.ToList();

                if (tpl.Count > 1)
                {
                    foreach (var v in tpl)
                    {
                        var f      = M.Where(z => z.Stamp == v.TimeStamp).First();
                        var market = new Price(f.Stamp, f.O, f.H, f.L, f.C, f.Instrument);


                        start = tpl.First().TradedPrice;

                        double o = 0;
                        if (tpl[0].Reason == Trade.Trigger.OpenShort)
                        {
                            o = (start - market.Open);
                        }
                        if (tpl[0].Reason == Trade.Trigger.OpenLong)
                        {
                            o = (market.Open - start);
                        }

                        double h = 0;
                        if (tpl[0].Reason == Trade.Trigger.OpenShort)
                        {
                            h = (start - market.High);
                        }
                        if (tpl[0].Reason == Trade.Trigger.OpenLong)
                        {
                            h = (market.High - start);
                        }

                        double l = 0;
                        if (tpl[0].Reason == Trade.Trigger.OpenShort)
                        {
                            l = (start - market.Low);
                        }
                        if (tpl[0].Reason == Trade.Trigger.OpenLong)
                        {
                            l = (market.Low - start);
                        }

                        double c = 0;
                        if (tpl[0].Reason == Trade.Trigger.OpenShort)
                        {
                            c = (start - market.Close);
                        }
                        if (tpl[0].Reason == Trade.Trigger.OpenLong)
                        {
                            c = (market.Close - start);
                        }



                        var P = new Price();
                        P.TimeStamp = market.TimeStamp;
                        P.Open      = o;
                        P.High      = h;
                        P.Low       = l;
                        P.Close     = c;
                        if (v.TimeStamp == tpl.Last().TimeStamp)
                        {
                            totProfit += tpl.Last().RunningProfit;
                        }

                        OHLC_LIST.Add(P);

                        sr.WriteLine(P.TimeStamp.Date
                                     + "," + P.TimeStamp
                                     + "," + v.Reason
                                     + "," + P.Open
                                     + "," + P.High
                                     + "," + P.Low
                                     + "," + P.Close
                                     + "," + 0
                                     + "," + market.Open
                                     + "," + market.High
                                     + "," + market.Low
                                     + "," + market.Close
                                     + "," + totProfit

                                     );
                    }
                    //Debug.WriteLine(P.Close);
                    //	Debug.WriteLine(i + "," + (o + tpl[0].RunningTotalProfit_New) + "," + (h + tpl[0].RunningTotalProfit_New) + "," + (l + tpl[0].RunningTotalProfit_New) + "," + (c + tpl[0].RunningTotalProfit_New));
                    //	Debug.WriteLine(i + "," + P.Open + "," + "," + P.High + "," + P.Low + "," + P.Close);
                }
            }
            sr.Close();
        }
コード例 #18
0
        static public List <Price> readDataFromDataBase(GlobalObjects.TimeInterval T, dataTable TD, DateTime Start, DateTime End, bool reverseList)
        {
            List <Price> prices = new List <Price>();

            AlsiDBDataContext dc = new AlsiDBDataContext();


            if (TD == dataTable.Temp)
            {
                var result = from q in dc.OHLC_Temps
                             where q.Stamp > Start && q.Stamp < End
                             select new { q.Stamp, q.O, q.H, q.L, q.C, };

                foreach (var v in result)
                {
                    Price p = new Price();
                    p.Close     = v.C;
                    p.Open      = v.O;
                    p.High      = v.H;
                    p.Low       = v.L;
                    p.TimeStamp = v.Stamp;
                    prices.Add(p);
                }
                dc.Clean_OHLC_Temp();
                if (reverseList)
                {
                    prices.Reverse();
                }
                return(prices);
            }

            if (TD == dataTable.AllHistory)
            {
                if (T == GlobalObjects.TimeInterval.Minute_2)
                {
                    var firstinDB = dc.OHLC_2_Minutes.AsEnumerable().First().Stamp;
                    var lastinDB  = dc.OHLC_2_Minutes.AsEnumerable().Last().Stamp;
                    if (firstinDB > Start)
                    {
                        dc.OHLC_2_AllHistory();
                    }
                    if (lastinDB > End)
                    {
                        dc.OHLC_2_AllHistory();
                    }
                }
                if (T == GlobalObjects.TimeInterval.Minute_5)
                {
                    try
                    {
                        var firstinDB = dc.OHLC_5_Minutes.AsEnumerable().First().Stamp;
                        var lastinDB  = dc.OHLC_5_Minutes.AsEnumerable().Last().Stamp;
                        if (firstinDB > Start)
                        {
                            dc.OHLC_5_AllHistory();
                        }
                        if (lastinDB < End)
                        {
                            dc.OHLC_5_AllHistory();
                        }
                    }
                    catch { dc.OHLC_5_AllHistory(); }
                }
                if (T == GlobalObjects.TimeInterval.Minute_10)
                {
                    var firstinDB = dc.OHLC_10_Minutes.AsEnumerable().First().Stamp;
                    var lastinDB  = dc.OHLC_10_Minutes.AsEnumerable().Last().Stamp;
                    if (firstinDB > Start)
                    {
                        dc.OHLC_10_AllHistory();
                    }
                    if (lastinDB < End)
                    {
                        dc.OHLC_10_AllHistory();
                    }
                }
            }
            if (TD == dataTable.MasterMinute)
            {
                if (T == GlobalObjects.TimeInterval.Minute_2)
                {
                    var min2 = dc.OHLC_2_Minutes;
                    if (min2.Count() == 0)
                    {
                        dc.OHLC_2();
                    }
                    else
                    {
                        var firstinDB = dc.OHLC_2_Minutes.AsEnumerable().First().Stamp;
                        var lastinDB  = dc.OHLC_2_Minutes.AsEnumerable().Last().Stamp;
                        if (firstinDB > Start)
                        {
                            dc.OHLC_2();
                        }
                        if (lastinDB < End)
                        {
                            dc.OHLC_2();
                        }
                    }
                }

                if (T == GlobalObjects.TimeInterval.Minute_5)
                {
                    var min5 = dc.OHLC_5_Minutes;
                    if (min5.Count() == 0)
                    {
                        dc.OHLC_5();
                    }
                    else
                    {
                        var firstinDB = min5.AsEnumerable().First().Stamp;
                        var lastinDB  = min5.AsEnumerable().Last().Stamp;
                        if (firstinDB > Start)
                        {
                            dc.OHLC_5();
                        }
                        if (lastinDB < End)
                        {
                            dc.OHLC_5();
                        }
                    }
                }

                if (T == GlobalObjects.TimeInterval.Minute_10)
                {
                    var min10 = dc.OHLC_10_Minutes;
                    if (min10.Count() == 0)
                    {
                        dc.OHLC_10();
                    }
                    else
                    {
                        var firstinDB = dc.OHLC_10_Minutes.AsEnumerable().First().Stamp;
                        var lastinDB  = dc.OHLC_10_Minutes.AsEnumerable().Last().Stamp;
                        if (firstinDB > Start)
                        {
                            dc.OHLC_10();
                        }
                        if (lastinDB < End)
                        {
                            dc.OHLC_10();
                        }
                    }
                }

                if (T == GlobalObjects.TimeInterval.Hour_1)
                {
                    dc.OHLC_Hour_1();
                }
            }



            if (T == GlobalObjects.TimeInterval.Minute_2)
            {
                var result = from q in dc.OHLC_2_Minutes
                             where q.Stamp > Start && q.Stamp < End
                             select new { q.Stamp, q.O, q.H, q.L, q.C, q.Instrument };

                foreach (var v in result)
                {
                    Price p = new Price();
                    p.Close          = v.C;
                    p.Open           = v.O;
                    p.High           = v.H;
                    p.Low            = v.L;
                    p.TimeStamp      = v.Stamp;
                    p.InstrumentName = v.Instrument;
                    prices.Add(p);
                }
            }

            if (T == GlobalObjects.TimeInterval.Minute_5)
            {
                var result = from q in dc.OHLC_5_Minutes
                             where q.Stamp > Start && q.Stamp < End
                             select new { q.Stamp, q.O, q.H, q.L, q.C, q.Instrument };

                foreach (var v in result)
                {
                    Price p = new Price();
                    p.Close          = v.C;
                    p.Open           = v.O;
                    p.High           = v.H;
                    p.Low            = v.L;
                    p.TimeStamp      = v.Stamp;
                    p.InstrumentName = v.Instrument;
                    prices.Add(p);
                }
            }
            if (T == GlobalObjects.TimeInterval.Minute_10)
            {
                var result = from q in dc.OHLC_10_Minutes
                             where q.Stamp > Start && q.Stamp < End
                             select new { q.Stamp, q.O, q.H, q.L, q.C, q.Instrument };

                foreach (var v in result)
                {
                    Price p = new Price();
                    p.Close          = v.C;
                    p.Open           = v.O;
                    p.High           = v.H;
                    p.Low            = v.L;
                    p.TimeStamp      = v.Stamp;
                    p.InstrumentName = v.Instrument;
                    prices.Add(p);
                }
            }

            if (T == GlobalObjects.TimeInterval.Hour_1)
            {
                var result = from q in dc.OHLC_1_Hours
                             where q.Stamp > Start && q.Stamp < End
                             select new { q.Stamp, q.O, q.H, q.L, q.C, q.Instrument };

                foreach (var v in result)
                {
                    Price p = new Price();
                    p.Close          = v.C;
                    p.Open           = v.O;
                    p.High           = v.H;
                    p.Low            = v.L;
                    p.TimeStamp      = v.Stamp;
                    p.InstrumentName = v.Instrument;
                    prices.Add(p);
                }
            }



            if (reverseList)
            {
                prices.Reverse();
            }
            return(prices);
        }