Пример #1
0
 internal Stock(string name, SeriesTypeEnum seriesType, SeriesTypeOHLC seriesTypeOHLC, ChartPanel chartPanel)
     : base(name, seriesType, seriesTypeOHLC, chartPanel)
 {
     Init();
     _chartPanel._chartX.ChartReseted += ChartX_OnChartReseted;
     _priceStyleStock = null;
 }
        private void ReadSeries(XmlNode xRoot)
        {
            XmlNode xmlSeries = xRoot.SelectSingleNode("SeriesCollection");

            if (xmlSeries == null)
            {
                return;
            }
            int useablePanelsCount = UseablePanelsCount;

            foreach (XmlNode node in xmlSeries.ChildNodes)
            {
                if (node.Name != "Series")
                {
                    continue;
                }

                int panelIndex = ConvertFromXmlEx("PanelIndex", node, -1);
                if (panelIndex == -1)
                {
                    continue;
                }
                if (panelIndex >= useablePanelsCount)
                {
                    panelIndex = 0;
                }

                ChartPanel chartPanel = GetPanelByIndex(panelIndex);
                string     seriesName = ConvertFromXmlEx("Name", node, string.Empty);
                if (seriesName.Length == 0)
                {
                    continue;
                }
                SeriesTypeEnum seriesTypeSeries = (SeriesTypeEnum)Enum.Parse(typeof(SeriesTypeEnum), ConvertFromXmlEx("SeriesTypeSeries", node, SeriesTypeEnum.stUnknown.ToString()));
                SeriesTypeOHLC ohlc             = (SeriesTypeOHLC)Enum.Parse(typeof(SeriesTypeOHLC), ConvertFromXmlEx("OHLCType", node, string.Empty));
                SeriesTypeEnum seriesType       = (SeriesTypeEnum)Enum.Parse(typeof(SeriesTypeEnum), ConvertFromXmlEx("SeriesType", node, string.Empty));
                Series         series           = chartPanel.CreateSeries(seriesName, ohlc, seriesTypeSeries != SeriesTypeEnum.stUnknown ? seriesTypeSeries : seriesType);

                if (series == null)
                {
                    continue;
                }

                series.SeriesType = seriesType;
                string upColor   = ConvertFromXmlEx("UpColor", node, string.Empty);
                string downColor = ConvertFromXmlEx("DownColor", node, string.Empty);
                series.StrokeThickness = ConvertFromXmlEx("StrokeThicknes", node, 1.0);
                series.StrokeColor     = Utils.StringToColor(ConvertFromXmlEx("StrokeColor", node, string.Empty));
                series._selectable     = ConvertFromXmlEx("Selectable", node, false);
                series.Visible         = ConvertFromXmlEx("Visible", node, true);
                series.StrokePattern   = (LinePattern)Enum.Parse(typeof(LinePattern), ConvertFromXmlEx("StrokePattern", node, "Solid"));
                series.UpColor         = upColor.Length > 0 ? Utils.StringToColor(upColor) : (Color?)null;
                series.DownColor       = downColor.Length > 0 ? Utils.StringToColor(downColor) : (Color?)null;
                series.SeriesIndex     = ConvertFromXmlEx("SeriesIndex", node, 0);

                _dataManager.AddSeries(series.Name, series.OHLCType);
                _dataManager.BindSeries(series);
            }
        }
Пример #3
0
 public SeriesModelBase(int startIndex, int endIndex, bool isOscillator, SeriesTypeEnum seriesType, Series series)
 {
     StartIndex   = startIndex;
     EndIndex     = endIndex;
     IsOscillator = isOscillator;
     SeriesType   = seriesType;
     Series       = series;
 }
Пример #4
0
        internal Series(string name, SeriesTypeEnum seriesType, SeriesTypeOHLC seriesTypeOHLC, ChartPanel chartPanel)
        {
            _name           = name;
            _seriesType     = seriesType;
            _chartPanel     = chartPanel;
            _seriesTypeOHLC = seriesTypeOHLC;

            ShowInHeatMap = false;

            UseEnhancedColoring   = false;
            WickUpStroke          = new SolidColorBrush(Color.FromArgb(0xFF, 0x00, 0xFF, 0x00)); // Lime
            WickDownStroke        = new SolidColorBrush(Colors.Red);
            WickStrokeThickness   = 1.0;
            CandleUpFill          = new SolidColorBrush(Color.FromArgb(0xFF, 0x00, 0xFF, 0x00)); // Lime
            CandleDownFill        = new SolidColorBrush(Colors.Red);
            CandleUpStroke        = null;
            CandleDownStroke      = null;
            CandleStrokeThickness = 0;
        }
Пример #5
0
 public static TestSeries Create(SeriesTypeEnum seriesType, ObservableCollection <TestSeriesData> data)
 => new TestSeries(seriesType, data);
Пример #6
0
 public TestSeries(SeriesTypeEnum seriesType, ObservableCollection <TestSeriesData> data)
 {
     SeriesType = seriesType;
     Data       = data;
 }
Пример #7
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="name">Unique series name. </param>
 /// <param name="seriesType">Series Type</param>
 /// <param name="seriesTypeOHLC">Series OHLC type</param>
 /// <param name="chartPanel">Reference to a chart panel where it will be placed.</param>
 public Standard(string name, SeriesTypeEnum seriesType, SeriesTypeOHLC seriesTypeOHLC,
                 ChartPanel chartPanel)
     : base(name, seriesType, seriesTypeOHLC, chartPanel)
 {
     Init();
 }
