Exemple #1
0
        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)");
        }
Exemple #2
0
        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) + ">";
        }
Exemple #3
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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        static public ObjectManager FromChart(FormulaChart fc)
        {
            ObjectManager om = new ObjectManager(new WebCanvas(fc));

            fc.NativePaint += new NativePaintHandler(om.ObjectManager_DirectPaint);
            return(om);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
 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;
             }
         }
     }
 }
Exemple #9
0
        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();
            }
        }
Exemple #10
0
        /// <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);
        }
Exemple #11
0
 public static void ShowObjectOnChart(FormulaChart fc, string FileName)
 {
     if (File.Exists(FileName))
     {
         using (TextReader reader = new StreamReader(FileName))
         {
             ShowObjectOnChart(fc, reader);
         }
     }
 }
Exemple #12
0
        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);
        }
Exemple #13
0
        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)");
        }
Exemple #15
0
 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));
     }
 }
Exemple #17
0
 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);
            }
        }
Exemple #19
0
        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);
        }
Exemple #21
0
        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;
        }
Exemple #22
0
        /// <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;
        }
Exemple #23
0
        static public FormulaChart ShowObjectOnChart(string Symbol, string FileName, DataManagerBase dmb, bool ObjectLayout)
        {
            FormulaChart fc = FormulaChart.CreateChart(null);

            return(ShowObjectOnChart(fc, Symbol, FileName, dmb, ObjectLayout));
        }
Exemple #24
0
        /// <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);
        }
Exemple #25
0
        //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;
            }
        }
Exemple #26
0
        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;
                    }
                }
            }
        }
Exemple #27
0
        /// <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;
                    }
                }
            }
        }
Exemple #28
0
        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;
        }
Exemple #29
0
        static public FormulaChart ShowObjectOnChart(TextReader reader, DataManagerBase dmb, bool ObjectLayout)
        {
            FormulaChart fc = FormulaChart.CreateChart(null);

            return(ShowObjectOnChart(fc, reader, dmb, ObjectLayout));
        }
Exemple #30
0
 public WebCanvas(FormulaChart fc)
 {
     this.backChart = fc;
 }