public object createPointData(GraphPeriod period, Graph x, GraphSerialsRel rel)
        {
            if (period.Range.Count == 1)
            {
                period.Range.Insert(0, new GraphPeriod(period.Days, period.RangeOrders)
                {
                    MinDate = period.MinDate.Value.Date.AddDays(-2 * period.Days),
                    MaxDate = period.MinDate.Value.Date.AddDays(-1 * period.Days),
                });
                period.Range.Add(new GraphPeriod(period.Days, period.RangeOrders)
                {
                    MinDate = period.MaxDate.Value.Date,
                    MaxDate = period.MaxDate.Value.Date.AddDays(period.Days),
                });
            }

            return(period.Range.Select(
                       (z, index) =>
                       new
            {
                Label = GraphPeriod.CreateLiteralRange(z.MinDate.Value, z.MaxDate.Value),
                Value =
                    period.Calculate(index, rel.SerialID, x.GraphTypeFunc.Func,
                                     x.GraphTypeFunc.TypeID),
            }).Where(z => z.Value != null).ToArray());
        }
Example #2
0
        public int iLowest(string symbol, GraphPeriod timeFrame, int type, int count, int start)
        {
            AsyncCommand aCmd = new AsyncCommand(Commands.ILowest,
                                                 new object[] { symbol, (int)timeFrame, type, count, start });

            return((int)ExecuteCommand(aCmd));
        }
Example #3
0
        public int iBarShift(string symbol, GraphPeriod timeFrame, DateTime dateTime, bool exact)
        {
            AsyncCommand aCmd = new AsyncCommand(Commands.IBarShift,
                                                 new object[] { symbol, (int)timeFrame, Convertor.DateTimeToSeconds(dateTime), exact ? 1 : 0 });

            return((int)ExecuteCommand(aCmd));
        }
Example #4
0
        public int iBars(string symbol, GraphPeriod timeFrame)
        {
            AsyncCommand aCmd = new AsyncCommand(Commands.IBars,
                                                 new object[] { symbol, (int)timeFrame });

            return((int)ExecuteCommand(aCmd));
        }
        public ActionResult GraphFilter(int id)
        {
            var graph = DB.Graphs.FirstOrDefault(x => x.ID == id);

            if (graph != null)
            {
                var range  = new GraphPeriod(graph.Period ?? 1);
                var orders =
                    graph.GraphSerialsRels.SelectMany(x => x.GraphSerial.GraphSerialsOrders)
                    .Select(x => x.Order)
                    .ToList();

                range.InitRange(
                    graph.MinDate.HasValue
                        ? graph.MinDate
                        : (orders.Any() ? orders.Min(x => x.CreateDate) : (DateTime?)null),
                    graph.MaxDate.HasValue
                        ? graph.MaxDate
                        : (orders.Any() ? orders.Max(x => x.CreateDate) : (DateTime?)null), orders);



                range.Serials = graph.GraphSerialsRels;

                range.ID     = id;
                range.TypeID = graph.GraphTypeFunc.TypeID;
                return(PartialView(range));
            }
            return(PartialView(null));
        }
Example #6
0
        public int iClose(string symbol, GraphPeriod timeFrame, int shift)
        {
            AsyncCommand aCmd = new AsyncCommand(Commands.IClose,
                                                 new object[] { symbol, (int)timeFrame, shift });
            int retValue = Convertor.TranslateToPipPrice(symbol, (double)ExecuteCommand(aCmd));

            if (retValue == 0)
            {
                throw new ApplicationException("Local history is empty or meta is stupid f... thing");
            }
            return(retValue);
        }
Example #7
0
        public double iVolume(string symbol, GraphPeriod timeFrame, int shift)
        {
            AsyncCommand aCmd = new AsyncCommand(Commands.IVolume,
                                                 new object[] { symbol, (int)timeFrame, shift });
            double retValue = (double)ExecuteCommand(aCmd);

            if (Math.Abs(retValue) <= Double.Epsilon)
            {
                throw new ApplicationException("Local history is empty or meta is stupid f... thing");
            }
            return(retValue);
        }
