public override string GetStr() { double[] dd = base.Manager.Canvas.BackChart.DataProvider["DATE"]; int num = FormulaChart.FindIndex(dd, base.ControlPoints[0].X); return((FormulaChart.FindIndex(dd, base.ControlPoints[1].X) - num) + "(T)"); }
protected void btnOK_Click(object sender, System.EventArgs e) { BindData(); FormulaBase fb = FormulaBase.GetFormulaByName(CurrentFullName); foreach (string s in Request.Form) { if (s.StartsWith("__Param")) { fb.SetParam(s.Substring(7), Request.Form[s]); } } YahooDataManager ydm = new YahooDataManager(); ydm.CacheRoot = HttpRuntime.AppDomainAppPath + "Cache\\"; CommonDataProvider DataProvider = (CommonDataProvider)ydm[tbCode.Text]; FormulaChart fc = new FormulaChart(); fc.AddArea("MAIN", 2); if (CurrentProgram.IsMainView) { fc[0].AddFormula(fb); } else { fc.AddArea(fb); } fc.LatestValueType = LatestValueType.StockOnly; fc.SetSkin(Config.DefaultSkin); try { fc.DataProvider = DataProvider; FormulaData fdDate = DataProvider["DATE"]; string s = tbCode.Text; if (fdDate.Length > 0) { s += " (" + DateTime.FromOADate(fdDate[fdDate.Length - 1]).ToString("yyyy-MMM-dd", DateTimeFormatInfo.InvariantInfo) + ")"; } fc[0].Formulas[0].Name = s; fc[0].Formulas[0].TextInvisible = false; fc.StartTime = DateTime.Now.AddMonths(-8); fc.EndTime = DateTime.Now; } catch (Exception ee) { Bitmap b = new Bitmap(640, 480); Graphics g = Graphics.FromImage(b); g.FillRectangle(Brushes.WhiteSmoke, 0, 0, 640, 480); g.DrawRectangle(Pens.Black, 0, 0, 639, 479); g.DrawString(ee.Message, new Font("verdana", 10), Brushes.Red, 1, 1); } lChart.Text = "<img src=ImageFromCache.aspx?CacheId=" + fc.SaveToImageStream(640, 400, ImageFormat.Png, 0, 0) + ">"; }
// private void miPrint_Click(object sender, System.EventArgs e) // { // ChartControl.Print(); // } // private void miPreview_Click(object sender, System.EventArgs e) // { // ChartControl.PrintPreview(); // // } // private void miSetup_Click(object sender, System.EventArgs e) // { // ChartControl.PrintSetup(); // } //private void miTwoIndi_Click(object sender, System.EventArgs e) //{ // if (ChartControl.Chart.Areas.Count>2) // { // ChartControl.Chart[2].Formulas.Clear(); // ChartControl.Chart[2].AddFormula("RSI"); // ChartControl.Chart[2].AddFormula("VOL"); // ChartControl.Chart[2].Bind(); // ChartControl.Chart[2].Formulas[1].AxisYIndex = 1; // ChartControl.NeedRebind(); // } //} //DataClientBase dcb = new ProphetDataClient(); // private void miLoadFromProphet_Click(object sender, System.EventArgs e) // { // // string s = InputBox.ShowInputBox("Quote:","MSFT"); // // if (s!="") // // { // // if (!dcb.Logined) // // DataFeedLogin.Login(dcb); // // // // if (dcb.Logined) // // { // // DataClientDataManager dcdm = new DataClientDataManager(dcb,false); // // ChartControl.DataManager = dcdm; // // ChartControl.CurrentDataCycle = "DAY"; // // ChartControl.Symbol = s; // // } // // } // } // private void miLineType_Click(object sender, System.EventArgs e) // { // Array a = Enum.GetValues(typeof(StockRenderType)); // ChartControl.StockRenderType = (StockRenderType)( ((int)ChartControl.StockRenderType+1) % a.Length ); // } // private void miLoadXml_Click(object sender, System.EventArgs e) // { // ChartControl.DataManager = new XmlDataManager(); // ChartControl.Symbol = "example"; // ChartControl.CurrentDataCycle = DataCycle.Day; // } // private void miMetaStock_Click(object sender, System.EventArgs e) // { // odLoadData.FilterIndex = 2; // if (odLoadData.ShowDialog()==DialogResult.OK) // { // string Filename = odLoadData.FileName; // MSDataManager mdm = new MSDataManager(Filename); // ChartControl.DataManager = mdm; // ChartControl.Symbol = mdm.GetSymbol(Path.GetFileNameWithoutExtension(Filename)); // } // } // private void miGetData_Click(object sender, System.EventArgs e) // { // IDataProvider idp = ChartControl.Chart.DataProvider; // if (idp!=null) // { // FormulaData fdDate = idp["DATE"]; // FormulaData fdClose = idp["CLOSE"]; // FormulaData fdHigh = idp["HIGH"]; // FormulaData fdLow = idp["LOW"]; // FormulaData fdOpen = idp["OPEN"]; // // StringBuilder sb = new StringBuilder(); // // for(int i=Math.Max(0,fdClose.Length-10) ; i<fdClose.Length; i++) // { // sb.Append(DateTime.FromOADate(fdDate[i]).ToString("yyyy-MM-dd")+ " C:"+fdClose[i].ToString()+" "); // sb.Append("H: "+fdHigh[i]+" L:"+fdLow[i]+" O:"+fdOpen[i]); // sb.Append("\r\n"); // } // // MessageBox.Show(sb.ToString()); // } // } private void ChartControl_AfterApplySkin(object sender, System.EventArgs e) { foreach (FormulaArea fa in ChartControl.Chart.Areas) { foreach (FormulaData fd in fa.FormulaDataArray) { if (fd.ParentFormula.FormulaName == "RSI(14)") { fd.FormulaUpColor = Color.CadetBlue; } } } bool b = ChartControl.HistoryDataManager is BondTextDataManager; ChartControl.Chart.SetBondFormat(b, b?"Y4":"Z2"); ChartControl.LatestValueType = b?LatestValueType.StockOnly:LatestValueType.All; FormulaChart fc = ChartControl.Chart; if (fc.Areas.Count > 1 && fc[1].Formulas.Count > 1) { fc[1][1].FormulaUpColor = Color.DarkGreen; } }
protected void Page_Load(object sender, System.EventArgs e) { // Bind Data DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager); // Create Chart Chart = FormulaChart.CreateChart( "Main(3);VOLMA", "MA(14);MA(28)", dmb[tbSymbol.Text], ddlSkin.SelectedItem.Value); // Set Custom Event Handler Chart.NativePaint += new NativePaintHandler(fc_NativePaint); int Width = 800; int Height = 600; if (lWidth != null) { Width = Tools.ToIntDef(lWidth.Text, Width); } if (lHeight != null) { Height = Tools.ToIntDef(lHeight.Text, Height); } // Show Chart hlChart.ImageUrl = Chart.SaveToWeb(Width, Height, new Rectangle(0, 18, Width, Height - 18 * 2), ImageFormat.Png); }
private void BindChart() { FormulaChart fc = new FormulaChart(); FML.NATIVE.CustomFormula cf = new FML.NATIVE.CustomFormula("Custom"); cf.Add(tbName1.Text, TextToDoubleArray(tbLine1.Text)); double[] Date; double[] Data; GetDateAndData(tbLine2.Text, out Date, out Data); cf.Add(tbName2.Text, Date, Data); fc.AddArea("MAIN", 2); fc.AddArea(cf); fc.SetSkin(FormulaSkin.GetSkinByName(Config.DefaultSkin)); DBDataManager ddm = new DBDataManager(); fc.DataProvider = ddm[tbSymbol.Text]; FormulaBase fb = fc[0].Formulas[0]; fb.Name = fc.DataProvider.GetStringData("Code") + "(" + fc.DataProvider.GetStringData("Name") + ")"; fb.TextInvisible = false; iChart.ImageUrl = "../ImageFromCache.aspx?CacheId=" + fc.SaveToImageStream(600, 400, ImageFormat.Png, 0, 0); }
static public ObjectManager FromChart(FormulaChart fc) { ObjectManager om = new ObjectManager(new WebCanvas(fc)); fc.NativePaint += new NativePaintHandler(om.ObjectManager_DirectPaint); return(om); }
static public FormulaChart ShowObjectOnChart(FormulaChart fc, TextReader reader, DataManagerBase dmb, bool ObjectLayout) { ObjectManager om = FromChart(fc); om.ReadXml(reader, false); if (om.startTime != 0.0) { fc.StartTime = DateTime.FromOADate(om.startTime); } if (om.endTime != 0.0) { fc.EndTime = DateTime.FromOADate(om.endTime); } if (ObjectLayout && om.indicators != null) { fc.Areas.Clear(); if (om.indicators != null) { fc.StringsToArea(om.indicators.Split(';')); } fc.SetAreaPercent(om.areaPercent); fc.Rect = new Rectangle(0, 0, om.width, om.height); } om.SetCanvas(om.Canvas); if (om.skin != null) { fc.SetSkin(om.skin); } fc.StickRenderType = om.stickRenderType; if (om.symbol != null && om.symbol != "") { //if (om.latestTime!=0.0) // dmb.EndTime = DateTime.FromOADate(om.latestTime); CommonDataProvider cdp = (CommonDataProvider)dmb[om.symbol]; cdp.DataCycle = DataCycle.Parse(om.currentDataCycle); fc.DataProvider = cdp; } FormulaArea fa = fc.MainArea; if (fa != null) { fa.StockRenderType = om.stockRenderType; } if (om.minPrice != 0) { if (fa != null) { fa.AxisY.MinY = om.minPrice; fa.AxisY.MaxY = om.maxPrice; fa.AxisY.AutoScale = false; } } return(fc); }
public void SetSnapPrice(SnapType snap) { if (snap == SnapType.Price) { double[] dd = this.Manager.Canvas.BackChart.DataProvider["DATE"]; int index = 0; int num2 = 1; if (this.ControlPointNum == 1) { num2 = 0; } int a = FormulaChart.FindIndex(dd, this.ControlPoints[index].X); int b = FormulaChart.FindIndex(dd, this.ControlPoints[num2].X); if (a > b) { this.Swap(ref a, ref b); } FormulaData data = this.Area.FormulaDataArray[0]; double[] numArray2 = data["L"]; if (numArray2 == null) { numArray2 = data.Data; } double[] numArray3 = data["H"]; if (numArray3 == null) { numArray3 = data.Data; } if ((a < numArray2.Length) && (b < numArray2.Length)) { float maxValue = float.MaxValue; float minValue = float.MinValue; for (int i = a; i <= b; i++) { maxValue = Math.Min(maxValue, (float)numArray2[i]); minValue = Math.Max(minValue, (float)numArray3[i]); } if (this.ControlPointNum > 1) { if (this.ControlPoints[0].Y < this.ControlPoints[1].Y) { this.Swap(ref maxValue, ref minValue); } this.ControlPoints[0].Y = minValue; this.ControlPoints[1].Y = maxValue; } else if (this.ControlPoints[0].Y < maxValue) { this.ControlPoints[0].Y = maxValue; } else if (this.ControlPoints[0].Y > minValue) { this.ControlPoints[0].Y = minValue; } } } }
private void btnOK_Click(object sender, System.EventArgs e) { //Create a Formula namespace FormulaSpace fms = new FormulaSpace("FML"); //Create a Formula program , set Formula name and script code on the fly FormulaProgram fp = new FormulaProgram(); fp.Name = tbFormulaName.Text; fp.Code = tbProgramScript.Text; //Add the script program to the Formula namespace fms.Programs.Add(fp); //Add parameters to Formula program for (int i = 1; i < 5; i++) { if (Request.Form["tbParamName" + i] != "") { fp.Params.Add(new FormulaParam( Request.Form["tbParamName" + i], Request.Form["tbDefValue" + i], Request.Form["tbMinValue" + i], Request.Form["tbMaxValue" + i], FormulaParamType.Double)); } } try { //Compile the Formula script on the fly Assembly a = fms.CompileInMemory(); FormulaBase fb = FormulaBase.GetFormulaByName(a, fms.Name + "." + fp.Name); //Create YahooDataManager , Get stock data from yahoo. YahooDataManager ydm = new YahooDataManager(); ydm.CacheRoot = HttpRuntime.AppDomainAppPath + "Cache\\"; CommonDataProvider DataProvider = (CommonDataProvider)ydm[tbCode.Text]; //Create financial chart instance FormulaChart fc = new FormulaChart(); fc.PriceLabelFormat = "{CODE}"; fc.LatestValueType = LatestValueType.Custom; fc.AddArea("MAIN", 3); fc.AddArea(fb); fc.DataProvider = DataProvider; fc.SetSkin(Config.DefaultSkin); //Show the temp image just created lChart.Text = "<img src=ImageFromCache.aspx?CacheId=" + fc.SaveToImageStream(440, 440, ImageFormat.Png, 0, 0) + ">"; } catch (FormulaErrorException fee) { //Show the compile result if the script has some errors lChart.Text = fee.ToHtml(); } }
/// <summary> /// Convert ObjectPoint to PointF /// </summary> /// <param name="op"></param> /// <returns></returns> public PointF ToPointF(ObjectPoint op) { FormulaChart fc = Manager.Canvas.Chart; if (fc != null) { return(fc.GetPointAt(AreaName, op.X, null, op.Y)); } return(PointF.Empty); }
public static void ShowObjectOnChart(FormulaChart fc, string FileName) { if (File.Exists(FileName)) { using (TextReader reader = new StreamReader(FileName)) { ShowObjectOnChart(fc, reader); } } }
public PointF ToPointF(ObjectPoint op) { FormulaChart backChart = this.Manager.Canvas.BackChart; if (backChart != null) { return(backChart.GetPointAt(this.AreaName, op.X, null, op.Y)); } return(PointF.Empty); }
public override string GetStr() { if (this.lineType == SingleLineType.Horizontal) { PointF tf = base.ToPointF(base.ControlPoints[0]); return(base.Area.AxisY.GetValueFromY(tf.Y).ToString(this.DataFormat)); } double[] dd = base.Manager.Canvas.BackChart.DataProvider["DATE"]; double d = dd[FormulaChart.FindIndex(dd, base.ControlPoints[0].X)]; return(DateTime.FromOADate(d).ToString(this.DataFormat)); }
public override string GetStr() { //IDataProvider idp = Manager.Canvas.BackChart.DataProvider; //double[] dd = idp["DATE"]; FormulaChart BackChart = Manager.Canvas.Chart; //int Bar1 = FormulaChart.FindIndex(dd,ControlPoints[0].X); //int Bar2 = FormulaChart.FindIndex(dd,ControlPoints[1].X); int Bar1 = BackChart.DateToIndex(ControlPoints[0].X); int Bar2 = BackChart.DateToIndex(ControlPoints[1].X); return((Bar2 - Bar1) + "(T)"); }
static public FormulaChart ShowObjectOnChart(FormulaChart fc, string Symbol, string FileName, DataManagerBase dmb, bool ObjectLayout) { if (File.Exists(FileName)) { using (TextReader reader = new StreamReader(FileName)) return(ShowObjectOnChart(fc, reader, dmb, ObjectLayout)); } else { fc.DataProvider = dmb[Symbol]; } return(fc); }
public override string GetStr() { if (lineType == SingleLineType.Horizontal) { PointF p = ToPointF(ControlPoints[0]); double Value = Area.AxisY.GetValueFromY(p.Y); return(Value.ToString(DataFormat)); } else { FormulaChart BackChart = Manager.Canvas.Chart; int i = BackChart.DateToIndex(ControlPoints[0].X); DateTime D = BackChart.IndexToDate(i); return(D.ToString(DataFormat)); } }
public override string GetStr() { if (lineType == SingleLineType.Horizontal) { PointF p = ToPointF(ControlPoints[0]); double Value = Area.AxisY.GetValueFromY(p.Y); return(Value.ToString(DataFormat)); } else { IDataProvider idp = Manager.Canvas.BackChart.DataProvider; double[] dd = idp["DATE"]; double d = dd[FormulaChart.FindIndex(dd, ControlPoints[0].X)]; return(DateTime.FromOADate(d).ToString(DataFormat)); } }
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); } }
public void WriteXml(TextWriter writer) { if (Canvas != null && Canvas.Chart != null) { FormulaChart fc = Canvas.Chart; IDataProvider idp = fc.DataProvider; if (idp != null) { symbol = idp.GetStringData("Code"); currentDataCycle = idp.DataCycle.ToString(); startTime = fc.StartTime.ToOADate(); endTime = fc.EndTime.ToOADate(); areaPercent = fc.GetAreaPercent(); indicators = string.Join(";", fc.AreaToStrings()); stickRenderType = fc.StickRenderType; width = fc.Rect.Width; height = fc.Rect.Height; if (Canvas.DesignerControl is ChartWinControl) { skin = ((ChartWinControl)Canvas.DesignerControl).Skin; } if (fc.MainArea != null) { maxPrice = fc.MainArea.AxisY.MaxY; minPrice = fc.MainArea.AxisY.MinY; stockRenderType = fc.MainArea.StockRenderType; } double[] dd = idp["DATE"]; if (dd.Length > 0) { latestTime = dd[dd.Length - 1]; } } } CreateSerializer(); xsReadWrite.Serialize(writer, this, new XmlSerializerNamespaces( new XmlQualifiedName[] { new XmlQualifiedName("EasyChart", "http://finance.easychart.net") })); Changed = false; }
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); }
public ChartDragInfo(FormulaChart Chart, FormulaHitInfo HitInfo) { this.HitInfo = HitInfo; this.AreaHeight = new int[Chart.Areas.Count]; FormulaAxisY axisY = HitInfo.AxisY; if ((axisY == null) && (HitInfo.Area != null)) { axisY = HitInfo.Area.AxisY; } if (axisY != null) { this.AreaMinY = axisY.MinY; this.AreaMaxY = axisY.MaxY; } for (int i = 0; i < Chart.Areas.Count; i++) { FormulaArea area = Chart.Areas[i]; this.AreaHeight[i] = area.Rect.Height; } this.StartTime = Chart.StartTime; this.EndTime = Chart.EndTime; }
/// <summary> /// Constructor of ChartDragInfo /// </summary> /// <param name="Chart">FormulaChart instance</param> /// <param name="HitInfo">The Hit information of the dragging start point</param> public ChartDragInfo(FormulaChart Chart, FormulaHitInfo HitInfo) { this.HitInfo = HitInfo; AreaHeight = new int[Chart.Areas.Count]; FormulaAxisY fay = HitInfo.AxisY; if (fay == null && HitInfo.Area != null) { fay = HitInfo.Area.AxisY; } if (fay != null) { AreaMinY = fay.MinY; AreaMaxY = fay.MaxY; } for (int i = 0; i < Chart.Areas.Count; i++) { FormulaArea fa = Chart.Areas[i]; AreaHeight[i] = fa.Rect.Height; } StartTime = Chart.StartTime; EndTime = Chart.EndTime; }
static public FormulaChart ShowObjectOnChart(string Symbol, string FileName, DataManagerBase dmb, bool ObjectLayout) { FormulaChart fc = FormulaChart.CreateChart(null); return(ShowObjectOnChart(fc, Symbol, FileName, dmb, ObjectLayout)); }
/// <summary> /// Replace format /// {D:yyyy-MM-dd} /// {C:f2} /// {0:f2} /// </summary> /// <param name="s"></param> /// <returns></returns> public string ReplaceTag(ObjectPoint op, string s) { while (true) { int i1 = s.IndexOf('{'); int i2 = s.IndexOf('}'); if (i2 > i1) { string s1 = s.Substring(i1 + 1, i2 - i1 - 1); int i = s1.IndexOf(':'); string s3 = ""; string s2 = s1; if (i > 0) { s2 = s1.Substring(0, i); s3 = s1.Substring(i + 1); } FormulaChart BackChart = Manager.Canvas.Chart; IDataProvider idp = BackChart.DataProvider; double[] dd = idp["DATE"]; int Bar = BackChart.DateToIndex(op.X); if (string.Compare(s2, "D") == 0) { if (s3 == "") { s3 = "yyyy-MM-dd"; } s2 = BackChart.IndexToDate(Bar).ToString(s3); } else { FormulaData fd = null; try { i = int.Parse(s2); if (i < Area.FormulaDataArray.Count) { dd = Area.FormulaDataArray[i].Data; } } catch { fd = Area.FormulaDataArray[s2]; if (object.Equals(fd, null)) { foreach (FormulaData f in Area.FormulaDataArray) { dd = f[s2]; if (dd != null) { break; } } } else { dd = fd.Data; } } if (dd != null && Bar < dd.Length) { if (s3 == "") { s3 = "f2"; } s2 = dd[Bar].ToString(s3); } else { s2 = "NaN"; } } s = s.Substring(0, i1) + s2 + s.Substring(i2 + 1); } else { break; } } return(s); }
//Random Rnd = new Random(); private void BindChart() { string Quote1 = tbQuote1.Text; string Quote2 = tbQuote2.Text; FormulaChart fc = new FormulaChart(); // Compare two closing data fc.AddArea("CmpIndi(" + tbQuote2.Text + ",CLOSE)", 2); // Compare two RSI(14) of two stocks fc.AddArea("CmpIndi(" + tbQuote2.Text + ",RSI(14))"); fc.AddArea("SlowSTO(14,3,3)", tbQuote1.Text, 1); fc.AddArea("SlowSTO(14,3,3)", tbQuote2.Text, 1); // Set skin fc.SetSkin(FormulaSkin.RedWhite); DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager); //MemoryStream ms = new MemoryStream(); try { // Bind data fc.DataProvider = dmb[Quote1]; // Add another AxisY to the main panel FormulaAxisY fay = fc[0].AddNewAxisY(AxisPos.Left, true, 1); // Bind another stock to the second AxisY //FormulaData fd = fc[0][1]; //fd.Transform = Transform.Normal; //fd.AxisYIndex = 1; fc.ShowCursorLabel = true; DataTable dt = new DataTable(); dt.Columns.Add("Symbol"); dt.Columns.Add("Name"); dt.Columns.Add("Last"); dt.Columns.Add("Date"); dt.Columns.Add("Open"); dt.Columns.Add("High"); dt.Columns.Add("Low"); dt.Columns.Add("Close"); dt.Columns.Add("Volume"); dt.Columns.Add("Change"); tblChart.Visible = true; int Width = (int)ibChart.Width.Value; if (Width <= 0) { Width = 780; } int Height = (int)ibChart.Height.Value; if (Height <= 0) { Height = 850; } ibChart.ImageUrl = "~/ImageFromCache.aspx?CacheId=" + fc.SaveToImageStream(Width, Height, ImageFormat.Png, Tools.ToIntDef(Request.Form[ibChart.ID + ".x"], 0), Tools.ToIntDef(Request.Form[ibChart.ID + ".y"], 0)); AddDataToTable(dt, fc.DataProvider, fc.CursorPos); IDataProvider idp2 = dmb[Quote2]; idp2.BaseDataProvider = fc.DataProvider; AddDataToTable(dt, idp2, fc.CursorPos); dgStockData.DataSource = dt; dgStockData.DataBind(); } catch (Exception ex) { lMsg.Text = ex.Message; } }
public void SetSnapLine(int PointIndex, bool OpenStart, bool OpenEnd) { FormulaChart BackChart = Manager.Canvas.Chart; if (BackChart == null) { return; } IDataProvider idp = BackChart.DataProvider; if (idp == null) { return; } if (PointIndex < ControlPoints.Length) { int Bar = BackChart.DateToIndex(ControlPoints[PointIndex].X); int Bar1 = BackChart.DateToIndex(BackChart.StartTime); int Bar2 = BackChart.DateToIndex(BackChart.EndTime); if (!OpenStart) { Bar1 = Bar; } if (!OpenEnd) { Bar2 = Bar; } FormulaData fd = Area.FormulaDataArray[0]; double[][] dd = new double[][] { fd["L"], fd["H"] }; if (dd[0] == null) { dd[0] = fd.Data; } if (dd[1] == null) { dd[1] = fd.Data; } if (Bar1 >= dd[0].Length) { Bar1 = dd[0].Length - 1; } if (Bar2 >= dd[0].Length) { Bar2 = dd[0].Length - 1; } if (Bar1 >= 0 && Bar2 >= 0) { double A = float.MaxValue; double B = ControlPoints[PointIndex].Y; double C = B; for (int i = Bar1; i <= Bar2; i++) { for (int j = 0; j < dd.Length; j++) { double k = Math.Abs(dd[j][i] - B); if (k < A) { A = k; C = dd[j][i]; } } } double M = (Area.AxisY.MaxY - Area.AxisY.MinY); if (A / M < snapPercent) { ControlPoints[PointIndex].Y = C; } } } }
/// <summary> /// Make control points snap to price /// </summary> /// <param name="snap"></param> public void SetSnapPrice(SnapType snap) { if (snap == SnapType.Price) { FormulaChart BackChart = Manager.Canvas.Chart; IDataProvider idp = BackChart.DataProvider; int i1 = 0; int i2 = 1; if (ControlPointNum == 1) { i2 = 0; } int Bar1 = BackChart.DateToIndex(ControlPoints[i1].X); int Bar2 = BackChart.DateToIndex(ControlPoints[i2].X); if (Bar1 > Bar2) { Swap(ref Bar1, ref Bar2); } FormulaData fd = Area.FormulaDataArray[0]; double[] dd1 = fd["L"]; if (dd1 == null) { dd1 = fd.Data; } double[] dd2 = fd["H"]; if (dd2 == null) { dd2 = fd.Data; } if (Bar1 >= dd1.Length) { Bar1 = dd1.Length - 1; } if (Bar2 >= dd1.Length) { Bar2 = dd1.Length - 1; } float A = float.MaxValue; float B = float.MinValue; for (int i = Bar1; i <= Bar2; i++) { A = Math.Min(A, (float)dd1[i]); B = Math.Max(B, (float)dd2[i]); } if (ControlPointNum > 1) { if (ControlPoints[0].Y < ControlPoints[1].Y) { Swap(ref A, ref B); } ControlPoints[0].Y = B; ControlPoints[1].Y = A; } else { if (ControlPoints[0].Y < A) { ControlPoints[0].Y = A; } else if (ControlPoints[0].Y > B) { ControlPoints[0].Y = B; } } } }
public string ReplaceTag(ObjectPoint op, string s) { int num; Label_0005: num = s.IndexOf('{'); int index = s.IndexOf('}'); if (index <= num) { return(s); } string str = s.Substring(num + 1, (index - num) - 1); int length = str.IndexOf(':'); string format = ""; string strA = str; if (length > 0) { strA = str.Substring(0, length); format = str.Substring(length + 1); } double[] dd = this.Manager.Canvas.BackChart.DataProvider["DATE"]; int num4 = FormulaChart.FindIndex(dd, op.X); if (num4 >= dd.Length) { return(s); } if (string.Compare(strA, "D") == 0) { if (format == "") { format = "yyyy-MM-dd"; } strA = DateTime.FromOADate(dd[num4]).ToString(format); goto Label_01BA; } FormulaData objA = null; try { length = int.Parse(strA); if (length < this.Area.FormulaDataArray.Count) { dd = this.Area.FormulaDataArray[length].Data; } } catch { objA = this.Area.FormulaDataArray[strA]; if (object.Equals(objA, null)) { foreach (FormulaData data2 in this.Area.FormulaDataArray) { dd = data2[strA]; if (dd != null) { goto Label_018F; } } } else { dd = objA.Data; } } Label_018F: if (dd != null) { if (format == "") { format = "f2"; } strA = dd[num4].ToString(format); } Label_01BA: s = s.Substring(0, num) + strA + s.Substring(index + 1); goto Label_0005; }
static public FormulaChart ShowObjectOnChart(TextReader reader, DataManagerBase dmb, bool ObjectLayout) { FormulaChart fc = FormulaChart.CreateChart(null); return(ShowObjectOnChart(fc, reader, dmb, ObjectLayout)); }
public WebCanvas(FormulaChart fc) { this.backChart = fc; }