Exemple #1
0
        public object[] Rows(List <Serie> data)
        {
            List <Candel> quotes = this.Symbol_Dashboard.Symbol.Quotes.Where(q => q.Visible).ToList <Candel>();

            object[] rows_data = new object[quotes.Count + 1];

            int    index = 0;
            object empty = null;

            object[] data_item;

            foreach (DateTime date in quotes.Select(q => q.Date))
            {
                data_item = new object[data.Count + 2];

                data_item[0] = new { v = index + 1 };

                for (int i = 0; i < data.Count; i++)
                {
                    SerieValue current_value = data[i].Data.Where(d => d.Date == date).FirstOrDefault();
                    if (current_value != default(SerieValue))
                    {
                        if (current_value.Tooltip != null)
                        {
                            data_item[i + 1] = new { v = current_value.Tooltip };
                        }
                        else
                        {
                            data_item[i + 1] = new { v = current_value.Value };
                        }
                    }
                    else
                    {
                        data_item[i + 1] = new { v = empty };
                    }
                }

                string date_str   = String.Format("{0} {1}, {2}", date.Date.Month, date.Date.Day, date.Date.Year);
                string datestring = String.Format("Date({0},{1},{2})", date.Date.Year, date.Date.Month - 1, date.Date.Day);
                data_item[data.Count + 1] = new { v = datestring, f = date_str };//RoundDate

                object current_data_object = new { c = data_item };
                rows_data[index] = current_data_object;
                index++;
            }

            //Dummy Candel
            DateTime max_date = data.Max(l => l.Data.Max(d => d.Date)).AddDays(1);

            data_item    = new object[data.Count + 2];
            data_item[0] = new { v = index + 1 };
            for (int i = 0; i < data.Count; i++)
            {
                data_item[i + 1] = new { v = empty };
            }
            data_item[data.Count + 1] = new { v = String.Format("Date({0},{1},{2})", max_date.Date.Year, max_date.Date.Month - 1, max_date.Date.Day), f = String.Format("{0} {1}, {2}", max_date.Date.Month, max_date.Date.Day, max_date.Date.Year) };
            rows_data[index]          = new { c = data_item };
            return(rows_data);
        }
Exemple #2
0
        private void Tick()
        {
            lblRend.Text = game.FPS.ToString("0.00") + " fps";

            //count++;
            var e = GetElapsed();

            //Console.WriteLine((int)e.TotalMilliseconds);
            if (reproducing)
            {
                if (GetElapsed() > endTime)
                {
                    timer1.Stop();
                    return;
                }
                else if (reprIndex < reprTokens.Length)
                {
                    Token t = reprTokens[reprIndex];
                    if (GetElapsed().Multiply(TimeScale) >= t.time)
                    {
                        ParseData(t.num1 + "" + t.num2, true);
                        reprIndex++;
                    }
                }
                lblTiempo.Invoke((MethodInvoker) delegate
                {
                    lblTiempo.Text = GetElapsed().ToString(@"hh\:mm\:ss") + "/" + endTime.ToString(@"hh\:mm\:ss");
                });
            }
            else
            {
                lblTiempo.Invoke((MethodInvoker) delegate
                {
                    lblTiempo.Text = GetElapsed(true).ToString(@"hh\:mm\:ss");
                });
            }

            UpdateCheckboxes();

            SerieValue[] vs = new SerieValue[8];
            for (int i = 0; i < series.Length; i++)
            {
                vs[i] = new SerieValue(series[i], elapsed.Elapsed);
            }

            game.AddTiles(vs);
            //liveChart1.AddOneSeries(series, elapsed.Elapsed);
        }
Exemple #3
0
 private void btnAvanzarFinal_Click(object sender, EventArgs e)
 {
     if (reproducing)
     {
         SerieValue[] small = new SerieValue[8];
         for (int i = 0; i < reprTokens.Length; i++)
         {
             var item = reprTokens[i];
             small[item.num1 - 1] = new SerieValue(item.num2 == 1, item.time);
             game.AddTiles(small);
         }
         elapsed.Offset = endTime - TimeSpan.FromSeconds(1);
         game.Running   = false;
         game.ScrollToEnd();
     }
     else if (game.Series.Count > 0)
     {
         game.ScrollToEnd();
     }
 }
        public override void ApplyFormula()
        {
            this.Series = new List <Serie>();

            Serie DataSource = Candel.GetDataSerie(base.Data_Source, DataSourceFieldUsed.Close, false);

            //get the other quotes
            Serie indexDataSource = Candel.GetDataSerie(this.GetCandelsBySymbol(this.SecondaryIndex), DataSourceFieldUsed.Close, false);

            //get al the values that had data for the index for the same date
            var filterDataSource      = DataSource.Data.Where(x => indexDataSource.Data.Select(y => y.Date).Contains(x.Date)).ToList();
            var filterIndexDataSource = indexDataSource.Data.Where(x => DataSource.Data.Select(y => y.Date).Contains(x.Date)).ToList();

            Serie corr = new Serie()
            {
                Color = this.Serie_Color, Serie_Type = SerieType.line, Column_Serie_ID = "corr"
            };

            corr.Column_Data_Label = "Coeficiente Correlacion " + this.SecondaryIndex;

            double[]   values1 = new double[this.Rounds];
            double[]   values2 = new double[this.Rounds];
            double     desvest1 = 0, desvest2 = 0;
            double     values_average1 = 0, values_average2 = 0;
            SerieValue current = null;

            for (int i = 0; i < filterDataSource.Count(); i++)
            {
                current = filterDataSource[i];
                values1[i % this.Rounds] = current.Value;
                values2[i % this.Rounds] = filterIndexDataSource[i].Value;

                if (current.Date != filterIndexDataSource[i].Date)
                {
                    throw new InvalidOperationException();
                }

                values_average1 = values1.Where(x => x > 0).Average();
                values_average2 = values2.Where(x => x > 0).Average();

                if (i >= this.Rounds - 1)
                {
                    //desvest 1
                    var pows = values1.Select(x => Math.Pow(x - values_average1, 2));
                    var sum  = pows.Sum() / (this.Rounds - 1);
                    desvest1 = Math.Sqrt(sum);

                    //desvest 2
                    var pows2 = values2.Select(x => Math.Pow(x - values_average2, 2));
                    var sum2  = pows2.Sum() / (this.Rounds - 1);
                    desvest2 = Math.Sqrt(sum2);

                    //cov
                    var cov1     = values1.Select(x => x - values_average1);
                    var cov2     = values2.Select(x => x - values_average2);
                    var prodList = cov1.Zip(cov2, (x, y) => x * y).ToList();
                    var cov      = prodList.Sum() / this.Rounds;

                    //corr
                    if (filterDataSource[i].Visible)
                    {
                        corr.Data.Add(new SerieValue()
                        {
                            Date = current.Date, Value = cov / (desvest1 * desvest2)
                        });
                    }
                }
            }

            this.Series.Add(corr);
        }