/// <summary> /// отрисовать осноной чарт /// </summary> public void PaintPrimeChart() { if (string.IsNullOrEmpty(SecurityToInter)) { return; } if (_chartHost == null || _rectChart == null) { return; } _chart.Clear(); _chart.StartPaint(_chartHost, _rectChart); MinerCandleSeries series = CandleSeries.Find(ser => ser.Security.Name == SecurityToInter); if (series == null) { return; } _chart.SetCandles(series.Candles); if (_volume == null) { _volume = new Volume("Volume", false); _volume = (Volume)_chart.CreateIndicator(_volume, "VolumeArea"); } _volume.Process(series.Candles); }
/// <summary> /// из коннектора пришли новые данные /// </summary> private void BotTabIndex_NewCandlesChangeEvent(List <Candle> candles) { for (int i = 0; i < Tabs.Count; i++) { List <Candle> myCandles = Tabs[i].Candles(true); if (myCandles == null || myCandles.Count < 10) { return; } } DateTime time = Tabs[0].Candles(true)[Tabs[0].Candles(true).Count - 1].TimeStart; for (int i = 0; i < Tabs.Count; i++) { List <Candle> myCandles = Tabs[i].Candles(true); if (myCandles[myCandles.Count - 1].TimeStart != time) { return; } } // цикл для сбоа всех свечей в один массив if (string.IsNullOrWhiteSpace(ConvertedFormula)) { return; } string nameArray = Calculate(ConvertedFormula); if (_valuesToFormula != null && !string.IsNullOrWhiteSpace(nameArray)) { ValueForm val = _valuesToFormula.Find(v => v.Name == nameArray); if (val != null) { Candles = val.ValueCandles; for (int i = 1; i < Candles.Count; i++) { if (Candles[i].TimeStart == Candles[i - 1].TimeStart) { Candles.RemoveAt(i); i--; } } _chartMaster.SetCandles(Candles); if (SpreadChangeEvent != null) { SpreadChangeEvent(Candles); } } } }