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); }
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); }
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); }