Esempio n. 1
0
        public override Task OnLoad()
        {
            _instrument = new InstrumentModel
            {
                Name      = _asset,
                TimeFrame = _span
            };

            var account = new AccountModel
            {
                Name           = _account,
                Balance        = 50000,
                InitialBalance = 50000,
                Instruments    = new NameCollection <string, IInstrumentModel> {
                    [_asset] = _instrument
                }
            };

            var gateway = new GatewayClient
            {
                Speed    = 100,
                Name     = _account,
                Account  = account,
                Evaluate = Parse,
                Source   = ConfigurationManager.AppSettings["DataLocation"].ToString()
            };

            _rsiIndicator = new RelativeStrengthIndicator {
                Interval = 10, Name = "RSI Indicator : " + _asset
            };
            _atrIndicator = new AverageTrueRangeIndicator {
                Interval = 10, Name = "ATR Indicator : " + _asset
            };
            _bidIndicator = new MovingAverageIndicator {
                Interval = 0, Mode = MovingAverageEnum.Bid, Name = "BID Indicator : " + _asset
            };
            _askIndicator = new MovingAverageIndicator {
                Interval = 0, Mode = MovingAverageEnum.Ask, Name = "ASK Indicator : " + _asset
            };
            _performanceIndicator = new PerformanceIndicator {
                Name = "Balance"
            };

            _disposables.Add(gateway
                             .Account
                             .Instruments
                             .Values
                             .Select(o => o.PointGroups.ItemStream)
                             .Merge()
                             .Subscribe(OnData));

            CreateCharts();
            CreateGateways(gateway);

            return(Task.FromResult(0));
        }
Esempio n. 2
0
        private RadCartesianChartView createChart()
        {
            RadCartesianChartView chart = new RadCartesianChartView(this.Activity);

            DateTimeCategoricalAxis horizontalAxis = new DateTimeCategoricalAxis();

            horizontalAxis.DateTimeFormat    = new SimpleDateFormat("MM/dd");
            horizontalAxis.DateTimeComponent = DateTimeComponent.Date;

            LinearAxis verticalAxis = new LinearAxis();

            DataPointBinding categoryBinding = new CategoryBinding();
            DataPointBinding openBinding     = new OpenValueBinding();
            DataPointBinding highBinding     = new HighValueBinding();
            DataPointBinding lowBinding      = new LowValueBinding();
            DataPointBinding closeBinding    = new CloseValueBinding();

            ArrayList data = this.getData();

            CandlestickSeries series = new CandlestickSeries();

            series.CategoryBinding = categoryBinding;
            series.OpenBinding     = openBinding;
            series.HighBinding     = highBinding;
            series.LowBinding      = lowBinding;
            series.CloseBinding    = closeBinding;
            series.Data            = data;

            BollingerBandsIndicator bollingerBands = new BollingerBandsIndicator();

            bollingerBands.CategoryBinding    = categoryBinding;
            bollingerBands.ValueBinding       = closeBinding;
            bollingerBands.Period             = 5;
            bollingerBands.StandardDeviations = 2;
            bollingerBands.Data = data;

            MovingAverageIndicator movingAverage = new MovingAverageIndicator();

            movingAverage.CategoryBinding = categoryBinding;
            movingAverage.ValueBinding    = closeBinding;
            movingAverage.Period          = 5;
            movingAverage.Data            = data;

            chart.VerticalAxis   = verticalAxis;
            chart.HorizontalAxis = horizontalAxis;
            chart.Series.Add(series);
            chart.Series.Add(bollingerBands);
            chart.Series.Add(movingAverage);

            // irrelevant
            horizontalAxis.LabelFitMode = AxisLabelFitMode.Rotate;

            return(chart);
        }
        private RadCartesianChartView createChart()
        {
            RadCartesianChartView chart = new RadCartesianChartView(this.Activity);

            DateTimeCategoricalAxis horizontalAxis = new DateTimeCategoricalAxis();
            horizontalAxis.SetDateTimeFormat(new SimpleDateFormat("MM/dd"));
            horizontalAxis.DateTimeComponent = DateTimeComponent.Date;

            LinearAxis verticalAxis = new LinearAxis();

            DataPointBinding categoryBinding = new CategoryBinding();
            DataPointBinding openBinding = new OpenValueBinding();
            DataPointBinding highBinding = new HighValueBinding();
            DataPointBinding lowBinding = new LowValueBinding();
            DataPointBinding closeBinding = new CloseValueBinding();

            ArrayList data = this.getData();

            CandlestickSeries series = new CandlestickSeries();
            series.CategoryBinding = categoryBinding;
            series.OpenBinding = openBinding;
            series.HighBinding = highBinding;
            series.LowBinding = lowBinding;
            series.CloseBinding = closeBinding;
            series.Data = data;

            BollingerBandsIndicator bollingerBands = new BollingerBandsIndicator();
            bollingerBands.CategoryBinding = categoryBinding;
            bollingerBands.ValueBinding = closeBinding;
            bollingerBands.Period = 5;
            bollingerBands.StandardDeviations = 2;
            bollingerBands.Data = data;

            MovingAverageIndicator movingAverage = new MovingAverageIndicator();
            movingAverage.CategoryBinding = categoryBinding;
            movingAverage.ValueBinding = closeBinding;
            movingAverage.Period = 5;
            movingAverage.Data = data;

            chart.VerticalAxis = verticalAxis;
            chart.HorizontalAxis = horizontalAxis;
            chart.Series.Add(series);
            chart.Series.Add(bollingerBands);
            chart.Series.Add(movingAverage);

            // irrelevant
            horizontalAxis.LabelFitMode = AxisLabelFitMode.Rotate;

            return chart;
        }
