Beispiel #1
0
 public void SendIndicatorsUpdated()
 {
     UpdateIndicatorEvent?.Invoke();
 }
Beispiel #2
0
        public void ProcessIndicator(IIndicator indicator)
        {
            if (isPaint == false || can_draw == false)
            {
                return;
            }

            if (!series.Exists(x => x.AreaName == indicator.NameArea))
            {
                return;
            }

            OxyArea area = all_areas.Find(x => (string)x.Tag == indicator.NameArea);

            if (indicator.ValuesToChart != null)
            {
                if (indicator.PaintOn == false)
                {
                    UpdateIndicatorEvent?.Invoke(); // тут может быть косяк так как некоторые индюки нужно прорисовывать даже на false
                    return;
                }

                List <List <decimal> > val_list = indicator.ValuesToChart;
                List <Color>           colors   = indicator.Colors;
                string name = indicator.Name;


                Parallel.For(0, val_list.Count, i =>
                {
                    if (val_list[i] == null || val_list[i].Count == 0)
                    {
                        return;
                    }

                    var seria = series.Find(x => x.SeriaName == name + i.ToString());

                    if (seria.OxyColor != null)
                    {
                        seria.OxyColor = OxyColor.FromArgb(colors[i].A, colors[i].R, colors[i].G, colors[i].B);
                    }

                    seria.Count = val_list.Count;

                    try
                    {
                        if (area != null)
                        {
                            area.BuildIndicatorSeries(seria, val_list[i], time_frame_span);
                        }
                    }
                    catch { return; }
                });



                UpdateIndicatorEvent?.Invoke();

                return;
            }

            Aindicator ind = (Aindicator)indicator;
            List <IndicatorDataSeries> indi_series = ind.DataSeries;


            Parallel.For(0, indi_series.Count, i =>
            {
                if (indi_series[i].IsPaint == false)
                {
                    return;
                }

                var seria = series.Find(x => x.SeriaName == indi_series[i].NameSeries);

                seria.OxyColor = OxyColor.FromArgb(indi_series[i].Color.A, indi_series[i].Color.R, indi_series[i].Color.G, indi_series[i].Color.B);

                seria.Count = indi_series.Count;
                try
                {
                    if (area != null)
                    {
                        mediator.BuildIndicatorSeries(area, seria, indi_series[i].Values, time_frame_span);
                    }
                }
                catch { return; }
            });


            UpdateIndicatorEvent?.Invoke();
        }