public void AccumulationDistribution() { var now = new LocalDateTime(); IList <Tick> ticks = new List <Tick>(); ticks.Add(GenerateTick.From(now, 0d, 10d, 12d, 8d, 0d, 200d, 0)); //2-2 * 200 / 4 ticks.Add(GenerateTick.From(now, 0d, 8d, 10d, 7d, 0d, 100d, 0)); //1-2 *100 / 3 ticks.Add(GenerateTick.From(now, 0d, 9d, 15d, 6d, 0d, 300d, 0)); //3-6 *300 /9 ticks.Add(GenerateTick.From(now, 0d, 20d, 40d, 5d, 0d, 50d, 0)); //15-20 *50 / 35 ticks.Add(GenerateTick.From(now, 0d, 30d, 30d, 3d, 0d, 600d, 0)); //27-0 *600 /27 TimeSeries series = GenerateTimeSeries.From(ticks); var ac = new AccumulationDistributionIndicator(series); TaTestsUtils.AssertDecimalEquals(ac.GetValue(0), 0); TaTestsUtils.AssertDecimalEquals(ac.GetValue(1), -100d / 3); TaTestsUtils.AssertDecimalEquals(ac.GetValue(2), -100d - (100d / 3)); TaTestsUtils.AssertDecimalEquals(ac.GetValue(3), (-250d / 35) + (-100d - (100d / 3))); TaTestsUtils.AssertDecimalEquals(ac.GetValue(4), 600d + ((-250d / 35) + (-100d - (100d / 3)))); }
public void accumulationDistribution() { DateTime now = DateTime.Now; List <IBar> bars = new List <IBar>(); bars.Add(new MockBar(now, 0M, 10, 12, 8, 0, 200, 0)); //2-2 * 200 / 4 bars.Add(new MockBar(now, 0M, 8, 10, 7, 0, 100, 0)); //1-2 *100 / 3 bars.Add(new MockBar(now, 0M, 9, 15, 6, 0, 300, 0)); //3-6 *300 /9 bars.Add(new MockBar(now, 0M, 20, 40, 5, 0, 50, 0)); //15-20 *50 / 35 bars.Add(new MockBar(now, 0M, 30, 30, 3, 0, 600, 0)); //27-0 *600 /27 ITimeSeries series = new MockTimeSeries(bars); AccumulationDistributionIndicator ac = new AccumulationDistributionIndicator(series); Assert.AreEqual(ac.GetValue(0), 0); Assert.AreEqual(ac.GetValue(1), -33.333333333333333333333333330M); Assert.AreEqual(ac.GetValue(2), -133.33333333333333333333333332M); Assert.AreEqual(ac.GetValue(3), -140.47619047619047619047619046M); Assert.AreEqual(ac.GetValue(4), 459.52380952380952380952380954M); }
void labelDisplayMode_SelectedIndexChanged(object sender, EventArgs e) { animationPickerLabel.Text = animationPicker.Items[animationPicker.SelectedIndex]; NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; if (Device.RuntimePlatform == Device.UWP) { numericalAxis.LabelStyle.LabelFormat = "'$'0.00"; } else { numericalAxis.LabelStyle.LabelFormat = "'$'##.##"; } switch (animationPicker.SelectedIndex) { case 0: Chart.TechnicalIndicators.RemoveAt(0); AccumulationDistributionIndicator sma = new AccumulationDistributionIndicator(); sma.SeriesName = "Series"; sma.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma); break; case 1: Chart.TechnicalIndicators.RemoveAt(0); AverageTrueIndicator sma1 = new AverageTrueIndicator(); sma1.SeriesName = "Series"; sma1.Period = 14; sma1.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma1); break; case 2: Chart.TechnicalIndicators.RemoveAt(0); ExponentialMovingAverageIndicator sma2 = new ExponentialMovingAverageIndicator(); sma2.SeriesName = "Series"; sma2.Period = 14; sma2.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma2); break; case 3: Chart.TechnicalIndicators.RemoveAt(0); MomentumIndicator sma3 = new MomentumIndicator(); sma3.SeriesName = "Series"; sma3.Period = 14; sma3.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma3); break; case 4: if (Chart.TechnicalIndicators.Count > 0) { Chart.TechnicalIndicators.RemoveAt(0); } SimpleMovingAverageIndicator sma4 = new SimpleMovingAverageIndicator(); sma4.YAxis = numericalAxis; sma4.SeriesName = "Series"; sma4.Period = 14; Chart.TechnicalIndicators.Add(sma4); break; case 5: Chart.TechnicalIndicators.RemoveAt(0); RSIIndicator sma5 = new RSIIndicator(); sma5.SeriesName = "Series"; sma5.Period = 14; sma5.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma5); break; case 6: Chart.TechnicalIndicators.RemoveAt(0); TriangularMovingAverageIndicator sma6 = new TriangularMovingAverageIndicator(); sma6.SeriesName = "Series"; sma6.Period = 14; sma6.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma6); break; case 7: Chart.TechnicalIndicators.RemoveAt(0); MACDIndicator sma7 = new MACDIndicator(); sma7.ItemsSource = (Chart.BindingContext as TechnicalIndicatorViewModel).TechnicalIndicatorData; sma7.SeriesName = "Series"; sma7.LongPeriod = 10; sma7.ShortPeriod = 2; sma7.Trigger = 14; sma7.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma7); break; case 8: Chart.TechnicalIndicators.RemoveAt(0); StochasticIndicator sma8 = new StochasticIndicator(); sma8.SeriesName = "Series"; sma8.Period = 14; sma8.KPeriod = 5; sma8.DPeriod = 6; sma8.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma8); break; case 9: Chart.TechnicalIndicators.RemoveAt(0); BollingerBandIndicator sma9 = new BollingerBandIndicator(); sma9.Period = 14; sma9.SeriesName = "Series"; sma9.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma9); break; } }
private FinancialTechnicalIndicator Addindicator(string value, int rowIndex) { FinancialTechnicalIndicator indic; switch (value) { case "AccumulationDistributionIndicator": indic = new AccumulationDistributionIndicator(); break; case "AverageTrueRangeIndicator": indic = new AverageTrueRangeIndicator(); break; case "BollingerBandIndicator": indic = new BollingerBandIndicator(); break; case "ExponentialAverageIndicator": indic = new ExponentialAverageIndicator(); break; case "MACDTechnicalIndicator": indic = new MACDTechnicalIndicator(); break; case "MomentumTechnicalIndicator": indic = new MomentumTechnicalIndicator(); break; case "RSITechnicalIndicator": indic = new RSITechnicalIndicator(); break; case "SimpleAverageIndicator": indic = new SimpleAverageIndicator(); break; case "StochasticTechnicalIndicator": indic = new StochasticTechnicalIndicator(); break; case "TriangularAverageIndicator": indic = new TriangularAverageIndicator(); break; default: return(null); } var index = rowIndex == 0 ? 1 : 0; ChartSeries Series = this.ChartArea.VisibleSeries[index] as ChartSeries; indic.XBindingPath = "TimeStamp"; indic.High = "High"; indic.Low = "Low"; indic.Open = "Open"; indic.Close = "Last"; indic.Volume = "Volume"; Binding binding = new Binding(); binding.Path = new PropertyPath("ItemsSource"); binding.Source = Series; binding.Mode = BindingMode.TwoWay; indic.SetBinding(FinancialTechnicalIndicator.ItemsSourceProperty, binding); if (rowIndex == 0) { var supportAxes = this.ChartArea.VisibleSeries[1] as ISupportAxes; if (supportAxes != null) { indic.YAxis = supportAxes.ActualYAxis as RangeAxisBase; } indic.YAxis.ShowGridLines = false; SfChart.SetRow(indic.YAxis, 1); } else { indic.YAxis = this.ChartArea.SecondaryAxis; SfChart.SetRow(indic.YAxis, 0); } return(indic); }
private FinancialTechnicalIndicator Addindicator(string value, int rowIndex) { FinancialTechnicalIndicator indicator; string a = ""; object obj = a; string b = (obj as string); switch (value) { case "Accumulation Distribution": StockViewModel model = new StockViewModel(1); DataContext = model.Stocks; indicator = new AccumulationDistributionIndicator() { SignalLineColor = new SolidColorBrush(Colors.Blue) }; SfChart.Annotations.Clear(); LineAnnotation annotationAD = new LineAnnotation { FontSize = 15, Text = "High in Prices", HorizontalTextAlignment = HorizontalAlignment.Center, VerticalTextAlignment = VerticalAlignment.Top, CoordinateUnit = CoordinateUnit.Axis, X1 = 22, Y1 = 30, X2 = 26, Y2 = 40 }; LineAnnotation annotation2AD = new LineAnnotation { FontSize = 15, Text = "Decline in Prices", CoordinateUnit = CoordinateUnit.Axis, X1 = 38, Y1 = 28, X2 = 46, Y2 = 15 }; LineAnnotation annotation3AD = new LineAnnotation { FontSize = 15, Text = "Price is Trending Down", CoordinateUnit = CoordinateUnit.Axis, X1 = 0.1, Y1 = 41.5, X2 = 14, Y2 = 13 }; SfChart.Annotations.Add(annotationAD); SfChart.Annotations.Add(annotation2AD); SfChart.Annotations.Add(annotation3AD); break; case "Average True Range": StockViewModel model9 = new StockViewModel(1); DataContext = model9.Stocks; SfChart.Annotations.Clear(); indicator = new AverageTrueRangeIndicator() { SignalLineColor = new SolidColorBrush(Colors.Blue), Period = 2 }; TextAnnotation annotationAT = new TextAnnotation { Text = "Buy Signal", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 6, Y1 = 37 }; TextAnnotation annotationAT1 = new TextAnnotation { Text = "Buy Signal", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 8, Y1 = 18 }; TextAnnotation annotationAT2 = new TextAnnotation { Text = "Sell Signal", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 20, Y1 = 24 }; TextAnnotation annotationAT3 = new TextAnnotation { Text = "Sell Signal", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 27.3, Y1 = 41 }; TextAnnotation annotationAT4 = new TextAnnotation { Text = "Average True Range" + "\n" + "Trailing Stops", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 35, Y1 = 22 }; SfChart.Annotations.Add(annotationAT); SfChart.Annotations.Add(annotationAT1); SfChart.Annotations.Add(annotationAT2); SfChart.Annotations.Add(annotationAT3); SfChart.Annotations.Add(annotationAT4); break; case "Bollinger Band": StockViewModel model1 = new StockViewModel(0); DataContext = model1.Stocks; indicator = new BollingerBandIndicator() { UpperLineColor = new SolidColorBrush(Colors.Green), LowerLineColor = new SolidColorBrush(Colors.Red), SignalLineColor = new SolidColorBrush(Colors.Transparent), Period = 2 }; SfChart.Annotations.Clear(); TextAnnotation annotation = new TextAnnotation { Text = "Upper Bollinger Band", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 6, Y1 = 650 }; TextAnnotation annotation1 = new TextAnnotation { Text = "Sell Signal", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 33.7, Y1 = 660 }; TextAnnotation annotation2 = new TextAnnotation { Text = "Lower Bollinger Band", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 40, Y1 = 390 }; TextAnnotation annotation3 = new TextAnnotation { Text = "Buy Signal", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 7, Y1 = 230 }; SfChart.Annotations.Add(annotation); SfChart.Annotations.Add(annotation1); SfChart.Annotations.Add(annotation2); SfChart.Annotations.Add(annotation3); break; case "Exponential Average": StockViewModel model8 = new StockViewModel(0); DataContext = model8.Stocks; indicator = new ExponentialAverageIndicator() { SignalLineColor = new SolidColorBrush(Colors.Blue) }; SfChart.Annotations.Clear(); TextAnnotation annotationE = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 0.3, Y1 = 700 }; TextAnnotation annotationE1 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 2, Y1 = 605 }; TextAnnotation annotationE2 = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 8, Y1 = 260 }; TextAnnotation annotationE3 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 20, Y1 = 580 }; TextAnnotation annotationE4 = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 26, Y1 = 450 }; TextAnnotation annotationE5 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 35, Y1 = 660 }; TextAnnotation annotationE6 = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 40, Y1 = 460 }; TextAnnotation annotationE7 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 54, Y1 = 760 }; SfChart.Annotations.Add(annotationE); SfChart.Annotations.Add(annotationE1); SfChart.Annotations.Add(annotationE2); SfChart.Annotations.Add(annotationE3); SfChart.Annotations.Add(annotationE4); SfChart.Annotations.Add(annotationE5); SfChart.Annotations.Add(annotationE6); SfChart.Annotations.Add(annotationE7); break; case "MACD": StockViewModel model7 = new StockViewModel(2); DataContext = model7.Stocks; SfChart.Annotations.Clear(); indicator = new MACDTechnicalIndicator() { Period = 5, LongPeriod = 8, ShortPeriod = 3, SignalLineColor = new SolidColorBrush(Colors.Blue), ConvergenceLineColor = new SolidColorBrush(Colors.Green), DivergenceLineColor = new SolidColorBrush(Colors.Red) }; TextAnnotation annotationMA = new TextAnnotation { Text = "MACD" + "\n" + "Sell Signals", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 17, Y1 = 700 }; TextAnnotation annotationMA1 = new TextAnnotation { Text = "MACD" + "\n" + "Buy Signals", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 2, Y1 = 400 }; TextAnnotation annotationMA2 = new TextAnnotation { Text = "Buy", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 10, Y1 = 250 }; TextAnnotation annotationMA3 = new TextAnnotation { Text = "Sell", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 24, Y1 = 620 }; TextAnnotation annotationMA4 = new TextAnnotation { Text = "Buy", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 30, Y1 = 450 }; TextAnnotation annotationMA5 = new TextAnnotation { Text = "Sell", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 48, Y1 = 650 }; SfChart.Annotations.Add(annotationMA); SfChart.Annotations.Add(annotationMA1); SfChart.Annotations.Add(annotationMA2); SfChart.Annotations.Add(annotationMA3); SfChart.Annotations.Add(annotationMA4); SfChart.Annotations.Add(annotationMA5); break; case "Momentum": SfChart.Annotations.Clear(); StockViewModel model6 = new StockViewModel(2); DataContext = model6.Stocks; indicator = new MomentumTechnicalIndicator() { MomentumLineColor = new SolidColorBrush(Colors.Blue), Period = 4 }; LineAnnotation annotationM = new LineAnnotation { Text = "Downtrend", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 2, Y1 = 463, X2 = 12, Y2 = 245 }; TextAnnotation annotationM1 = new TextAnnotation { Text = "Buy", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 8, Y1 = 450 }; TextAnnotation annotationM2 = new TextAnnotation { Text = "Sell", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 21, Y1 = 530 }; LineAnnotation annotationM3 = new LineAnnotation { Text = "Divergence of Price" + "\n" + "& Momentum", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 36.5, Y1 = 468, X2 = 47.5, Y2 = 394 }; SfChart.Annotations.Add(annotationM); SfChart.Annotations.Add(annotationM1); SfChart.Annotations.Add(annotationM2); SfChart.Annotations.Add(annotationM3); break; case "RSI": StockViewModel model5 = new StockViewModel(2); DataContext = model5.Stocks; SfChart.Annotations.Clear(); indicator = new RSITechnicalIndicator() { SignalLineColor = new SolidColorBrush(Colors.Blue), LowerLineColor = new SolidColorBrush(Colors.Red), Period = 5, UpperLineColor = new SolidColorBrush(Colors.Green) }; TextAnnotation annotationRS = new TextAnnotation { Text = "Oversold", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 42, Y1 = 645 }; TextAnnotation annotationRS1 = new TextAnnotation { Text = "Overbought", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 0.3, Y1 = 380 }; TextAnnotation annotationRS2 = new TextAnnotation { Text = "Seller Territory" + "\n" + "(over 500)", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 10, Y1 = 600 }; TextAnnotation annotationRS3 = new TextAnnotation { Text = "Buyers Territory" + "\n" + "(below 500)", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 50, Y1 = 450 }; SfChart.Annotations.Add(annotationRS); SfChart.Annotations.Add(annotationRS1); SfChart.Annotations.Add(annotationRS2); SfChart.Annotations.Add(annotationRS3); break; case "Simple Average": StockViewModel model4 = new StockViewModel(0); DataContext = model4.Stocks; SfChart.Annotations.Clear(); indicator = new SimpleAverageIndicator() { SignalLineColor = new SolidColorBrush(Colors.Blue) }; TextAnnotation annotationSA = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 0, Y1 = 405 }; TextAnnotation annotationSA1 = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 8, Y1 = 250 }; TextAnnotation annotationSA2 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 21, Y1 = 620 }; TextAnnotation annotationSA3 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 31, Y1 = 630 }; TextAnnotation annotationSA6 = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 40, Y1 = 475 }; TextAnnotation annotationSA7 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 54, Y1 = 760 }; SfChart.Annotations.Add(annotationSA); SfChart.Annotations.Add(annotationSA1); SfChart.Annotations.Add(annotationSA2); SfChart.Annotations.Add(annotationSA3); SfChart.Annotations.Add(annotationSA6); SfChart.Annotations.Add(annotationSA7); break; case "Stochastic": SfChart.Annotations.Clear(); StockViewModel model3 = new StockViewModel(0); DataContext = model3.Stocks; indicator = new StochasticTechnicalIndicator() { SignalLineColor = new SolidColorBrush(Colors.Red), UpperLineColor = new SolidColorBrush(Colors.Green), Period = 3 }; LineAnnotation annotationS = new LineAnnotation { Text = "Lower Low", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 0.8, Y1 = 433, X2 = 9.4, Y2 = 243 }; TextAnnotation annotationS1 = new TextAnnotation { Text = "Low#1", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = -0.6, Y1 = 420 }; TextAnnotation annotationS2 = new TextAnnotation { Text = "Low#2", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 8, Y1 = 243 }; LineAnnotation annotationS4 = new LineAnnotation { Text = "Higher High", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 11.5, Y1 = 369, X2 = 22.5, Y2 = 632 }; TextAnnotation annotationS5 = new TextAnnotation { Text = "High#2", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 21, Y1 = 650 }; TextAnnotation annotationS6 = new TextAnnotation { Text = "High#1", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 10, Y1 = 370 }; LineAnnotation annotationS7 = new LineAnnotation { Text = "Higher Low", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 38, Y1 = 637, X2 = 48, Y2 = 680 }; TextAnnotation annotationS8 = new TextAnnotation { Text = "Low#3", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 37, Y1 = 670 }; TextAnnotation annotationS9 = new TextAnnotation { Text = "Low#4", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 48, Y1 = 700 }; SfChart.Annotations.Add(annotationS); SfChart.Annotations.Add(annotationS1); SfChart.Annotations.Add(annotationS2); SfChart.Annotations.Add(annotationS4); SfChart.Annotations.Add(annotationS5); SfChart.Annotations.Add(annotationS6); SfChart.Annotations.Add(annotationS7); SfChart.Annotations.Add(annotationS8); SfChart.Annotations.Add(annotationS9); break; case "Triangular Average": StockViewModel model2 = new StockViewModel(0); DataContext = model2.Stocks; SfChart.Annotations.Clear(); indicator = new TriangularAverageIndicator() { SignalLineColor = new SolidColorBrush(Colors.Blue) }; TextAnnotation annotationT = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 2, Y1 = 400 }; TextAnnotation annotationT1 = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 8, Y1 = 250 }; TextAnnotation annotationT2 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 21, Y1 = 620 }; TextAnnotation annotationT3 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 31, Y1 = 630 }; TextAnnotation annotationT6 = new TextAnnotation { Text = "BUY", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 40, Y1 = 475 }; TextAnnotation annotationT7 = new TextAnnotation { Text = "SELL", FontSize = 15, CoordinateUnit = CoordinateUnit.Axis, X1 = 54, Y1 = 760 }; SfChart.Annotations.Add(annotationT); SfChart.Annotations.Add(annotationT1); SfChart.Annotations.Add(annotationT2); SfChart.Annotations.Add(annotationT3); SfChart.Annotations.Add(annotationT6); SfChart.Annotations.Add(annotationT7); break; default: return(null); } var index = rowIndex == 0 ? 1 : 0; ChartSeries Series = this.SfChart.VisibleSeries[index] as ChartSeries; indicator.XBindingPath = "TimeStamp"; indicator.High = "High"; indicator.Low = "Low"; indicator.Open = "Open"; indicator.Close = "Last"; indicator.Volume = "Volume"; Binding binding = new Binding(); binding.Path = new PropertyPath("ItemsSource"); binding.Source = Series; binding.Mode = BindingMode.TwoWay; indicator.SetBinding(FinancialTechnicalIndicator.ItemsSourceProperty, binding); return(indicator); }
void ChartView_PropertyChanged(object sender, PropertyChangedEventArgs e) { switch (selectedIndicator) { case "Accumulation Distribution": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; AccumulationDistributionIndicator indicator = new AccumulationDistributionIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new AccumulationDistributionIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "Average True Range": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; AverageTrueRangeIndicator indicator = new AverageTrueRangeIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new AverageTrueRangeIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "BollingerBand": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; BollingerBandIndicator indicator = new BollingerBandIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new BollingerBandIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "Exponential Average": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; ExponentialAverageIndicator indicator = new ExponentialAverageIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new ExponentialAverageIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "MACDTechnical": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; MACDTechnicalIndicator indicator = new MACDTechnicalIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new MACDTechnicalIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "Momentum Technical": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; MomentumTechnicalIndicator indicator = new MomentumTechnicalIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new MomentumTechnicalIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "RSITechnical": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; RSITechnicalIndicator indicator = new RSITechnicalIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new RSITechnicalIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "Simple Average": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; SimpleAverageIndicator indicator = new SimpleAverageIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new SimpleAverageIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; case "Triangular Average": { HiLoOpenCloseSeries series = StockChart.Series[0] as HiLoOpenCloseSeries; ColumnSeries series1 = StockChart.Series[1] as ColumnSeries; TriangularAverageIndicator indicator = new TriangularAverageIndicator(); NumericalAxis axis1 = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; indicator.YAxis = axis1; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; if (StockChart.TechnicalIndicators.Count > 0) { StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); StockChart.TechnicalIndicators.Remove(StockChart.TechnicalIndicators[0]); } StockChart.TechnicalIndicators.Add(indicator); indicator = new TriangularAverageIndicator(); NumericalAxis axis = new NumericalAxis() { Visibility = Visibility.Collapsed, ShowGridLines = false }; UI.Xaml.Charts.SfChart.SetRow(axis, 1); indicator.YAxis = axis; indicator.ItemsSource = series.ItemsSource; indicator.High = series.High; indicator.Low = series.Low; indicator.Open = series.Open; indicator.Close = series.Close; indicator.XBindingPath = series.XBindingPath; indicator.Volume = series.Open; StockChart.TechnicalIndicators.Add(indicator); } break; } }
private FinancialTechnicalIndicator Addindicator(string value) { FinancialTechnicalIndicator indicator; switch (value) { case "Accumulation Distribution": indicator = new AccumulationDistributionIndicator(); break; case "Average True Range": indicator = new AverageTrueRangeIndicator() { Period = 1 }; break; case "Bollinger Band": indicator = new BollingerBandIndicator() { UpperLineColor = Brushes.Green, Period = 3 }; break; case "Exponential Average": indicator = new ExponentialAverageIndicator(); break; case "MACD": indicator = new MACDTechnicalIndicator() { Period = 5, LongPeriod = 12, ShortPeriod = 6, ConvergenceLineColor = Brushes.Green }; break; case "Momentum": indicator = new MomentumTechnicalIndicator() { Period = 4 }; break; case "RSI": indicator = new RSITechnicalIndicator() { Period = 4, UpperLineColor = Brushes.Green }; break; case "Simple Average": indicator = new SimpleAverageIndicator(); break; case "Stochastic": indicator = new StochasticTechnicalIndicator() { UpperLineColor = Brushes.Green }; break; case "Triangular Average": indicator = new TriangularAverageIndicator(); break; default: return(null); } indicator.XBindingPath = "TimeStamp"; indicator.High = "High"; indicator.Low = "Low"; indicator.Open = "Open"; indicator.Close = "Last"; indicator.Volume = "Volume"; Binding binding = new Binding(); binding.Path = new PropertyPath("Datas"); binding.Source = this; binding.Mode = BindingMode.TwoWay; indicator.SetBinding(FinancialTechnicalIndicator.ItemsSourceProperty, binding); ISupportAxes2D indicatorAxis = indicator as ISupportAxes2D; if (indicatorAxis != null) { NumericalAxis axis = new NumericalAxis(); axis.OpposedPosition = true; axis.ShowGridLines = false; axis.Visibility = Visibility.Collapsed; indicatorAxis.YAxis = axis; } return(indicator); }
void labelDisplayMode_SelectedIndexChanged(object sender, EventArgs e) { switch (animationPicker.SelectedIndex) { case 0: Chart.TechnicalIndicators.RemoveAt(0); AccumulationDistributionIndicator sma = new AccumulationDistributionIndicator(); sma.SeriesName = "Series"; NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; sma.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma); break; case 1: Chart.TechnicalIndicators.RemoveAt(0); AverageTrueIndicator sma1 = new AverageTrueIndicator(); sma1.SeriesName = "Series"; sma1.Period = 14; NumericalAxis numericalAxis1 = new NumericalAxis(); numericalAxis1.OpposedPosition = true; numericalAxis1.ShowMajorGridLines = false; sma1.YAxis = numericalAxis1; Chart.TechnicalIndicators.Add(sma1); break; case 2: Chart.TechnicalIndicators.RemoveAt(0); ExponentialMovingAverageIndicator sma2 = new ExponentialMovingAverageIndicator(); sma2.SeriesName = "Series"; sma2.Period = 14; NumericalAxis numericalAxis2 = new NumericalAxis(); numericalAxis2.OpposedPosition = true; numericalAxis2.ShowMajorGridLines = false; sma2.YAxis = numericalAxis2; Chart.TechnicalIndicators.Add(sma2); break; case 3: Chart.TechnicalIndicators.RemoveAt(0); MomentumIndicator sma3 = new MomentumIndicator(); sma3.SeriesName = "Series"; sma3.Period = 14; NumericalAxis numericalAxis3 = new NumericalAxis(); numericalAxis3.OpposedPosition = true; numericalAxis3.ShowMajorGridLines = false; sma3.YAxis = numericalAxis3; Chart.TechnicalIndicators.Add(sma3); break; case 4: if (Chart.TechnicalIndicators.Count > 0) { Chart.TechnicalIndicators.RemoveAt(0); } SimpleMovingAverageIndicator sma4 = new SimpleMovingAverageIndicator(); NumericalAxis numericalAxis4 = new NumericalAxis(); numericalAxis4.OpposedPosition = true; numericalAxis4.ShowMajorGridLines = false; sma4.YAxis = numericalAxis4; sma4.SeriesName = "Series"; sma4.Period = 14; Chart.TechnicalIndicators.Add(sma4); break; case 5: Chart.TechnicalIndicators.RemoveAt(0); RSIIndicator sma5 = new RSIIndicator(); sma5.SeriesName = "Series"; sma5.Period = 14; NumericalAxis numericalAxis5 = new NumericalAxis(); numericalAxis5.OpposedPosition = true; numericalAxis5.ShowMajorGridLines = false; sma5.YAxis = numericalAxis5; Chart.TechnicalIndicators.Add(sma5); break; case 6: Chart.TechnicalIndicators.RemoveAt(0); TriangularMovingAverageIndicator sma6 = new TriangularMovingAverageIndicator(); sma6.SeriesName = "Series"; sma6.Period = 14; NumericalAxis numericalAxis6 = new NumericalAxis(); numericalAxis6.OpposedPosition = true; numericalAxis6.ShowMajorGridLines = false; sma6.YAxis = numericalAxis6; Chart.TechnicalIndicators.Add(sma6); break; case 7: Chart.TechnicalIndicators.RemoveAt(0); MACDIndicator sma7 = new MACDIndicator(); sma7.ItemsSource = (this.BindingContext as ViewModel).TechnicalIndicatorData; sma7.SeriesName = "Series"; sma7.LongPeriod = 10; sma7.ShortPeriod = 2; sma7.Trigger = 14; NumericalAxis numericalAxis7 = new NumericalAxis(); numericalAxis7.OpposedPosition = true; numericalAxis7.ShowMajorGridLines = false; sma7.YAxis = numericalAxis7; Chart.TechnicalIndicators.Add(sma7); break; case 8: Chart.TechnicalIndicators.RemoveAt(0); StochasticIndicator sma8 = new StochasticIndicator(); sma8.SeriesName = "Series"; sma8.Period = 14; sma8.KPeriod = 5; sma8.DPeriod = 6; NumericalAxis numericalAxis8 = new NumericalAxis(); numericalAxis8.OpposedPosition = true; numericalAxis8.ShowMajorGridLines = false; sma8.YAxis = numericalAxis8; Chart.TechnicalIndicators.Add(sma8); break; case 9: Chart.TechnicalIndicators.RemoveAt(0); BollingerBandIndicator sma9 = new BollingerBandIndicator(); sma9.Period = 14; sma9.SeriesName = "Series"; NumericalAxis numericalAxis9 = new NumericalAxis(); numericalAxis9.OpposedPosition = true; numericalAxis9.ShowMajorGridLines = false; sma9.YAxis = numericalAxis9; Chart.TechnicalIndicators.Add(sma9); break; } }
private void SelectLabelMode_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) { String selectedItem = adapter[e.Position]; if (selectedItem.Equals("Accumulation Distribution Indicator")) { chart.TechnicalIndicators.RemoveAt(0); AccumulationDistributionIndicator accumulationDistribution = new AccumulationDistributionIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; accumulationDistribution.YAxis = numericalAxis; accumulationDistribution.SeriesName = "Series"; accumulationDistribution.XBindingPath = "XValue"; accumulationDistribution.Open = "Open"; accumulationDistribution.Close = "Close"; accumulationDistribution.High = "High"; accumulationDistribution.Low = "Low"; chart.TechnicalIndicators.Add(accumulationDistribution); } else if (selectedItem.Equals("Average True Indicator")) { chart.TechnicalIndicators.RemoveAt(0); AverageTrueIndicator aTR = new AverageTrueIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; aTR.YAxis = numericalAxis; aTR.Period = 14; aTR.SeriesName = "Series"; aTR.XBindingPath = "XValue"; aTR.Open = "Open"; aTR.Close = "Close"; aTR.High = "High"; aTR.Low = "Low"; chart.TechnicalIndicators.Add(aTR); } else if (selectedItem.Equals("Exponential Moving Averge Indicator")) { chart.TechnicalIndicators.RemoveAt(0); ExponentialMovingAverageIndicator eMA = new ExponentialMovingAverageIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; eMA.YAxis = numericalAxis; eMA.Period = 14; eMA.SeriesName = "Series"; eMA.XBindingPath = "XValue"; eMA.Open = "Open"; eMA.Close = "Close"; eMA.High = "High"; eMA.Low = "Low"; chart.TechnicalIndicators.Add(eMA); } else if (selectedItem.Equals("Momentum Indicator")) { chart.TechnicalIndicators.RemoveAt(0); MomentumIndicator momentum = new MomentumIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; momentum.YAxis = numericalAxis; momentum.SeriesName = "Series"; momentum.XBindingPath = "XValue"; momentum.Open = "Open"; momentum.Close = "Close"; momentum.High = "High"; momentum.Low = "Low"; momentum.Period = 14; chart.TechnicalIndicators.Add(momentum); } else if (selectedItem.Equals("Simple Moving Average Indicator")) { chart.TechnicalIndicators.RemoveAt(0); SimpleMovingAverageIndicator sMA = new SimpleMovingAverageIndicator(); sMA.SeriesName = "Series"; sMA.XBindingPath = "XValue"; sMA.Open = "Open"; sMA.Close = "Close"; sMA.High = "High"; sMA.Low = "Low"; sMA.Period = 14; chart.TechnicalIndicators.Add(sMA); } else if (selectedItem.Equals("RSI Indicator")) { chart.TechnicalIndicators.RemoveAt(0); RSIIndicator rSI = new RSIIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; rSI.YAxis = numericalAxis; rSI.Period = 14; rSI.SeriesName = "Series"; rSI.XBindingPath = "XValue"; rSI.Open = "Open"; rSI.Close = "Close"; rSI.High = "High"; rSI.Low = "Low"; chart.TechnicalIndicators.Add(rSI); } else if (selectedItem.Equals("Triangular Moving Average Indicator")) { chart.TechnicalIndicators.RemoveAt(0); TriangularMovingAverageIndicator tMA = new TriangularMovingAverageIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; tMA.YAxis = numericalAxis; tMA.Period = 14; tMA.SeriesName = "Series"; tMA.XBindingPath = "XValue"; tMA.Open = "Open"; tMA.Close = "Close"; tMA.High = "High"; tMA.Low = "Low"; chart.TechnicalIndicators.Add(tMA); } else if (selectedItem.Equals("MACD Indicator")) { chart.TechnicalIndicators.RemoveAt(0); MACDIndicator mACD = new MACDIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; mACD.YAxis = numericalAxis; mACD.SeriesName = "Series"; mACD.XBindingPath = "XValue"; mACD.Open = "Open"; mACD.Close = "Close"; mACD.High = "High"; mACD.Low = "Low"; mACD.ShortPeriod = 2; mACD.LongPeriod = 10; mACD.Trigger = 14; chart.TechnicalIndicators.Add(mACD); } else if (selectedItem.Equals("Stochastic Indicator")) { chart.TechnicalIndicators.RemoveAt(0); StochasticIndicator stochastic = new StochasticIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; stochastic.YAxis = numericalAxis; stochastic.SeriesName = "Series"; stochastic.XBindingPath = "XValue"; stochastic.Open = "Open"; stochastic.Close = "Close"; stochastic.High = "High"; stochastic.Low = "Low"; stochastic.Period = 14; stochastic.KPeriod = 5; stochastic.DPeriod = 6; chart.TechnicalIndicators.Add(stochastic); } else if (selectedItem.Equals("Bollinger Band Indicator")) { chart.TechnicalIndicators.RemoveAt(0); BollingerBandIndicator bB = new BollingerBandIndicator(); bB.Period = 14; NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; //bB.YAxis = numericalAxis; bB.SeriesName = "Series"; bB.XBindingPath = "XValue"; bB.Open = "Open"; bB.Close = "Close"; bB.High = "High"; bB.Low = "Low"; chart.TechnicalIndicators.Add(bB); } }
private FinancialTechnicalIndicator Addindicator(string value, int rowIndex) { FinancialTechnicalIndicator indicator; switch (value) { case "Accumulation Distribution": indicator = new AccumulationDistributionIndicator(); break; case "Average True Range": indicator = new AverageTrueRangeIndicator() { Period = 1 }; break; case "Bollinger Band": indicator = new BollingerBandIndicator() { UpperLineColor = Brushes.Green, Period = 3 }; break; case "Exponential Average": indicator = new ExponentialAverageIndicator(); break; case "MACD": indicator = new MACDTechnicalIndicator() { Period = 5, LongPeriod = 12, ShortPeriod = 6, ConvergenceLineColor = Brushes.Green }; break; case "Momentum": indicator = new MomentumTechnicalIndicator() { Period = 4 }; break; case "RSI": indicator = new RSITechnicalIndicator() { Period = 4, UpperLineColor = Brushes.Green }; break; case "Simple Average": indicator = new SimpleAverageIndicator(); break; case "Stochastic": indicator = new StochasticTechnicalIndicator() { UpperLineColor = Brushes.Green }; break; case "Triangular Average": indicator = new TriangularAverageIndicator(); break; default: return(null); } var index = rowIndex == 0 ? 1 : 0; ChartSeries Series = this.SfChart.VisibleSeries[index] as ChartSeries; indicator.XBindingPath = "TimeStamp"; indicator.High = "High"; indicator.Low = "Low"; indicator.Open = "Open"; indicator.Close = "Last"; indicator.Volume = "Volume"; Binding binding = new Binding(); binding.Path = new PropertyPath("ItemsSource"); binding.Source = Series; binding.Mode = BindingMode.TwoWay; indicator.SetBinding(FinancialTechnicalIndicator.ItemsSourceProperty, binding); return(indicator); }