Example #8
0
        public DateTime iTime(string symbol, GraphPeriod timeFrame, int shift)
        {
            AsyncCommand aCmd = new AsyncCommand(Commands.ITime,
                                                 new object[] { symbol, (int)timeFrame, shift });
            int retValue = (int)ExecuteCommand(aCmd);

            if (retValue == 0)
            {
                throw new ApplicationException("Local history is empty or meta is stupid f... thing");
            }
            return(Convertor.SecondsToDateTime(retValue));
        }
        public ActionResult GraphFilter(GraphPeriod period, FormCollection collection)
        {
            var graph = DB.Graphs.FirstOrDefault(x => x.ID == period.ID);

            if (graph != null)
            {
                graph.Period = period.Days;
                if (period.MinDateThresh.HasValue && period.MinDate.HasValue)
                {
                    if (period.MinDate < period.MinDateThresh)
                    {
                        period.MinDate = period.MinDateThresh;
                    }
                }
                if (period.MaxDateThresh.HasValue && period.MaxDate.HasValue)
                {
                    if (period.MaxDate > period.MaxDateThresh)
                    {
                        period.MaxDate = period.MaxDateThresh;
                    }
                }
                if (period.MinDate.HasValue && period.MaxDate.HasValue)
                {
                    if (period.MinDate > period.MaxDate)
                    {
                        period.MinDate = period.MaxDate.Value.AddDays(-1);
                    }
                    var days = (int)(period.MaxDate.Value.Subtract(period.MinDate.Value).TotalDays / 2);
                    if (days < 1)
                    {
                        days = 1;
                    }
                    var allowed = period.AllPeriods.OrderBy(x => x).Last(x => x <= days);
                    if (allowed < period.Days)
                    {
                        graph.Period = allowed;
                    }
                }

                graph.MinDate = period.MinDate;
                graph.MaxDate = period.MaxDate;
                DB.SubmitChanges();
                return(GraphFilter(graph.ID));
            }
            return(PartialView(null));
        }
        public ActionResult Issue(GraphPeriod gp)
        {
            GraphData wg     = new GraphData(gp);
            var       Chart1 = new Chart();

            Chart1.Width  = 500;
            Chart1.Height = 350;
            Title title = new Title(wg.Title);

            title.Font = new Font("Calibri", 12, FontStyle.Underline);
            Chart1.Titles.Add(title);

            var area = new ChartArea("ChartArea1");

            Chart1.ChartAreas.Add(area);
            Series series = new Series("Issues", 10);

            series.Points.DataBindXY(wg.Keys, wg.Values);
            // Populate series data
            series.IsValueShownAsLabel = true;
            //series.LabelBackColor = Color.White;
            //series.LabelBorderColor = Color.Black;
            series["LabelStyle"] = "Bottom";
            series.Palette       = gp == GraphPeriod.week? ChartColorPalette.SeaGreen : ChartColorPalette.EarthTones;
            series.EmptyPointStyle.IsValueShownAsLabel = false;
            series.EmptyPointStyle["EmptyPointValue"]  = "Zero";
            // Set Doughnut chart type
            series.ChartType = SeriesChartType.Column;
            Chart1.Series.Add(series);
            // Enable 3D
            Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;
            // Disable the Legend
            Chart1.Legends.Add("Legend1");
            // show legend based on check box value
            Chart1.Legends["Legend1"].Enabled = false;

            var returnStream = new MemoryStream();

            Chart1.ImageType = ChartImageType.Png;
            Chart1.SaveImage(returnStream);
            returnStream.Position = 0;
            return(new FileStreamResult(returnStream, "image/png"));
        }
        public object createSubSeq(Graph x)
        {
            var period = new GraphPeriod(x.Period ?? 1);

            period.InitRange(x.MinDate, x.MaxDate, x.GraphSerialsRels.SelectMany(z => z.GraphSerial.GraphSerialsOrders).Select(z => z.Order).ToList());
            var array = new List <object>();

            foreach (var rel in x.GraphSerialsRels.Where(c => !c.IsHidden))
            {
                array.Add(
                    new
                {
                    Color     = rel.Color,
                    Name      = rel.GraphSerial.Name,
                    PointData = createPointData(period, x, rel)
                }
                    );
            }
            return(array);
        }