Esempio n. 4
0
        private IndicatorBase CreateMAIndicator(string indicatorType)
        {
            IndicatorBase indicator;

            if (indicatorType.StartsWith("MA ("))
            {
                indicator      = new MovingAverageIndicator();
                indicator.Name = "MA";
            }
            else if (indicatorType.StartsWith("Exponential MA"))
            {
                indicator      = new ExponentialMovingAverageIndicator();
                indicator.Name = "EMA";
            }
            else if (indicatorType.StartsWith("Modified MA"))
            {
                indicator      = new ModifiedMovingAverageIndicator();
                indicator.Name = "MMA";
            }
            else if (indicatorType.StartsWith("Modified Exponential MA"))
            {
                indicator      = new ModifiedExponentialMovingAverageIndicator();
                indicator.Name = "MEMA";
            }
            else if (indicatorType.StartsWith("Weighted MA"))
            {
                indicator      = new WeightedMovingAverageIndicator();
                indicator.Name = "WMA";
            }
            else if (indicatorType.StartsWith("Adaptive MA"))
            {
                indicator      = new AdaptiveMovingAverageKaufmanIndicator();
                indicator.Name = "KAMA";
                ((AdaptiveMovingAverageKaufmanIndicator)indicator).SlowPeriod = 10;
                ((AdaptiveMovingAverageKaufmanIndicator)indicator).FastPeriod = 4;
            }
            else
            {
                indicator      = new BollingerBandsIndicator();
                indicator.Name = "BOLL";
                ((BollingerBandsIndicator)indicator).StandardDeviations = 2;
            }

            ((ValuePeriodIndicatorBase)indicator).Period = 5;
            indicator.CategoryMember = "Date";
            indicator.ValueMember    = "Close";
            indicator.DataSource     = viewModel.Data;

            return(indicator);
        }
