public override bool Start() { bool res = base.Start(); if (!res) { return(false); } RsiIndicator = new RsiIndicator() { Ticker = Ticker, Length = Length }; MacdIndicator = new MacdIndicator() { Ticker = Ticker, Length = Length }; StochIndicator = new StochasticIndicator() { Ticker = Ticker, Length = Length }; RsiIndicator.Calculate(); MacdIndicator.Calculate(); StochIndicator.Calculate(); TelegramBot.Default.SendNotification("SingleNotificationStrategy: " + Name + ": started at " + DateTime.Now.ToString("g"), ChatId); return(true); }
public void TestItemAdded() { Ticker ticker = new Binance.BinanceTicker(Binance.BinanceExchange.Default); ticker.CandleStickData = GetCandleSticks(100); MacdIndicator macd = new MacdIndicator() { Ticker = ticker, Source = IndicatorSource.Close, Length = 9 }; StochasticIndicator stoch = new StochasticIndicator() { Ticker = ticker, Source = IndicatorSource.Close, Length = 9 }; macd.Calculate(); stoch.Calculate(); for (int i = 0; i < 10; i++) { CandleStickData date = GetCandleStick(DateTime.Now.AddMinutes(1)); macd.OnAddValue(); stoch.OnAddValue(); } Assert.AreEqual(110, macd.Result.Count); Assert.AreEqual(110, macd.FastEmaIndicator.Result.Count); Assert.AreEqual(110, macd.SlowEmaIndicator.Result.Count); Assert.AreEqual(110, macd.SignalMaIndicator.Result.Count); Assert.AreEqual(110, stoch.MinIndicator.Result.Count); Assert.AreEqual(110, stoch.MaxIndicator.Result.Count); Assert.AreEqual(110, stoch.Result.Count); }
/// <summary> /// Initialization method /// </summary> public override void OnInitialize() { log.Debug("ProfitStopStochasticLongStrategy onInitialize()"); // Adding StdDev indicator to strategy // (see http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:standard_deviation) stdDevIndicator = new StdDevIndicator(Bars.Close, (int)this.GetInputParameter("StdDev Period"), (int)this.GetInputParameter("StdDev Number of Deviations")); this.AddIndicator("Std Dev indicator", stdDevIndicator); // Adding Stochastic indicator to strategy // (see http://stockcharts.com/help/doku.php?id=chart_school:technical_indicators:stochastic_oscillato) stochasticIndicator = new StochasticIndicator(Bars.Bars, (int)this.GetInputParameter("Stochastic Period")); this.AddIndicator("Stochastic", stochasticIndicator); }
/// <summary> /// Initialization method /// </summary> public override void OnInitialize() { log.Debug("AryaStrategy onInitialize()"); // Adding a Stochastic indicator to strategy // (see http://stockcharts.com/help/doku.php?id=chart_school:technical_indicators:stochastic_oscillato) stochasticIndicator = new StochasticIndicator(Bars.Bars, (int)this.GetInputParameter("Stochastic Period")); this.AddIndicator("Stochastic Indicator", stochasticIndicator); // Adding an ADX indicator to strategy // (see http://www.investopedia.com/terms/a/adx.asp) adxIndicator = new ADXIndicator(Bars.Bars, (int)this.GetInputParameter("ADX Period")); this.AddIndicator("ADX Indicator", adxIndicator); // Adding a SMA indicator to strategy // (see http://www.investopedia.com/terms/s/sma.asp) smaIndicator = new SMAIndicator(Bars.Close, (int)this.GetInputParameter("SMA Period")); this.AddIndicator("SMA Indicator", smaIndicator); }
public void TestCalculate() { Ticker ticker = new Binance.BinanceTicker(Binance.BinanceExchange.Default); ticker.CandleStickData = GetCandleSticks(100); MacdIndicator macd = new MacdIndicator() { Ticker = ticker, Source = IndicatorSource.Close, Length = 9 }; StochasticIndicator stoch = new StochasticIndicator() { Ticker = ticker, Source = IndicatorSource.Close, Length = 9 }; macd.Calculate(); stoch.Calculate(); Assert.AreEqual(100, macd.Result.Count); Assert.AreEqual(100, macd.FastEmaIndicator.Result.Count); Assert.AreEqual(100, macd.SlowEmaIndicator.Result.Count); Assert.AreEqual(100, macd.SignalMaIndicator.Result.Count); Assert.AreEqual(100, stoch.MinIndicator.Result.Count); Assert.AreEqual(100, stoch.MaxIndicator.Result.Count); Assert.AreEqual(100, stoch.MaIndicator.Result.Count); Assert.AreEqual(100, stoch.Result.Count); macd.Calculate(); stoch.Calculate(); Assert.AreEqual(100, macd.Result.Count); Assert.AreEqual(100, macd.FastEmaIndicator.Result.Count); Assert.AreEqual(100, macd.SlowEmaIndicator.Result.Count); Assert.AreEqual(100, macd.SignalMaIndicator.Result.Count); Assert.AreEqual(100, stoch.MinIndicator.Result.Count); Assert.AreEqual(100, stoch.MaxIndicator.Result.Count); Assert.AreEqual(100, stoch.Result.Count); }
void labelDisplayMode_SelectedIndexChanged(object sender, EventArgs e) { animationPickerLabel.Text = animationPicker.Items[animationPicker.SelectedIndex]; NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; if (Device.RuntimePlatform == Device.UWP) { numericalAxis.LabelStyle.LabelFormat = "'$'0.00"; } else { numericalAxis.LabelStyle.LabelFormat = "'$'##.##"; } switch (animationPicker.SelectedIndex) { case 0: Chart.TechnicalIndicators.RemoveAt(0); AccumulationDistributionIndicator sma = new AccumulationDistributionIndicator(); sma.SeriesName = "Series"; sma.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma); break; case 1: Chart.TechnicalIndicators.RemoveAt(0); AverageTrueIndicator sma1 = new AverageTrueIndicator(); sma1.SeriesName = "Series"; sma1.Period = 14; sma1.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma1); break; case 2: Chart.TechnicalIndicators.RemoveAt(0); ExponentialMovingAverageIndicator sma2 = new ExponentialMovingAverageIndicator(); sma2.SeriesName = "Series"; sma2.Period = 14; sma2.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma2); break; case 3: Chart.TechnicalIndicators.RemoveAt(0); MomentumIndicator sma3 = new MomentumIndicator(); sma3.SeriesName = "Series"; sma3.Period = 14; sma3.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma3); break; case 4: if (Chart.TechnicalIndicators.Count > 0) { Chart.TechnicalIndicators.RemoveAt(0); } SimpleMovingAverageIndicator sma4 = new SimpleMovingAverageIndicator(); sma4.YAxis = numericalAxis; sma4.SeriesName = "Series"; sma4.Period = 14; Chart.TechnicalIndicators.Add(sma4); break; case 5: Chart.TechnicalIndicators.RemoveAt(0); RSIIndicator sma5 = new RSIIndicator(); sma5.SeriesName = "Series"; sma5.Period = 14; sma5.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma5); break; case 6: Chart.TechnicalIndicators.RemoveAt(0); TriangularMovingAverageIndicator sma6 = new TriangularMovingAverageIndicator(); sma6.SeriesName = "Series"; sma6.Period = 14; sma6.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma6); break; case 7: Chart.TechnicalIndicators.RemoveAt(0); MACDIndicator sma7 = new MACDIndicator(); sma7.ItemsSource = (Chart.BindingContext as TechnicalIndicatorViewModel).TechnicalIndicatorData; sma7.SeriesName = "Series"; sma7.LongPeriod = 10; sma7.ShortPeriod = 2; sma7.Trigger = 14; sma7.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma7); break; case 8: Chart.TechnicalIndicators.RemoveAt(0); StochasticIndicator sma8 = new StochasticIndicator(); sma8.SeriesName = "Series"; sma8.Period = 14; sma8.KPeriod = 5; sma8.DPeriod = 6; sma8.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma8); break; case 9: Chart.TechnicalIndicators.RemoveAt(0); BollingerBandIndicator sma9 = new BollingerBandIndicator(); sma9.Period = 14; sma9.SeriesName = "Series"; sma9.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma9); break; } }
void labelDisplayMode_SelectedIndexChanged(object sender, EventArgs e) { switch (animationPicker.SelectedIndex) { case 0: Chart.TechnicalIndicators.RemoveAt(0); AccumulationDistributionIndicator sma = new AccumulationDistributionIndicator(); sma.SeriesName = "Series"; NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; sma.YAxis = numericalAxis; Chart.TechnicalIndicators.Add(sma); break; case 1: Chart.TechnicalIndicators.RemoveAt(0); AverageTrueIndicator sma1 = new AverageTrueIndicator(); sma1.SeriesName = "Series"; sma1.Period = 14; NumericalAxis numericalAxis1 = new NumericalAxis(); numericalAxis1.OpposedPosition = true; numericalAxis1.ShowMajorGridLines = false; sma1.YAxis = numericalAxis1; Chart.TechnicalIndicators.Add(sma1); break; case 2: Chart.TechnicalIndicators.RemoveAt(0); ExponentialMovingAverageIndicator sma2 = new ExponentialMovingAverageIndicator(); sma2.SeriesName = "Series"; sma2.Period = 14; NumericalAxis numericalAxis2 = new NumericalAxis(); numericalAxis2.OpposedPosition = true; numericalAxis2.ShowMajorGridLines = false; sma2.YAxis = numericalAxis2; Chart.TechnicalIndicators.Add(sma2); break; case 3: Chart.TechnicalIndicators.RemoveAt(0); MomentumIndicator sma3 = new MomentumIndicator(); sma3.SeriesName = "Series"; sma3.Period = 14; NumericalAxis numericalAxis3 = new NumericalAxis(); numericalAxis3.OpposedPosition = true; numericalAxis3.ShowMajorGridLines = false; sma3.YAxis = numericalAxis3; Chart.TechnicalIndicators.Add(sma3); break; case 4: if (Chart.TechnicalIndicators.Count > 0) { Chart.TechnicalIndicators.RemoveAt(0); } SimpleMovingAverageIndicator sma4 = new SimpleMovingAverageIndicator(); NumericalAxis numericalAxis4 = new NumericalAxis(); numericalAxis4.OpposedPosition = true; numericalAxis4.ShowMajorGridLines = false; sma4.YAxis = numericalAxis4; sma4.SeriesName = "Series"; sma4.Period = 14; Chart.TechnicalIndicators.Add(sma4); break; case 5: Chart.TechnicalIndicators.RemoveAt(0); RSIIndicator sma5 = new RSIIndicator(); sma5.SeriesName = "Series"; sma5.Period = 14; NumericalAxis numericalAxis5 = new NumericalAxis(); numericalAxis5.OpposedPosition = true; numericalAxis5.ShowMajorGridLines = false; sma5.YAxis = numericalAxis5; Chart.TechnicalIndicators.Add(sma5); break; case 6: Chart.TechnicalIndicators.RemoveAt(0); TriangularMovingAverageIndicator sma6 = new TriangularMovingAverageIndicator(); sma6.SeriesName = "Series"; sma6.Period = 14; NumericalAxis numericalAxis6 = new NumericalAxis(); numericalAxis6.OpposedPosition = true; numericalAxis6.ShowMajorGridLines = false; sma6.YAxis = numericalAxis6; Chart.TechnicalIndicators.Add(sma6); break; case 7: Chart.TechnicalIndicators.RemoveAt(0); MACDIndicator sma7 = new MACDIndicator(); sma7.ItemsSource = (this.BindingContext as ViewModel).TechnicalIndicatorData; sma7.SeriesName = "Series"; sma7.LongPeriod = 10; sma7.ShortPeriod = 2; sma7.Trigger = 14; NumericalAxis numericalAxis7 = new NumericalAxis(); numericalAxis7.OpposedPosition = true; numericalAxis7.ShowMajorGridLines = false; sma7.YAxis = numericalAxis7; Chart.TechnicalIndicators.Add(sma7); break; case 8: Chart.TechnicalIndicators.RemoveAt(0); StochasticIndicator sma8 = new StochasticIndicator(); sma8.SeriesName = "Series"; sma8.Period = 14; sma8.KPeriod = 5; sma8.DPeriod = 6; NumericalAxis numericalAxis8 = new NumericalAxis(); numericalAxis8.OpposedPosition = true; numericalAxis8.ShowMajorGridLines = false; sma8.YAxis = numericalAxis8; Chart.TechnicalIndicators.Add(sma8); break; case 9: Chart.TechnicalIndicators.RemoveAt(0); BollingerBandIndicator sma9 = new BollingerBandIndicator(); sma9.Period = 14; sma9.SeriesName = "Series"; NumericalAxis numericalAxis9 = new NumericalAxis(); numericalAxis9.OpposedPosition = true; numericalAxis9.ShowMajorGridLines = false; sma9.YAxis = numericalAxis9; Chart.TechnicalIndicators.Add(sma9); break; } }
private void SelectLabelMode_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) { String selectedItem = adapter[e.Position]; if (selectedItem.Equals("Accumulation Distribution Indicator")) { chart.TechnicalIndicators.RemoveAt(0); AccumulationDistributionIndicator accumulationDistribution = new AccumulationDistributionIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; accumulationDistribution.YAxis = numericalAxis; accumulationDistribution.SeriesName = "Series"; accumulationDistribution.XBindingPath = "XValue"; accumulationDistribution.Open = "Open"; accumulationDistribution.Close = "Close"; accumulationDistribution.High = "High"; accumulationDistribution.Low = "Low"; chart.TechnicalIndicators.Add(accumulationDistribution); } else if (selectedItem.Equals("Average True Indicator")) { chart.TechnicalIndicators.RemoveAt(0); AverageTrueIndicator aTR = new AverageTrueIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; aTR.YAxis = numericalAxis; aTR.Period = 14; aTR.SeriesName = "Series"; aTR.XBindingPath = "XValue"; aTR.Open = "Open"; aTR.Close = "Close"; aTR.High = "High"; aTR.Low = "Low"; chart.TechnicalIndicators.Add(aTR); } else if (selectedItem.Equals("Exponential Moving Averge Indicator")) { chart.TechnicalIndicators.RemoveAt(0); ExponentialMovingAverageIndicator eMA = new ExponentialMovingAverageIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; eMA.YAxis = numericalAxis; eMA.Period = 14; eMA.SeriesName = "Series"; eMA.XBindingPath = "XValue"; eMA.Open = "Open"; eMA.Close = "Close"; eMA.High = "High"; eMA.Low = "Low"; chart.TechnicalIndicators.Add(eMA); } else if (selectedItem.Equals("Momentum Indicator")) { chart.TechnicalIndicators.RemoveAt(0); MomentumIndicator momentum = new MomentumIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; momentum.YAxis = numericalAxis; momentum.SeriesName = "Series"; momentum.XBindingPath = "XValue"; momentum.Open = "Open"; momentum.Close = "Close"; momentum.High = "High"; momentum.Low = "Low"; momentum.Period = 14; chart.TechnicalIndicators.Add(momentum); } else if (selectedItem.Equals("Simple Moving Average Indicator")) { chart.TechnicalIndicators.RemoveAt(0); SimpleMovingAverageIndicator sMA = new SimpleMovingAverageIndicator(); sMA.SeriesName = "Series"; sMA.XBindingPath = "XValue"; sMA.Open = "Open"; sMA.Close = "Close"; sMA.High = "High"; sMA.Low = "Low"; sMA.Period = 14; chart.TechnicalIndicators.Add(sMA); } else if (selectedItem.Equals("RSI Indicator")) { chart.TechnicalIndicators.RemoveAt(0); RSIIndicator rSI = new RSIIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; rSI.YAxis = numericalAxis; rSI.Period = 14; rSI.SeriesName = "Series"; rSI.XBindingPath = "XValue"; rSI.Open = "Open"; rSI.Close = "Close"; rSI.High = "High"; rSI.Low = "Low"; chart.TechnicalIndicators.Add(rSI); } else if (selectedItem.Equals("Triangular Moving Average Indicator")) { chart.TechnicalIndicators.RemoveAt(0); TriangularMovingAverageIndicator tMA = new TriangularMovingAverageIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; tMA.YAxis = numericalAxis; tMA.Period = 14; tMA.SeriesName = "Series"; tMA.XBindingPath = "XValue"; tMA.Open = "Open"; tMA.Close = "Close"; tMA.High = "High"; tMA.Low = "Low"; chart.TechnicalIndicators.Add(tMA); } else if (selectedItem.Equals("MACD Indicator")) { chart.TechnicalIndicators.RemoveAt(0); MACDIndicator mACD = new MACDIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; mACD.YAxis = numericalAxis; mACD.SeriesName = "Series"; mACD.XBindingPath = "XValue"; mACD.Open = "Open"; mACD.Close = "Close"; mACD.High = "High"; mACD.Low = "Low"; mACD.ShortPeriod = 2; mACD.LongPeriod = 10; mACD.Trigger = 14; chart.TechnicalIndicators.Add(mACD); } else if (selectedItem.Equals("Stochastic Indicator")) { chart.TechnicalIndicators.RemoveAt(0); StochasticIndicator stochastic = new StochasticIndicator(); NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; stochastic.YAxis = numericalAxis; stochastic.SeriesName = "Series"; stochastic.XBindingPath = "XValue"; stochastic.Open = "Open"; stochastic.Close = "Close"; stochastic.High = "High"; stochastic.Low = "Low"; stochastic.Period = 14; stochastic.KPeriod = 5; stochastic.DPeriod = 6; chart.TechnicalIndicators.Add(stochastic); } else if (selectedItem.Equals("Bollinger Band Indicator")) { chart.TechnicalIndicators.RemoveAt(0); BollingerBandIndicator bB = new BollingerBandIndicator(); bB.Period = 14; NumericalAxis numericalAxis = new NumericalAxis(); numericalAxis.OpposedPosition = true; numericalAxis.ShowMajorGridLines = false; //bB.YAxis = numericalAxis; bB.SeriesName = "Series"; bB.XBindingPath = "XValue"; bB.Open = "Open"; bB.Close = "Close"; bB.High = "High"; bB.Low = "Low"; chart.TechnicalIndicators.Add(bB); } }