Example #12
0
        private List <string> GetDateList(GraphPeriod period, DateTime startDate, DateTime endDate)
        {
            List <TransactionItem> items = TransactionItem.GetCollection().Find(t => t.TransDate >= startDate && t.TransDate <= endDate).ToList();

            switch (period)
            {
            case GraphPeriod.Annual:
                return(items.Select(i => i.TransDate.ToString("yyyy")).Distinct().ToList());

            case GraphPeriod.Monthly:
                return(items.Select(i => i.TransDate.ToString(DATEFORMAT)).Distinct().ToList());

            case GraphPeriod.Weekly:
                DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
                Calendar           cal = dfi.Calendar;
                return(items.Select(i => string.Format("Week {0} {1}", cal.GetWeekOfYear(i.TransDate, dfi.CalendarWeekRule, dfi.FirstDayOfWeek), i.TransDate.ToString("yyyy"))).Distinct().ToList());

            default:
                return(new List <string>());
            }
        }
Example #13
0
        private bool IsDateInPeriod(string periodDate, DateTime dateToCheck, GraphPeriod period)
        {
            switch (period)
            {
            case GraphPeriod.Annual:
                return(periodDate == dateToCheck.ToString("yyyy"));

            case GraphPeriod.Monthly:
                return(periodDate == dateToCheck.ToString(DATEFORMAT));

            case GraphPeriod.Weekly:
                DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
                Calendar           cal = dfi.Calendar;
                return(periodDate == string.Format("Week {0} {1}",
                                                   cal.GetWeekOfYear(dateToCheck, dfi.CalendarWeekRule,
                                                                     dfi.FirstDayOfWeek), dateToCheck.ToString("yyyy")));

            default:
                return(false);
            }
        }
        public OPTReport(GraphPeriod timeframe, DateTime dateProvided)
        {
            switch (timeframe)
            {
            case GraphPeriod.daily:
                startDate = dateProvided;
                endDate   = startDate.AddDays(1).AddSeconds(-1);
                title     = string.Format("OPT Data for {0} ", startDate.ToShortDateString());
                break;

            case GraphPeriod.week:
                startDate = dateProvided.StartOfWeek(DayOfWeek.Monday);
                endDate   = startDate.AddDays(7).AddSeconds(-1);
                title     = string.Format("OPT Data between {0} and {1}", startDate.ToShortDateString(), endDate.ToShortDateString());
                break;

            case GraphPeriod.month:
                startDate = dateProvided.StartOfMonth();
                endDate   = startDate.AddMonths(1).AddSeconds(-1);
                title     = string.Format("OPT Data for {0}", startDate.ToString("MMMM yyyy"));
                break;

            case GraphPeriod.year:
                startDate = dateProvided.StartOfYear();
                endDate   = startDate.AddYears(1).AddSeconds(-1);
                title     = string.Format("OPT Data for {0}", startDate.ToString("yyyy"));
                break;

            default:
                break;
            }

            data = new List <OPTRow>();
            data.Add(new OPTRow("CA", startDate, endDate));
            foreach (var div in myDBContextHelper.CurrentContext.Divisions.Where(d => d.active == true))
            {
                data.Add(new OPTRow(div.Detail, startDate, endDate));
            }
        }
        public PartialViewResult OPTReport(GraphPeriod period, DateTime chosenDate)
        {
            OPTReport rpt = new OPTReport(period, chosenDate);

            return(PartialView("_OPTReport", rpt));
        }
        public GraphData(GraphPeriod gp)
        {
            graphPeriod = gp;
            IEnumerable <Warrant> w = db.Warrants.Where(c => c.createdOn >= startDate).OrderBy(c => c.division.Detail);

            switch (graphPeriod)
            {
            case GraphPeriod.week:
                prefix      = "w/c";
                startDate   = DateTime.Now.StartOfWeek(DayOfWeek.Monday);
                displayDate = startDate.ToString("d MMM yyyy");
                break;

            case GraphPeriod.month:
                prefix      = "";
                startDate   = DateTime.Today.StartOfMonth();
                displayDate = startDate.ToString("MMMM yyyy");
                break;

            case GraphPeriod.year:
                prefix      = "";
                startDate   = Convert.ToDateTime(string.Format("1/1/{0}", DateTime.Now.Year.ToString()));
                displayDate = startDate.ToString("yyyy");
                break;

            default:
                break;
            }

            gData.Add("Child Abductions", db.ChildAbductions.Where(c => c.createdOn >= startDate).Count());
            gData.Add("Bankruptcy", db.Warrants.Where(c => c.createdOn >= startDate).OrderBy(c => c.division.Detail).Where(d => d.division.Detail == "Bankruptcy").Count());
            gData.Add("Chancery", db.Warrants.Where(c => c.createdOn >= startDate).OrderBy(c => c.division.Detail).Where(e => e.division.Detail == "Chancery").Count());
            gData.Add("Family", db.Warrants.Where(c => c.createdOn >= startDate).OrderBy(c => c.division.Detail).Where(c => c.division.Detail == "Family").Count());
            gData.Add("Insolvency", db.Warrants.Where(c => c.createdOn >= startDate).OrderBy(c => c.division.Detail).Where(c => c.division.Detail == "Insolvency").Count()); // null);//
            gData.Add("Queen's Bench", db.Warrants.Where(c => c.createdOn >= startDate).OrderBy(c => c.division.Detail).Where(c => c.division.Detail == "Queen's Bench").Count());

            if (gData["Child Abductions"] == 0)
            {
                gData["Child Abductions"] = null;
            }
            if (gData["Bankruptcy"] == 0)
            {
                gData["Bankruptcy"] = null;
            }
            if (gData["Chancery"] == 0)
            {
                gData["Chancery"] = null;
            }
            if (gData["Family"] == 0)
            {
                gData["Family"] = null;
            }
            if (gData["Insolvency"] == 0)
            {
                gData["Insolvency"] = null;
            }
            if (gData["Queen's Bench"] == 0)
            {
                gData["Queen's Bench"] = null;
            }
        }
