private void btnExport_Click(object sender, System.EventArgs e) { DBDataManager ddm = new DBDataManager(); try { int DateIndex = 0; int TickerIndex = -1; string[] ssHeader; string DateFormat; GetFormatInfo(ref DateIndex, ref TickerIndex, out ssHeader, out DateFormat); CommonDataProvider cdp = (CommonDataProvider)ddm[tbSymbol.Text]; StringBuilder sb = new StringBuilder(); if (cbHasHeader.Checked) { sb.Append(ddlFormat.SelectedItem.Text + "\r\n"); } char r = GetSeperator(); for (int i = 0; i < cdp.Count; i++) { for (int j = 0; j < ssHeader.Length; j++) { if (j == DateIndex) { sb.Append(DateTime.FromOADate(cdp["DATE"][i]).ToString(DateFormat, DateTimeFormatInfo.InvariantInfo)); } else if (j == TickerIndex) { sb.Append(cdp.GetStringData("Code")); } else { try { double[] dd = cdp[ssHeader[j]]; if (dd != null) { sb.Append(dd[i].ToString("f2")); } } catch { } } sb.Append(r); } sb.Remove(sb.Length - 1, 1); sb.Append("\r\n"); } tbCSVData.Text = sb.ToString(); } catch (Exception ex) { lMsg.Text = ex.Message; } }
private void btnClear_Click(object sender, System.EventArgs e) { try { string Filename = DBDataManager.GetHisDataFile(tbSymbol.Text); File.Delete(Filename); } catch (Exception ex) { lMsg.Text = ex.Message; } }
private void ShowObjectFile(string FileName) { DataManagerBase dmb = new DBDataManager(); FormulaChart fc = ObjectManager.ShowObjectOnChart("MSFT", FileName, dmb, true); if (fc != null) { int Width = 800; int Height = 600; if (fc.Rect != Rectangle.Empty) { Width = fc.Rect.Width; Height = fc.Rect.Height; } ibChart.ImageUrl = fc.SaveToWeb(Width, Height); } }
private void btnDraw_Click(object sender, System.EventArgs e) { IDataManager idm = new DBDataManager(); FormulaChart fc = FormulaChart.CreateChart(idm["MSFT"]); fc.EndTime = new DateTime(2004, 1, 9); fc.StartTime = fc.EndTime.AddMonths(-8); ObjectManager om = ObjectManager.FromChart(fc); if (cbPriceLabel.Checked) { LabelObject lo = new LabelObject(); lo.InitPriceDateLabel(); lo.ControlPoints[0] = GetObjectPoint(tbPriceDate.Text, tbLablePrice.Text); om.AddObject(lo); } ; if (cbArrowLine.Checked) { LineObject lo = new LineObject(); lo.LinePen.Width = 5; lo.LinePen.Color = Color.Red; lo.LinePen.Alpha = 100; lo.LinePen.DashStyle = DashStyle.DashDotDot; lo.InitArrowCap(); lo.ControlPoints[0] = GetObjectPoint(tbArrowStartDate.Text, tbArrowStartPrice.Text); lo.ControlPoints[1] = GetObjectPoint(tbArrowStopDate.Text, tbArrowStopPrice.Text); om.AddObject(lo); } if (cbRegression.Checked) { LinearRegressionObject lro = new LinearRegressionObject(); lro.InitChannel(); lro.ControlPoints[0] = GetObjectPoint(tbRegStartDate.Text, "10"); lro.ControlPoints[1] = GetObjectPoint(tbRegStopDate.Text, "10"); lro.ShowAuxLine = true; om.AddObject(lro); } ibChart.ImageUrl = fc.SaveToWeb(800, 600); }
private void btnDelete_Click(object sender, System.EventArgs e) { DBDataManager ddm = new DBDataManager(); try { CommonDataProvider cdp = (CommonDataProvider)ddm[tbSymbol.Text]; lMsg.Text = "Original data count :" + cdp.Count + "<br>"; cdp.DeleteData(dpStart.Date, dpEnd.Date); lMsg.Text += "New data count : " + cdp.Count; string Filename = DBDataManager.GetHisDataFile(tbSymbol.Text); if (File.Exists(Filename)) { File.Delete(Filename); } Utils.UpdateRealtime(tbSymbol.Text, cdp); cdp.SaveBinary(Filename); } catch (Exception ex) { lMsg.Text = ex.Message; } }
private void btnMerge_Click(object sender, System.EventArgs e) { string[] Keys = { "OPEN", "HIGH", "LOW", "CLOSE", "VOLUME", "DATE", "ADJCLOSE" }; string[] ss = tbCSVData.Text.Trim().Split('\n'); int DateIndex = 0; int TickerIndex = -1; string[] ssHeader; string DateFormat; GetFormatInfo(ref DateIndex, ref TickerIndex, out ssHeader, out DateFormat); SortedList slAllSymbol = new SortedList(Comparer.Default); SortedList slOneSymbol; char r = GetSeperator(); for (int i = cbHasHeader.Checked?1:0; i < ss.Length; i++) { string[] sss = ss[i].Trim().Split(r); try { string Ticker = tbSymbol.Text; if (TickerIndex >= 0) { Ticker = sss[TickerIndex]; } slOneSymbol = (SortedList)slAllSymbol[Ticker]; if (Ticker == "") { throw new Exception("Symbol can't be empty!"); } if (slOneSymbol == null) { slOneSymbol = new SortedList(Comparer.Default); slAllSymbol[Ticker] = slOneSymbol; } slOneSymbol[DateTime.ParseExact(sss[DateIndex].Trim(), DateFormat, DateTimeFormatInfo.InvariantInfo) ] = sss; } catch (Exception ex) { throw new Exception(ex.Message + ";" + sss[DateIndex] + ";" + DateFormat); } } lMsg.Text = ""; DBDataManager ddm = new DBDataManager(); try { foreach (string s in slAllSymbol.Keys) { slOneSymbol = (SortedList)slAllSymbol[s]; double[][] ds = new double[7][]; for (int i = 0; i < ds.Length; i++) { ds[i] = new double[slOneSymbol.Count]; for (int j = 0; j < ds[i].Length; j++) { ds[i][j] = double.NaN; } } for (int i = 0; i < slOneSymbol.Count; i++) { ds[5][i] = ((DateTime)slOneSymbol.GetKey(i)).ToOADate(); for (int j = 0; j < ssHeader.Length; j++) { if (j != DateIndex && j != TickerIndex) { int k = Array.IndexOf(Keys, ssHeader[j].ToUpper()); if (k >= 0) { string[] sss = (string[])slOneSymbol.GetByIndex(i); ds[k][i] = double.Parse(sss[j]); } } } for (int j = 0; j < ds.Length; j++) { if (double.IsNaN(ds[j][i])) { ds[j][i] = ds[3][i]; } } } CommonDataProvider cdp = (CommonDataProvider)ddm[s]; CommonDataProvider cdpDelta = new CommonDataProvider(null); cdpDelta.LoadBinary(ds); lMsg.Text += "Symbol:" + s + "; Original data count :" + cdp.Count + "; Merge data count : " + cdpDelta.Count + "; "; cdp.Merge(cdpDelta); lMsg.Text += "New data count : " + cdp.Count + "<br>"; Impersonate.ChangeToAdmin(); Utils.UpdateRealtime(s, cdp); cdp.SaveBinary(DBDataManager.GetHisDataFile(s)); } } catch (Exception ex) { lMsg.Text = ex.Message; } }
/// <summary> /// Test days : FixData.TestDays /// When data increase or decline beyond +/-"FixData.Difference"% , reload data /// When data lost for "FixData.GapDays" days, reload data, still no data then delete /// When no data for latest "FixData.NoDataDays" days, reload data, still no data then delete /// /// Result saved in QuoteCode /// -1 : Stocks should be deleted /// -2 : Network error, Should redownload /// -3 : No need to fix again /// -4 : Fixed symbols /// </summary> /// <param name="Sender"></param> static public void FixData(object Sender) { Tools.Log("FixData started"); try { DataTable dtSkip = DB.GetDataTable("select QuoteCode from ScanedQuote where ConditionId=-3"); ArrayList alSkip = new ArrayList(); foreach (DataRow dr in dtSkip.Rows) { alSkip.Add(dr[0].ToString()); } DB.DoCommand("delete from ScanedQuote where ConditionId<0 and ConditionId<>-3"); DataManagerBase dmb = Utils.GetDefaultDataManager(); DataTable dt = dmb.GetSymbolList(); DBDataManager ddm = new DBDataManager(); FixedCount = 0; FixErrorCount = 0; TotalCount = dt.Rows.Count; for (int j = 0; j < dt.Rows.Count; j++) { NowIndex = j + 1; DataRow dr = dt.Rows[j]; string Symbol = dr["QuoteCode"].ToString(); try { if (TestGood(ddm, Symbol, false) != FixDataResult.OK) { if (alSkip.IndexOf(Symbol) >= 0) { if (TestGood(ddm, Symbol, true) == FixDataResult.OK) { continue; } else { DB.DoCommand("delete from ScanedQuote where ConditionId=-3 and QuoteCode='" + Symbol + "'"); } } for (int k = 0; k < 3; k++) { try { Utils.DownloadYahooHistory(Symbol, true, false); break; } catch (WebException) { if (k == 2) { throw; } } } FixDataResult fdr1 = TestGood(ddm, Symbol, false); FixDataResult fdr2 = TestGood(ddm, Symbol, true); if (fdr2 == FixDataResult.NoData) { InsertQuote(-1, Symbol); } else if (fdr1 == FixDataResult.Others && fdr2 == FixDataResult.OK) { InsertQuote(-3, Symbol); } else { InsertQuote(-4, Symbol); } FixedCount++; } } catch (Exception e) { if (e.Message.IndexOf("404") >= 0) { InsertQuote(-1, Symbol); } else { InsertQuote(-2, Symbol); } Tools.Log("FixData:" + Symbol + ";" + e.Message + ";" + e.GetType()); FixErrorCount++; } Thread.Sleep(1); } Tools.Log("FixData finished"); } finally { FixDataThread = null; } }