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)); }
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; }
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); }
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); }