Example #17
0
 public double iVolume(string symbol, GraphPeriod timeFrame, int shift)
 {
     throw new NotImplementedException();
 }
Example #18
0
 public DateTime iTime(string symbol, GraphPeriod timeFrame, int shift)
 {
     throw new NotImplementedException();
 }
Example #19
0
 public int iOpen(string symbol, GraphPeriod timeFrame, int shift)
 {
     return(HistoryGroupTick(shift).OpenBid);
 }
Example #20
0
 public int iLowest(string symbol, GraphPeriod timeFrame, int type, int count, int start)
 {
     throw new NotImplementedException();
 }
Example #21
0
 public int iHigh(string symbol, GraphPeriod timeFrame, int shift)
 {
     return(HistoryGroupTick(shift).MaxBid);
 }
Example #22
0
 public int iClose(string symbol, GraphPeriod timeFrame, int shift)
 {
     return(HistoryGroupTick(shift).CloseBid);
 }
Example #23
0
 public int iBarShift(string symbol, GraphPeriod timeFrame, DateTime dateTime, bool exact)
 {
     throw new NotImplementedException();
 }
Example #24
0
 public int iBars(string symbol, GraphPeriod timeFrame)
 {
     throw new NotImplementedException();
 }
Example #25
0
 public int iOpen(string symbol, GraphPeriod timeFrame, int shift)
 {
     throw new NotImplementedException();
 }
