public void SendIndicatorsUpdated() { UpdateIndicatorEvent?.Invoke(); }
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(); }