static ast.Node _ExpandMacros(ast.Node node) { if (!(node is ast.CallExpression)) { return(node); } ast.CallExpression callExpression = (ast.CallExpression)node; Object.Macro macro = isMacroCall(callExpression, _env); if (macro == null) { return(node); } List <Object.Quote> args = quoteArgs(callExpression); Object.Environment evalEnv = extendMacroEnv(macro, args); Object.Object evaluated = evaluator.Eval(macro.Body, evalEnv); if (!(evaluated is Object.Quote)) { System.Console.WriteLine("we only support returning AST-nodes from macros"); System.Environment.Exit(-1); } Object.Quote quote = (Object.Quote)evaluated; return(quote.Node); }
public PivotPoint(C1FlexChart chart, string plotAreaName = null) : base() { Chart = chart; Chart.BeginUpdate(); if (!string.IsNullOrEmpty(plotAreaName)) { this.AxisY = new Axis(); this.AxisY.TitleStyle = new ChartStyle(); this.AxisY.TitleStyle.FontWeight = FontWeights.Bold; this.AxisY.Position = C1.Chart.Position.Right; this.AxisY.PlotAreaName = plotAreaName; this.AxisY.Title = "P&P"; this.AxisY.Labels = false; this.AxisY.MajorTickMarks = this.AxisY.MinorTickMarks = C1.Chart.TickMark.None; } series = new PivotPointSeries(); series.SeriesName = "Pivot"; series.ChartType = C1.Chart.ChartType.Step; series.Style = new C1.WPF.Chart.ChartStyle(); series.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); series.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); series.Style.StrokeThickness = 1; series.AxisY = AxisY; Chart.Series.Add(series); r1 = new R1Series(); r1.SeriesName = "R1"; r1.ChartType = C1.Chart.ChartType.Step; r1.Style = new C1.WPF.Chart.ChartStyle(); r1.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); r1.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); r1.Style.StrokeThickness = 1; r1.AxisY = AxisY; Chart.Series.Add(r1); r2 = new R2Series(); r2.SeriesName = "R2"; r2.ChartType = C1.Chart.ChartType.Step; r2.Style = new C1.WPF.Chart.ChartStyle(); r2.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); r2.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); r2.Style.StrokeThickness = 1; r2.AxisY = AxisY; Chart.Series.Add(r2); r3 = new R3Series(); r3.SeriesName = "R3"; r3.ChartType = C1.Chart.ChartType.Step; r3.Style = new C1.WPF.Chart.ChartStyle(); r3.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); r3.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); r3.Style.StrokeThickness = 1; r3.AxisY = AxisY; Chart.Series.Add(r3); s1 = new S1Series(); s1.SeriesName = "S1"; s1.ChartType = C1.Chart.ChartType.Step; s1.Style = new C1.WPF.Chart.ChartStyle(); s1.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); s1.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); s1.Style.StrokeThickness = 1; s1.AxisY = AxisY; Chart.Series.Add(s1); s2 = new S2Series(); s2.SeriesName = "S2"; s2.ChartType = C1.Chart.ChartType.Step; s2.Style = new C1.WPF.Chart.ChartStyle(); s2.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); s2.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); s2.Style.StrokeThickness = 1; s2.AxisY = AxisY; Chart.Series.Add(s2); s3 = new S3Series(); s3.SeriesName = "S3"; s3.ChartType = C1.Chart.ChartType.Step; s3.Style = new C1.WPF.Chart.ChartStyle(); s3.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); s3.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); s3.Style.StrokeThickness = 1; s3.AxisY = AxisY; Chart.Series.Add(s3); Utilities.Helper.BindingSettingsParams(chart, this, typeof(PivotPoint), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("PivotType", typeof(PivotPointType)), }, () => { PivotPointCalculator.Instance.Create(); this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, series, typeof(PivotPointSeries), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("Style.Stroke", typeof(Brush), "Pivot"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, r1, typeof(PivotPointSeries), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("Style.Stroke", typeof(Brush), "R1"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, r2, typeof(PivotPointSeries), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("Style.Stroke", typeof(Brush), "R2"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, r3, typeof(PivotPointSeries), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("Style.Stroke", typeof(Brush), "R3"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, s1, typeof(PivotPointSeries), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("Style.Stroke", typeof(Brush), "S1"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, s2, typeof(PivotPointSeries), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("Style.Stroke", typeof(Brush), "S2"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, s3, typeof(PivotPointSeries), "Pivot Point", new Data.PropertyParam[] { new Data.PropertyParam("Style.Stroke", typeof(Brush), "S3"), }, () => { this.OnSettingParamsChanged(); } ); if (this.AxisY != null && this.AxisY.TitleStyle != null) { //binding series color to axis title. Binding binding = new Binding("Stroke"); binding.Source = series.Style; BindingOperations.SetBinding(AxisY.TitleStyle, ChartStyle.StrokeProperty, binding); } Object.Quote quote = ViewModel.ViewModel.Instance.CurrectQuote; if (quote != null) { PivotPointCalculator.Instance.Source = quote.Data; } if (series != null) { series.Calculator = PivotPointCalculator.Instance; } if (r1 != null) { r1.Calculator = PivotPointCalculator.Instance; } if (r2 != null) { r2.Calculator = PivotPointCalculator.Instance; } if (r3 != null) { r3.Calculator = PivotPointCalculator.Instance; } if (s1 != null) { s1.Calculator = PivotPointCalculator.Instance; } if (s2 != null) { s2.Calculator = PivotPointCalculator.Instance; } if (s3 != null) { s3.Calculator = PivotPointCalculator.Instance; } ViewModel.ViewModel.Instance.PropertyChanged += (o, e) => { if (e.PropertyName == "CurrectQuote") { quote = ViewModel.ViewModel.Instance.CurrectQuote; PivotPointCalculator.Instance.Source = quote.Data; } }; Chart.EndUpdate(); this.Series = new Series[] { series, r1, r2, r3, s1, s2, s3 }; }
public QuoteEventArg(Object.Quote quote) { Quote = quote; }
public ADX(C1FlexChart chart, string plotAreaName) : base() { Chart = chart; Chart.BeginUpdate(); AxisY.TitleStyle = new ChartStyle(); AxisY.TitleStyle.FontWeight = FontWeights.Bold; AxisY.Position = C1.Chart.Position.Right; AxisY.PlotAreaName = plotAreaName; AxisY.Title = "ADX"; AxisY.Labels = false; AxisY.MajorTickMarks = AxisY.MinorTickMarks = C1.Chart.TickMark.None; DIPSeries dip = new DIPSeries(); dip.ChartType = C1.Chart.Finance.FinancialChartType.Line; dip.Style = new C1.WPF.Chart.ChartStyle(); dip.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); dip.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); dip.Style.StrokeThickness = 1; //dip.BindingX = "Date"; //dip.Binding = "High,Low,Close"; dip.AxisY = AxisY; Chart.Series.Add(dip); DINSeries din = new DINSeries(); din.ChartType = C1.Chart.Finance.FinancialChartType.Line; din.Style = new C1.WPF.Chart.ChartStyle(); din.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); din.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); din.Style.StrokeThickness = 1; //din.BindingX = "Date"; //din.Binding = "High,Low,Close"; din.AxisY = AxisY; Chart.Series.Add(din); ADXSeries adx = new ADXSeries(); adx.ChartType = C1.Chart.Finance.FinancialChartType.Line; adx.Style = new C1.WPF.Chart.ChartStyle(); adx.Style.Stroke = new SolidColorBrush(ViewModel.IndicatorPalettes.DefaultBorder); adx.Style.StrokeThickness = 1; //adx.BindingX = "Date"; //adx.Binding = "High,Low,Close"; adx.AxisY = AxisY; Chart.Series.Add(adx); Utilities.Helper.BindingSettingsParams(chart, dip, typeof(DIPSeries), "Average Directional Index (ADX)", new Data.PropertyParam[] { new Data.PropertyParam("Period", typeof(int)), new Data.PropertyParam("Style.Stroke", typeof(Brush), "D+"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, din, typeof(DINSeries), "Average Directional Index (ADX)", new Data.PropertyParam[] { new Data.PropertyParam("Period", typeof(int)), new Data.PropertyParam("Style.Stroke", typeof(Brush), "D-"), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, adx, typeof(ADXSeries), "Average Directional Index (ADX)", new Data.PropertyParam[] { new Data.PropertyParam("Period", typeof(int)), new Data.PropertyParam("Style.Stroke", typeof(Brush), "ADX"), }, () => { this.OnSettingParamsChanged(); } ); //binding series color to axis title. Binding binding = new Binding("Stroke"); binding.Source = adx.Style; BindingOperations.SetBinding(AxisY.TitleStyle, ChartStyle.StrokeProperty, binding); Chart.EndUpdate(); this.Series = new FinancialSeries[] { dip, din, adx }; Object.Quote quote = ViewModel.ViewModel.Instance.CurrectQuote; if (quote != null) { ADXCalculator.Instance.Source = quote.Data; } if (dip != null) { dip.Calculator = ADXCalculator.Instance; } if (din != null) { din.Calculator = ADXCalculator.Instance; } if (adx != null) { adx.Calculator = ADXCalculator.Instance; } ViewModel.ViewModel.Instance.PropertyChanged += (o, e) => { if (e.PropertyName == "CurrectQuote") { quote = ViewModel.ViewModel.Instance.CurrectQuote; ADXCalculator.Instance.Source = quote.Data; } }; }
public MassIndex(C1FlexChart chart, string plotAreaName) : base() { Chart = chart; Chart.BeginUpdate(); AxisY.TitleStyle = new ChartStyle(); AxisY.TitleStyle.FontWeight = FontWeights.Bold; AxisY.Position = C1.Chart.Position.Right; AxisY.PlotAreaName = plotAreaName; AxisY.Title = "MI"; AxisY.Labels = false; AxisY.MajorTickMarks = AxisY.MinorTickMarks = C1.Chart.TickMark.None; series = new MassIndexSeries(); series.ChartType = C1.Chart.ChartType.Line; series.Style = new ChartStyle(); series.Style.Stroke = new SolidColorBrush(Color.FromArgb(255, 51, 103, 214)); series.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); series.Style.StrokeThickness = 1; //dip.BindingX = "Date"; //dip.Binding = "High,Low,Close"; series.AxisY = AxisY; Chart.Series.Add(series); seriesThreshold = new IndicatorSeries.ThresholdSeries(); seriesThreshold.ChartType = C1.Chart.Finance.FinancialChartType.Line; seriesThreshold.Style = new ChartStyle(); seriesThreshold.Style.Stroke = new SolidColorBrush(ViewModel.IndicatorPalettes.StockGreen); seriesThreshold.Style.Fill = new SolidColorBrush(Color.FromArgb(128, 66, 133, 244)); seriesThreshold.Style.StrokeThickness = 1; seriesThreshold.AxisY = AxisY; Chart.Series.Add(seriesThreshold); Utilities.Helper.BindingSettingsParams(chart, series, typeof(MassIndexSeries), "Mass Index", new Data.PropertyParam[] { new Data.PropertyParam("Period", typeof(int)), new Data.PropertyParam("Style.Stroke", typeof(Brush)), }, () => { this.OnSettingParamsChanged(); } ); Utilities.Helper.BindingSettingsParams(chart, seriesThreshold, typeof(IndicatorSeries.ThresholdSeries), "Mass Index", new Data.PropertyParam[] { new Data.PropertyParam("Threshold", typeof(Object.Threshold)), }, () => { this.OnSettingParamsChanged(); } ); seriesThreshold.OnThesholdChanged += (o, e) => { this.OnSettingParamsChanged(); }; //binding series color to axis title. Binding binding = new Binding(); binding.Path = new Windows.UI.Xaml.PropertyPath("Stroke"); binding.Source = series.Style; BindingOperations.SetBinding(AxisY.TitleStyle, ChartStyle.StrokeProperty, binding); Object.Quote quote = ViewModel.ViewModel.Instance.CurrectQuote; if (quote != null) { MassIndexCalculator.Instance.Source = quote.Data; } series.Calculator = MassIndexCalculator.Instance; MassIndexCalculator.Instance.Period = series.Period; ViewModel.ViewModel.Instance.PropertyChanged += (o, e) => { if (e.PropertyName == "CurrectQuote") { quote = ViewModel.ViewModel.Instance.CurrectQuote; MassIndexCalculator.Instance.Source = quote.Data; } }; Chart.EndUpdate(); this.Series = new Series[] { series, seriesThreshold }; }