Пример #8
0
        internal override void Paint(object drawingContext)
        {
            //if (_painted) return;

            Style ps = null;

            if (_priceStyleType != _chartPanel._chartX._priceStyle || _seriesTypeType != _seriesType)
            {
                if (_chartPanel._chartX._priceStyle != PriceStyleEnum.psStandard)
                {
                    switch (_chartPanel._chartX._priceStyle)
                    {
                    case PriceStyleEnum.psKagi:
                        ps = new Kagi(this);
                        break;

                    case PriceStyleEnum.psCandleVolume:
                    case PriceStyleEnum.psEquiVolume:
                    case PriceStyleEnum.psEquiVolumeShadow:
                        ps = new EquiVolume(this);
                        break;

                    case PriceStyleEnum.psPointAndFigure:
                        ps = new PointAndFigure(this);
                        break;

                    case PriceStyleEnum.psRenko:
                        ps = new Renko(this);
                        break;

                    case PriceStyleEnum.psThreeLineBreak:
                        ps = new ThreeLineBreak(this);
                        break;

                    case PriceStyleEnum.psHeikinAshi:
                        ps = new HeikinAshi(this);
                        break;
                    }
                }
                else
                {
                    switch (_seriesType)
                    {
                    case SeriesTypeEnum.stCandleChart:
                        ps = new Candles(this);
                        break;

                    case SeriesTypeEnum.stStockBarChartHLC:
                    case SeriesTypeEnum.stStockBarChart:
                        ps = new PriceStyles.Stock(this);
                        break;

                    case SeriesTypeEnum.stLineChart:
                        ps = new Linear(this);
                        break;
                    }
                }
                if (_priceStyle != null)
                {
                    _priceStyle.RemovePaint();
                }
            }

            if (_darvasBoxes != null)
            {
                _darvasBoxes.RemovePaint();
            }

            if (_chartPanel._chartX._priceStyle == PriceStyleEnum.psStandard || _chartPanel._chartX._priceStyle == PriceStyleEnum.psHeikinAshi)
            {
                if (_darvasBoxes == null)
                {
                    _darvasBoxes = new DarvasBoxes(this);
                }

                _darvasBoxes.SetSeriesStock(this);
                if (_chartPanel._chartX._darwasBoxes)
                {
                    _darvasBoxes.Paint();
                }
            }

            if (_priceStyle != null || ps != null)
            {
                (ps ?? _priceStyle).SetStockSeries(this);
                Style psToPaint = ps ?? _priceStyle;
                bool  res;
                if (psToPaint is Candles && drawingContext != null)
                {
                    res = psToPaint.Paint(drawingContext);
                }
                else
                {
                    res = psToPaint.Paint();
                }
                //if (!(ps ?? _priceStyle).Paint()) return;
                if (!res)
                {
                    return;
                }
            }

            if (Selected)
            {
                ShowSelection();
            }

            if (ps == null)
            {
                return;
            }

            _priceStyle     = ps;
            _priceStyleType = _chartPanel._chartX._priceStyle;
            _seriesTypeType = _seriesType;
        }
Пример #9
0
 public SeriesStandardModel(int startIndex, int endIndex, bool isOscillator, SeriesTypeEnum seriesType,
                            Series series, bool volumeUpDown) :
     base(startIndex, endIndex, isOscillator, seriesType, series)
 {
     VolumeUpDown = volumeUpDown;
 }
Пример #10
0
        public void ApplyPriceStyle(string tag, int size = 1)
        {
            PriceStyleTag = tag;

            if (_stockChartX.RecordCount > 0)
            {
                PriceStyleEnum priceStyle = PriceStyleEnum.psStandard;
                SeriesTypeEnum seriesType = SeriesTypeEnum.stCandleChart;

                switch (tag)
                {
                case "bar":
                    seriesType = SeriesTypeEnum.stStockBarChart;
                    break;

                case "line":
                    seriesType = SeriesTypeEnum.stLineChart;
                    break;

                case "standard":
                    priceStyle = PriceStyleEnum.psStandard;
                    break;

                case "kagi":
                    priceStyle = PriceStyleEnum.psKagi;
                    _stockChartX.SetPriceStyleParam(0, 0);     //Reversal size
                    _stockChartX.SetPriceStyleParam(1, (double)ChartDataType.Points);
                    break;

                case "equivolume":
                    priceStyle = PriceStyleEnum.psEquiVolume;
                    break;

                case "candlevolume":
                    priceStyle = PriceStyleEnum.psCandleVolume;
                    break;

                case "equivolumeshadow":
                    priceStyle = PriceStyleEnum.psEquiVolumeShadow;
                    break;

                case "pointandfigure":
                    priceStyle = PriceStyleEnum.psPointAndFigure;
                    _stockChartX.SetPriceStyleParam(0, 0);     //Allow StockChartX to figure the box size
                    _stockChartX.SetPriceStyleParam(1, 3);     //Reversal size
                    break;

                case "renko":
                    priceStyle = PriceStyleEnum.psRenko;
                    _stockChartX.SetPriceStyleParam(0, 1);     //Box size
                    break;

                case "threelinebreak":
                    priceStyle = PriceStyleEnum.psThreeLineBreak;
                    _stockChartX.SetPriceStyleParam(0, 3);     //Three line break (could be 1 to 50 line break)
                    break;

                case "heikinashi":
                    priceStyle = PriceStyleEnum.psHeikinAshi;
                    break;
                }

                if (OHLCSeries != null && OHLCSeries.Length > 3)
                {
                    OHLCSeries[0].SeriesType = seriesType;
                    OHLCSeries[1].SeriesType = seriesType;
                    OHLCSeries[2].SeriesType = seriesType;
                    OHLCSeries[3].SeriesType = seriesType;
                }
                _stockChartX.PriceStyle = priceStyle;
                SetLinesSize(size);
                _stockChartX.Update();
            }
        }