private void InsertFinancialMarker(NChart chart, NLineStudy ls) { if (chart.Series.Count > 1) { chart.Series.RemoveAt(0); } chart.Series.Insert(0, ls); }
private void FinancialMarkerCombo_SelectedIndexChanged(object sender, System.EventArgs e) { NChart chart = nChartControl1.Charts[0]; NStockSeries stock = (NStockSeries)chart.Series[chart.Series.Count - 1]; NLineStudy lineStudy = null; Color lineColor = Color.Crimson; switch (FinancialMarkerCombo.SelectedIndex) { case 0: lineStudy = new NFibonacciArcs(); TrendlineModeCombo.Enabled = false; break; case 1: lineStudy = new NFibonacciFans(); TrendlineModeCombo.Enabled = true; break; case 2: lineStudy = new NFibonacciRetracements(); ((NFibonacciRetracements)lineStudy).RetracementsStrokeStyle.Color = lineColor; TrendlineModeCombo.Enabled = true; break; case 3: lineStudy = new NSpeedResistanceLines(); TrendlineModeCombo.Enabled = true; break; case 4: lineStudy = new NQuadrantLines(); ((NQuadrantLines)lineStudy).CentralLineStrokeStyle.Color = lineColor; TrendlineModeCombo.Enabled = false; break; case 5: lineStudy = new NTrendLine(); TrendlineModeCombo.Enabled = true; break; default: return; } UpdateLineStudyAnchor(stock, lineStudy); // set the primary line color lineStudy.StrokeStyle.Color = lineColor; InsertFinancialMarker(chart, lineStudy); SetTextVisibility(); lineStudy.TrendLineMode = (TrendLineMode)TrendlineModeCombo.SelectedIndex; nChartControl1.Refresh(); }
private void SetTrendlineMode() { NChart chart = nChartControl1.Charts[0]; NLineStudy trend = chart.Series[0] as NLineStudy; if (trend != null) { trend.TrendLineMode = (TrendLineMode)TrendlineModeCombo.SelectedIndex; } }
private void SetTextVisibility() { NChart chart = nChartControl1.Charts[0]; NLineStudy lineStudy = chart.Series[0] as NLineStudy; if (lineStudy != null) { lineStudy.ShowTexts = ShowTextsCheck.Checked; } }
private void IncludeInMinMaxCalculationCheckBox_CheckedChanged(object sender, EventArgs e) { NChart chart = nChartControl1.Charts[0]; NLineStudy lineStudy = chart.Series[0] as NLineStudy; if (lineStudy != null) { lineStudy.IncludeInMinMaxCalculation = IncludeInMinMaxCalculationCheckBox.Checked; nChartControl1.Refresh(); } }
private void TextStyleButton_Click(object sender, System.EventArgs e) { NChart chart = nChartControl1.Charts[0]; NLineStudy lineStudy = chart.Series[0] as NLineStudy; if (lineStudy == null) { return; } NTextStyle textStyleResult; if (NTextStyleTypeEditor.Edit(lineStudy.TextStyle, out textStyleResult)) { lineStudy.TextStyle = textStyleResult; nChartControl1.Refresh(); } }
private void UpdateLineStudyAnchor(NStockSeries stock, NLineStudy lineStudy) { switch (FinancialMarkerCombo.SelectedIndex) { case 0: // Fibonacci Arcs case 1: // Fibonacci Fans case 2: // Fibonacci Retracements case 3: // Speed Resistance Lines case 4: // Quadrant Lines lineStudy.BeginPoint = GetLowPointFromStock(stock, m_nMinIndex1); lineStudy.EndPoint = GetHighPointFromStock(stock, m_nMaxIndex2); break; case 5: // Trend Line lineStudy.BeginPoint = GetLowPointFromStock(stock, m_nMinIndex1); lineStudy.EndPoint = GetLowPointFromStock(stock, m_nMaxIndex2); break; } }
private void GenerateData() { const int dataCount = 240; NChart chart = nChartControl1.Charts[0]; NStockSeries stock = (NStockSeries)chart.Series[chart.Series.Count - 1]; GenerateStockData(stock, dataCount, 1000); // find the points where line studies should be attached m_nMinIndex1 = FindLocalMin(stock, 20); m_nMaxIndex1 = FindLocalMax(stock, 100); m_nMinIndex2 = FindLocalMin(stock, 120); m_nMaxIndex2 = FindLocalMax(stock, 200); NLineStudy lineStudy = chart.Series[0] as NLineStudy; if (lineStudy != null) { UpdateLineStudyAnchor(stock, lineStudy); } }
protected void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { LineStudyDropDownList.Items.Add("Fibonacci Arcs"); LineStudyDropDownList.Items.Add("Fibonacci Fans"); LineStudyDropDownList.Items.Add("Fibonacci Retracements"); LineStudyDropDownList.Items.Add("Speed Resistance Lines"); LineStudyDropDownList.Items.Add("Quadrant Lines"); LineStudyDropDownList.Items.Add("Trend Line"); WebExamplesUtilities.FillComboWithEnumValues(TrendlineModeDropDownList, typeof(TrendLineMode)); // form controls LineStudyDropDownList.SelectedIndex = 0; TrendlineModeDropDownList.SelectedIndex = 1; } nChartControl1.BackgroundStyle.FrameStyle.Visible = false; // set a chart title NLabel title = new NLabel(); title.Text = "Line Studies - " + LineStudyDropDownList.SelectedItem.Text; title.TextStyle.FontStyle = new NFontStyle("Times New Roman", 14, FontStyle.Italic); title.TextStyle.ShadowStyle.Type = ShadowType.LinearBlur; nChartControl1.Panels.Add(title); // no legend nChartControl1.Legends.Clear(); // setup chart NChart chart = nChartControl1.Charts[0]; chart.BoundsMode = BoundsMode.Stretch; // setup X axis NAxis axis = chart.Axis(StandardAxis.PrimaryX); NDateTimeScaleConfigurator timeScaleConfigurator = new NDateTimeScaleConfigurator(); axis.ScaleConfigurator = timeScaleConfigurator; timeScaleConfigurator.EnableUnitSensitiveFormatting = false; timeScaleConfigurator.LabelValueFormatter = new NDateTimeValueFormatter("MMM yy"); timeScaleConfigurator.MajorGridStyle.LineStyle.Pattern = LinePattern.Dot; timeScaleConfigurator.MajorGridStyle.SetShowAtWall(ChartWallType.Back, true); timeScaleConfigurator.InnerMajorTickStyle.LineStyle.Width = new NLength(0, NGraphicsUnit.Pixel); timeScaleConfigurator.RoundToTickMin = false; timeScaleConfigurator.RoundToTickMax = false; timeScaleConfigurator.LabelGenerationMode = LabelGenerationMode.SingleLevel; // setup Y axis axis = chart.Axis(StandardAxis.PrimaryY); NLinearScaleConfigurator linearScaleConfigurator = (NLinearScaleConfigurator)axis.ScaleConfigurator; linearScaleConfigurator.MajorGridStyle.LineStyle.Pattern = LinePattern.Dot; linearScaleConfigurator.MajorGridStyle.SetShowAtWall(ChartWallType.Left, false); linearScaleConfigurator.InnerMajorTickStyle.LineStyle.Width = new NLength(0, NGraphicsUnit.Pixel); // add interlaced stripe NScaleStripStyle stripStyle = new NScaleStripStyle(new NColorFillStyle(Color.Beige), null, true, 0, 0, 1, 1); stripStyle.Interlaced = true; stripStyle.SetShowAtWall(ChartWallType.Back, true); linearScaleConfigurator.StripStyles.Add(stripStyle); Color customColor = Color.FromArgb(150, 150, 200); // setup the stock series NStockSeries stock = (NStockSeries)chart.Series.Add(SeriesType.Stock); stock.DataLabelStyle.Visible = false; stock.CandleStyle = CandleStyle.Bar; stock.CandleWidth = new NLength(0.3f, NRelativeUnit.ParentPercentage); stock.HighLowStrokeStyle.Color = customColor; stock.UpStrokeStyle.Width = new NLength(0); stock.DownStrokeStyle.Width = new NLength(0); stock.UpFillStyle = new NColorFillStyle(Color.LightGreen); stock.DownFillStyle = new NColorFillStyle(customColor); stock.UseXValues = true; stock.InflateMargins = true; GenerateData(stock); // apply layout ApplyLayoutTemplate(0, nChartControl1, chart, title, null); // create line study NLineStudy lineStudy = null; Color lineColor = Color.Crimson; switch (LineStudyDropDownList.SelectedIndex) { case 0: lineStudy = new NFibonacciArcs(); break; case 1: lineStudy = new NFibonacciFans(); break; case 2: lineStudy = new NFibonacciRetracements(); ((NFibonacciRetracements)lineStudy).RetracementsStrokeStyle.Color = lineColor; break; case 3: lineStudy = new NSpeedResistanceLines(); break; case 4: lineStudy = new NQuadrantLines(); ((NQuadrantLines)lineStudy).CentralLineStrokeStyle.Color = lineColor; break; case 5: lineStudy = new NTrendLine(); break; default: return; } // attach the line study to the stock series lineStudy.BeginPoint = GetLowPointFromStock(stock, 20); lineStudy.EndPoint = GetHighPointFromStock(stock, 80); // set the primary line color lineStudy.StrokeStyle.Color = lineColor; InsertFinancialMarker(chart, lineStudy); TrendlineModeDropDownList.Enabled = lineStudy is NTrendLine; // set trend line mode NTrendLine trend = chart.Series[0] as NTrendLine; lineStudy.TrendLineMode = (TrendLineMode)TrendlineModeDropDownList.SelectedIndex; // set text visibility lineStudy.ShowTexts = ShowTextsCheckBox.Checked; }