Example #26
0
        public void GeneratePointsLists(GraphPeriod period, bool addTotal = true, bool addTrend = false, DateTime?startDate = null, DateTime?endDate = null)
        {
            if (startDate == null || startDate.Value <= DateTime.MinValue || startDate.Value >= DateTime.MaxValue)
            {
                startDate = TransactionItem.GetCollection().Find(t => t.TransDate > DateTime.MinValue).Min(t => t.TransDate).AddDays(-1);
            }
            if (endDate == null || endDate.Value <= DateTime.MinValue || endDate.Value >= DateTime.MaxValue)
            {
                endDate = DateTime.Today;
            }

            _period = period;
            cmbType.SelectedItem = period;
            _startDate           = startDate.Value;
            _endDate             = endDate.Value;
            dtpStartDate.Value   = startDate.Value;
            dtpEndDate.Value     = endDate.Value;

            Dictionary <string, List <object>[]> data = new Dictionary <string, List <object>[]>();
            List <string> dates = GetDateList(_period, _startDate, _endDate);

            // Make the intervals match up with the number of entries we have
            switch (period)
            {
            case GraphPeriod.Annual:
                break;

            case GraphPeriod.Monthly:
                chart1.ChartAreas[0].AxisX.Interval = Math.Min(3, Math.Ceiling(((_endDate - _startDate).Days / 30) / 12.0d));
                break;

            case GraphPeriod.Weekly:
                chart1.ChartAreas[0].AxisX.Interval = Math.Min(5, Math.Ceiling(((_endDate - _startDate).Days / 7) / 26.0d));
                break;
            }

            chart1.Titles[0].Text = period.ToString();

            // group by account
            var items = TransactionItem.GetCollection().FindAll().GroupBy(i => i.Account);

            foreach (var group in items)
            {
                List <object>[] dateAndAmount = new List <object> [2];
                dateAndAmount[0] = new List <object>();
                dateAndAmount[1] = new List <object>();
                // group by date
                foreach (string date in dates)
                {
                    string  lastDate = string.Empty;
                    decimal balance  = 0.00M;
                    // search transactions
                    foreach (TransactionItem item in group)
                    {
                        // Janky, but the best way we can do this without having both a date and a time for each transaction
                        // is to go through the list until you find the first applicable transaction for a given period and
                        // add it to the list of data points. While this may be inaccurate on an individual by-date level,
                        // it should show a consistent level over a number of data points
                        if (IsDateInPeriod(date, item.TransDate, period))
                        {
                            lastDate = date;
                            balance  = item.Balance;
                        }
                    }

                    if (!string.IsNullOrEmpty(lastDate))
                    {
                        dateAndAmount[0].Add(lastDate);
                        dateAndAmount[1].Add(balance);
                    }
                    else
                    {
                        if (dateAndAmount[1].Count > 0)
                        {
                            dateAndAmount[0].Add(date);
                            dateAndAmount[1].Add(dateAndAmount[1].Last());
                        }
                    }
                }
                data.Add(GetFriendlyAccountNames(group.Key), dateAndAmount);
            }

            // If we want to add a total over all the accounts
            if (addTotal)
            {
                List <object>[] dateAndAmount = new List <object> [2];
                dateAndAmount[0] = new List <object>();
                dateAndAmount[1] = new List <object>();
                // go through each possible date
                foreach (string date in dates)
                {
                    decimal total = 0.00M;
                    // go through each account
                    foreach (KeyValuePair <string, List <object>[]> kvp in data)
                    {
                        // search each row...
                        for (int i = 0; i < kvp.Value[0].Count; i++)
                        {
                            // look for the corresponding date
                            if (((string)kvp.Value[0][i]) == date)
                            {
                                // add to the running total
                                total += (decimal)kvp.Value[1][i];
                                break;
                            }
                        }
                    }
                    dateAndAmount[0].Add(date);
                    dateAndAmount[1].Add(total);
                }
                data.Add("Total", dateAndAmount);
            }

            if (addTrend)
            {
                List <object>[] dateAndAmount = data["Total"];
                if (dateAndAmount != null && dateAndAmount[0].Count > 0)
                {
                    decimal slope     = (((decimal)dateAndAmount[1].Last()) - ((decimal)dateAndAmount[1].First())) / (decimal)dateAndAmount[1].Count;
                    decimal intercept = (decimal)dateAndAmount[1].First();

                    List <object>[] trendLine = new List <object> [2];
                    trendLine[0] = new List <object>();
                    trendLine[1] = new List <object>();

                    for (int i = 0; i < dateAndAmount[0].Count; i++)
                    {
                        trendLine[0].Add(dateAndAmount[0][i]);
                        trendLine[1].Add(intercept + (slope * i));
                    }

                    switch (period)
                    {
                    case GraphPeriod.Monthly:
                        trendLine[0].Add("Next month");
                        trendLine[1].Add(intercept + (slope * dateAndAmount[0].Count));
                        break;

                    case GraphPeriod.Weekly:
                        for (int i = 0; i < 4; i++)
                        {
                            trendLine[0].Add("Next week " + (i + 1).ToString());
                            trendLine[1].Add(intercept + (slope * (dateAndAmount[0].Count + i)));
                        }
                        break;

                    default:
                        break;
                    }

                    data.Add("Trend", trendLine);
                }
            }
            else
            {
                List <object>[] dateAndAmount = data["Total"];
                if (dateAndAmount != null && dateAndAmount[0].Count > 0)
                {
                    List <object>[] trendLine = new List <object> [2];
                    trendLine[0] = new List <object>();
                    trendLine[1] = new List <object>();
                    trendLine[0].Add(dateAndAmount[0][0]);
                    trendLine[1].Add(dateAndAmount[1][0]);

                    data.Add("Trend", trendLine);
                }
            }

            foreach (KeyValuePair <string, List <object>[]> kvp in data)
            {
                AddPoints(kvp.Value[0], kvp.Value[1], kvp.Key);
            }
        }