/// <summary> /// Индикатор изменился. Надо перерисовать /// </summary> /// <param name="indicator">индикатор</param> private void indicator_NeadToReloadEvent(IIndicatorCandle indicator) { try { List <Candle> candles = _myCandles; if (candles != null) { indicator.Process(candles); } ChartCandle.RePaintIndicator(indicator); } catch (Exception error) { SendErrorMessage(error); } }
/// <summary> /// Удалить индикатор /// </summary> /// <param name="indicator">индикатор</param> public void DeleteIndicator(IIndicatorCandle indicator) { try { ChartCandle.DeleteIndicator(indicator); indicator.Delete(); if (_indicatorsCandles.Count == 1) { _indicatorsCandles = null; } else { _indicatorsCandles.Remove(indicator); } Save(); ReloadContext(); } catch (Exception error) { SendErrorMessage(error); } }
/// <summary> /// удалить индикатор со свечного графика. Удалить область индикатора /// </summary> /// <param name="indicator">индикатор</param> public void DeleteCandleIndicator(IIndicatorCandle indicator) { _chartMaster.DeleteIndicator(indicator); }
// Индикаторы /// <summary> /// создать индикатор на свечном графике. Начать его прорисовку на графике. Прогрузить его и подписать на обновление. /// </summary> /// <param name="indicator">индикатор</param> /// <param name="nameArea">название области на которую он будет помещён. Главная по умолчанию "Prime"</param> /// <returns></returns> public IIndicatorCandle CreateCandleIndicator(IIndicatorCandle indicator, string nameArea) { return(_chartMaster.CreateIndicator(indicator, nameArea)); }
/// <summary> /// кнопка принять /// </summary> private void ButtonAccept_Click(object sender, RoutedEventArgs e) { string areaName = _gridViewAreas.SelectedCells[0].Value.ToString(); if (areaName == "NewArea") { for (int i = 0; i < 30; i++) { if (_chartMaster.AreaIsCreate("NewArea" + i) == false) { areaName = "NewArea" + i; break; } } } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Trades") { _chartMaster.CreateTickChart(); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "KalmanFilter") // сюда добавить новый индикатор чтоб он стал доступен для выбора { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "KalmanFilter" + i) == false) { name = "KalmanFilter" + i; break; } } IndicatorCandle = new KalmanFilter(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Moving Average") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Sma" + i) == false) { name = "Sma" + i; break; } } IndicatorCandle = new MovingAverage(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Volume") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Volume" + i) == false) { name = "Volume" + i; break; } } IndicatorCandle = new Volume(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Price Channel") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Price Channel" + i) == false) { name = "Price Channel" + i; break; } } IndicatorCandle = new PriceChannel(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Bollinger") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Bollinger" + i) == false) { name = "Bollinger" + i; break; } } IndicatorCandle = new Bollinger(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "BFMFI") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "BFMFI" + i) == false) { name = "BFMFI" + i; break; } } IndicatorCandle = new BfMfi(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "BullsPower") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "BullsPower" + i) == false) { name = "BullsPower" + i; break; } } IndicatorCandle = new BullsPower(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "CMO") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "CMO" + i) == false) { name = "CMO" + i; break; } } IndicatorCandle = new Cmo(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "BearsPower") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "BearsPower" + i) == false) { name = "BeasPower" + i; break; } } IndicatorCandle = new BearsPower(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "StochasticOscillator") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "StochasticOscillator" + i) == false) { name = "StochasticOscillator" + i; break; } } IndicatorCandle = new StochasticOscillator(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "RSI") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "RSI" + i) == false) { name = "RSI" + i; break; } } IndicatorCandle = new Rsi(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "ROC") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "ROC" + i) == false) { name = "ROC" + i; break; } } IndicatorCandle = new Roc(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "RVI") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "RVI" + i) == false) { name = "RVI" + i; break; } } IndicatorCandle = new Rvi(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Alligator") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Alligator" + i) == false) { name = "Alligator" + i; break; } } IndicatorCandle = new Alligator(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "AO") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "AO" + i) == false) { name = "AO" + i; break; } } IndicatorCandle = new AwesomeOscillator(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "AccumulationDistribution") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "AccumulationDistribution" + i) == false) { name = "AccumulationDistribution" + i; break; } } IndicatorCandle = new AccumulationDistribution(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Force Index") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Force Index" + i) == false) { name = "Force Index" + i; break; } } IndicatorCandle = new ForceIndex(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "OnBalanceVolume") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "OnBalanceVolume" + i) == false) { name = "OnBalanceVolume" + i; break; } } IndicatorCandle = new OnBalanceVolume(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Fractal") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Fractal" + i) == false) { name = "Fractal" + i; break; } } IndicatorCandle = new Fractal(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "ADX") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "ADX" + i) == false) { name = "ADX" + i; break; } } IndicatorCandle = new Adx(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "ATR") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "ATR" + i) == false) { name = "ATR" + i; break; } } IndicatorCandle = new Atr(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Price Oscillator") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Price Oscillator" + i) == false) { name = "Price Oscillator" + i; break; } } IndicatorCandle = new PriceOscillator(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "MACD Histogram") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "MACD Histogram" + i) == false) { name = "MACD Histogram" + i; break; } } IndicatorCandle = new MacdHistogram(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "MACD Line") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "MACD Line" + i) == false) { name = "MACD Line" + i; break; } } IndicatorCandle = new MacdLine(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Momentum") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Momentum" + i) == false) { name = "Momentum" + i; break; } } IndicatorCandle = new Momentum(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "MoneyFlowIndex") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "MoneyFlowIndex" + i) == false) { name = "MoneyFlowIndex" + i; break; } } IndicatorCandle = new MoneyFlowIndex(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Envelops") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Envelops" + i) == false) { name = "Envelops" + i; break; } } IndicatorCandle = new Envelops(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Efficiency Ratio") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "EfficiencyRatio" + i) == false) { name = "EfficiencyRatio" + i; break; } } IndicatorCandle = new EfficiencyRatio(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Adaptive Look Back") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Adaptive Look Back" + i) == false) { name = "Adaptive Look Back" + i; break; } } IndicatorCandle = new AdaptiveLookBack(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "IvashovRange") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "IvashovRange" + i) == false) { name = "IvashovRange" + i; break; } } IndicatorCandle = new IvashovRange(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Volume Oscillator") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Volume Oscillator" + i) == false) { name = "Volume Oscillator" + i; break; } } IndicatorCandle = new VolumeOscillator(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Parabolic SAR") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Parabolic SAR" + i) == false) { name = "Parabolic SAR" + i; break; } } IndicatorCandle = new ParabolicSaR(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "CCI") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "CCI" + i) == false) { name = "CCI" + i; break; } } IndicatorCandle = new Cci(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Standard Deviation") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Standard Deviation" + i) == false) { name = "Standard Deviation" + i; break; } } IndicatorCandle = new StandardDeviation(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "AC") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "AC" + i) == false) { name = "AC" + i; break; } } IndicatorCandle = new Ac(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "VerticalHorizontalFilter") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "VerticalHorizontalFilter" + i) == false) { name = "VerticalHorizontalFilter" + i; break; } } IndicatorCandle = new VerticalHorizontalFilter(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "WilliamsRange") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "WilliamsRange" + i) == false) { name = "WilliamsRange" + i; break; } } IndicatorCandle = new WilliamsRange(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Trix") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Trix" + i) == false) { name = "Trix" + i; break; } } IndicatorCandle = new Trix(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Ichimoku") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Ichimoku" + i) == false) { name = "Ichimoku" + i; break; } } IndicatorCandle = new Ichimoku(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "TradeThread") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "TradeThread" + i) == false) { name = "TradeThread" + i; break; } } IndicatorCandle = new TradeThread(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Pivot") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "Pivot" + i) == false) { name = "Pivot" + i; break; } } IndicatorCandle = new Pivot(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } if (_gridViewIndicators.SelectedCells[0].Value.ToString() == "Pivot Points") { string name = ""; for (int i = 0; i < 30; i++) { if (_chartMaster.IndicatorIsCreate(_chartMaster.Name + "PivotPoints" + i) == false) { name = "PivotPoints" + i; break; } } IndicatorCandle = new PivotPoints(_chartMaster.Name + name, true); _chartMaster.CreateIndicator(IndicatorCandle, areaName); } Close(); if (IndicatorCandle != null) { IndicatorCandle.ShowDialog(); } }
/// <summary> /// создать новый индикатор. Если уже есть с таким именем, возвращается имеющийся /// </summary> /// <param name="indicator">индикатор, который нужно интегрировать в чарт</param> /// <param name="nameArea">имя области, на которой следует прорисовать индикатор</param> /// <returns></returns> public IIndicatorCandle CreateIndicator(IIndicatorCandle indicator, string nameArea) { try { indicator.NameArea = nameArea; if (_indicatorsCandles != null) { // проверяем, есть ли такой индикатор в коллекции for (int i = 0; i < _indicatorsCandles.Count; i++) { if (_indicatorsCandles[i].Name == indicator.Name) { return(_indicatorsCandles[i]); } } } bool inNewArea = true; if (ChartCandle.GetChartArea(nameArea) != null) { inNewArea = false; } List <List <decimal> > values = indicator.ValuesToChart; for (int i = 0; i < values.Count; i++) { if (inNewArea == false) { indicator.NameSeries = ChartCandle.CreateSeries(ChartCandle.GetChartArea(nameArea), indicator.TypeIndicator, indicator.Name + i); } else { ChartArea area = ChartCandle.CreateArea(nameArea, 15); indicator.NameSeries = ChartCandle.CreateSeries(area, indicator.TypeIndicator, indicator.Name + i); } } if (_indicatorsCandles == null) { _indicatorsCandles = new List <IIndicatorCandle>(); _indicatorsCandles.Add(indicator); } else { _indicatorsCandles.Add(indicator); } Save(); ReloadContext(); indicator.NeadToReloadEvent += indicator_NeadToReloadEvent; indicator_NeadToReloadEvent(indicator); return(indicator); } catch (Exception error) { SendErrorMessage(error); return(null); } }