Esempio n. 5
0
        private IndicatorBase CreateTrendline(Trendlines trendlineToAdd)
        {
            switch (trendlineToAdd)
            {
            case Trendlines.MovingAverageIndicator:
                var maIndicator = new MovingAverageIndicator();
                maIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                maIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                maIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                maIndicator.Period          = 12;
                maIndicator.Stroke          = Color.Orange;
                maIndicator.StrokeThickness = 1;
                return(maIndicator);

            case Trendlines.AdaptiveMovingAverageKaufmanIndicator:
                var amakIndicator = new AdaptiveMovingAverageKaufmanIndicator();
                amakIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                amakIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                amakIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                amakIndicator.Period          = 10;
                amakIndicator.SlowPeriod      = 30;
                amakIndicator.FastPeriod      = 2;
                amakIndicator.Stroke          = Color.Orange;
                amakIndicator.StrokeThickness = 1;
                return(amakIndicator);

            case Trendlines.ExponentialMovingAverageIndicator:
                var emaIndicator = new ExponentialMovingAverageIndicator();
                emaIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                emaIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                emaIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                emaIndicator.Period          = 8;
                emaIndicator.Stroke          = Color.Orange;
                emaIndicator.StrokeThickness = 1;
                return(emaIndicator);

            case Trendlines.BollingerBandsIndicator:
                var bbIndicator = new BollingerBandsIndicator();
                bbIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                bbIndicator.CategoryBinding    = new PropertyNameDataPointBinding("DateCategory");
                bbIndicator.ValueBinding       = new PropertyNameDataPointBinding("Close");
                bbIndicator.Period             = 5;
                bbIndicator.Stroke             = Color.Orange;
                bbIndicator.LowerBandStroke    = Color.Orange;
                bbIndicator.StandardDeviations = 3;
                bbIndicator.StrokeThickness    = 1;
                return(bbIndicator);

            case Trendlines.WeightedMovingAverageIndicator:
                var wmaIndicator = new WeightedMovingAverageIndicator();
                wmaIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                wmaIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                wmaIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                wmaIndicator.Period          = 12;
                wmaIndicator.Stroke          = Color.Orange;
                wmaIndicator.StrokeThickness = 1;
                return(wmaIndicator);

            default:
                return(null);
            }
        }
        public static WalkerIndicator getIndicatorByString(string input)
        {
            string[] args;

            if (input.Contains("_") == false)
            {
                args = new string[] { input }
            }
            ;
            else
            {
                args = input.Split('_');
            }

            WalkerIndicator selected = null;

            if (args[0] == BolingerBandsIndicator.Name)
            {
                selected = new BolingerBandsIndicator(long.Parse(args[1]), double.Parse(args[2]));
            }

            if (args[0] == MACDContinousIndicator.Name)
            {
                selected = new MACDContinousIndicator(long.Parse(args[1]), long.Parse(args[2]), long.Parse(args[3]));
            }

            if (args[0] == MACDIndicator.Name)
            {
                selected = new MACDIndicator(long.Parse(args[1]), long.Parse(args[2]), long.Parse(args[3]));
            }

            if (args[0] == MovingAverageIndicator.Name)
            {
                selected = new MovingAverageIndicator(long.Parse(args[1]));
            }

            if (args[0] == MovingAveragePriceSubtractionIndicator.Name)
            {
                selected = new MovingAveragePriceSubtractionIndicator(long.Parse(args[1]));
            }

            if (args[0] == MovingAverageSubtractionIndicator.Name)
            {
                selected = new MovingAverageSubtractionIndicator(long.Parse(args[1]), long.Parse(args[2]));
            }

            if (args[0] == MovingAverageSubtractionCrossoverIndicator.Name)
            {
                selected = new MovingAverageSubtractionCrossoverIndicator(long.Parse(args[1]), long.Parse(args[2]));
            }

            if (args[0] == RangeIndicator.Name)
            {
                selected = new RangeIndicator(long.Parse(args[1]));
            }

            if (args[0] == RSIBorderCrossoverIndicator.Name)
            {
                selected = new RSIBorderCrossoverIndicator(long.Parse(args[1]), double.Parse(args[2]));
            }

            if (args[0] == RSIBorderIndicator.Name)
            {
                selected = new RSIBorderIndicator(long.Parse(args[1]), double.Parse(args[2]));
            }

            if (args[0] == RSIIndicator.Name)
            {
                selected = new RSIIndicator(long.Parse(args[1]));
            }

            if (args[0] == RSIMACrossoverContinousIndicator.Name)
            {
                selected = new RSIMACrossoverContinousIndicator(long.Parse(args[1]), long.Parse(args[2]));
            }

            if (args[0] == RSIMACrossoverIndicator.Name)
            {
                selected = new RSIMACrossoverIndicator(long.Parse(args[1]), long.Parse(args[2]));
            }

            if (args[0] == StandartDeviationIndicator.Name)
            {
                selected = new StandartDeviationIndicator(long.Parse(args[1]));
            }

            if (args[0] == StochBorderCrossoverIndicator.Name)
            {
                selected = new StochBorderCrossoverIndicator(long.Parse(args[1]), double.Parse(args[2]));
            }

            if (args[0] == StochBorderIndicator.Name)
            {
                selected = new StochBorderIndicator(long.Parse(args[1]), double.Parse(args[2]));
            }

            if (args[0] == StochIndicator.Name)
            {
                selected = new StochIndicator(long.Parse(args[1]));
            }

            if (args[0] == TestIndicator.Name)
            {
                selected = new TestIndicator();
            }

            if (args[0] == TimeDayOfWeekIndicator.Name)
            {
                selected = new TimeDayOfWeekIndicator();
            }

            if (args[0] == TimeOfDayIndicator.Name)
            {
                selected = new TimeOfDayIndicator();
            }

            if (args[0] == TimeOpeningHoursIndicator.Name)
            {
                selected = new TimeOpeningHoursIndicator();
            }

            if (args[0] == VolumeAtPriceIndicator.Name)
            {
                selected = new VolumeAtPriceIndicator(long.Parse(args[1]), double.Parse(args[2]), long.Parse(args[3]));
            }

            if (selected == null)
            {
                throw new Exception("Name not found: " + args[0]);
            }

            if (selected.getName() != input)
            {
                throw new Exception(input + " != " + selected.getName());
            }

            return(selected);
        }