Пример #1
0
        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);
        }
Пример #2
0
        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 };
        }
Пример #3
0
 public QuoteEventArg(Object.Quote quote)
 {
     Quote = quote;
 }
Пример #4
0
        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 };
        }