protected override void Initialize() { _ma = Indicators.MovingAverage(MarketSeries.Close, maPeriod, MAType); if (!Enum.TryParse<Colors>(AboveUpColor, out _AboveUpColor) || !Enum.TryParse<Colors>(AboveDownColor, out _AboveDownColor) || !Enum.TryParse<Colors>(BelowUpColor, out _BelowUpColor) || !Enum.TryParse<Colors>(BelowDownColor, out _BelowDownColor)) _incorrectColors = true; }
protected override void Initialize() { _ma1 = Indicators.MovingAverage(DataSource, Periods, MovingAverageType); _ma2 = Indicators.MovingAverage(_ma1.Result, Periods, MovingAverageType); base.Initialize(); }
protected override void Initialize() { deMin = CreateDataSeries(); deMax = CreateDataSeries(); deMinMA = Indicators.MovingAverage(deMin, Periods, MovingAverageType.Simple); deMaxMA = Indicators.MovingAverage(deMax, Periods, MovingAverageType.Simple); }
protected override void Initialize() { _rsi = Indicators.RelativeStrengthIndex(Source, RsiPeriod); _bollingerBands = Indicators.BollingerBands(_rsi.Result, Volatility, StDev, MovingAverageType.Simple); _price = Indicators.MovingAverage(_rsi.Result, PricePeriod, PriceMaType); _signal = Indicators.MovingAverage(_rsi.Result, SignalPeriod, SignalMaType); }
protected override void Initialize() { Median = Indicators.MedianPrice(); HiInd = Indicators.MovingAverage(MarketSeries.High, SlowMA, MovingAverageType.Simple); LoInd = Indicators.MovingAverage(MarketSeries.Low, SlowMA, MovingAverageType.Simple); MasterInd = Indicators.MovingAverage(Median.Result, FastMA, MovingAverageType.Exponential); SignalBuffer = Indicators.MovingAverage(MacdDivrBuffer, SignalMA, MovingAverageType.Simple); }
protected override void Initialize() { _movingAverage = Indicators.MovingAverage(HighAccelerationSeries, Period, MovingAverageType); long elapsedTicks = (long)Math.Ceiling((NumberOfCandle + 0.5) * MarketSeries.TimeFrame.ToTimeSpan().Ticks); TimeSpan elapsedSpan = new TimeSpan(elapsedTicks); _elapsedTime = elapsedSpan.TotalSeconds; }
protected override void Initialize() { // Initialize and create nested indicators tr = CreateDataSeries(); tri = Indicators.TrueRange(); TRMA = Indicators.MovingAverage(tr, Periods, MovingAverageType.Simple); }
protected override void Initialize() { _rocLong = Indicators.PriceROC(Source, RocPeriodLong); _rocShort = Indicators.PriceROC(Source, RocPeriodShort); _rocSum = CreateDataSeries(); _maofRoc = Indicators.WeightedMovingAverage(_rocSum, WmaPeriod); }
protected override void Initialize() { fastMA = Indicators.MovingAverage(MarketSeries.Close, fastPeriod, MaType); slowMA = Indicators.MovingAverage(MarketSeries.Close, SlowPeriod, MaType); arrowOffset = Symbol.PipSize * 5; }
protected override void Initialize() { maOpen = Indicators.MovingAverage(MarketSeries.Open, Periods, MAType); maClose = Indicators.MovingAverage(MarketSeries.Close, Periods, MAType); maHigh = Indicators.MovingAverage(MarketSeries.High, Periods, MAType); maLow = Indicators.MovingAverage(MarketSeries.Low, Periods, MAType); haOpen = CreateDataSeries(); haClose = CreateDataSeries(); }
protected override void Initialize() { _marketSerieGlobal = MarketData.GetSeries(GlobalTimeFrame); int period = 2 * (int) (GlobalTimeFrame.ToTimeSpan().Ticks / MarketSeries.TimeFrame.ToTimeSpan().Ticks); _localMA = Indicators.MovingAverage(LocalTrendSignal, period, MovingAverageType.Exponential); }
protected override void Initialize() { // Initialize and create nested indicators ABS = CreateDataSeries(); Avg = Indicators.MovingAverage(Source, Periode, MovingAverageType.Simple); Avg_Abs = Indicators.MovingAverage(ABS, Bands_Periode, MovingAverageType.Simple); Avg_Cycle = Indicators.MovingAverage(Cycle, Bands_Periode, MovingAverageType.Simple); back = Periode / 2; }
protected override void Initialize() { _denominator = CreateDataSeries(); _nominator = CreateDataSeries(); _fastK = CreateDataSeries(); CreateDataSeries(); _mak = Indicators.MovingAverage(_fastK, Smooth, MaType); _mad = Indicators.MovingAverage(_mak.Result, DPeriod, MaType); }
public void AllowTheFirstRequestItReceives() { // Arrange var strategy = new MovingAverage(new MovingAverageConfig(10000, 1000)); // Act bool isAllowed = strategy.IsAllowed(DateTime.Now); // Assert Assert.That(isAllowed, Is.True); }
protected override void Initialize() { if (Period < 2 * SamplingPeriod) ChartObjects.DrawText("message", "Period >= Sampling Period * 2", StaticPosition.TopCenter, Colors.Red); var lamda = (double)Period / SamplingPeriod; _alpha = lamda * (Period - 1) / (Period - lamda); _movingAverage1 = Indicators.MovingAverage(Source, Period, MAType); _movingAverage2 = Indicators.MovingAverage(_movingAverage1.Result, SamplingPeriod, MAType); }
protected override void Initialize() { // Initialize and create nested indicators Range = CreateDataSeries(); _Avalue = CreateDataSeries(); MiddleRange = CreateDataSeries(); // Initialize the Monving Average MovRange = Indicators.MovingAverage(Range, Period, MovingAverageType.Simple); _Bvalue = Indicators.MovingAverage(MiddleRange, Period, MovingAverageType.Simple); }
protected override void Initialize() { ma = Indicators.MovingAverage(MarketSeries.Close, 200, MovingAverageType.Simple); if (Symbol2 != "") { symbol2 = MarketData.GetSymbol(Symbol2); series2 = MarketData.GetSeries(symbol2, TimeFrame); } multiplier = Symbol.Ask / symbol2.Ask; }
protected override void Initialize() { _dataSeries = CreateDataSeries(); _trend = CreateDataSeries(); var period1 = (int)Math.Floor(DllPeriod / Period); var period2 = (int)Math.Floor(Math.Sqrt(DllPeriod)); _movingAverage1 = Indicators.MovingAverage(Price, period1, MaType); _movingAverage2 = Indicators.MovingAverage(Price, DllPeriod, MaType); _movingAverage3 = Indicators.MovingAverage(_dataSeries, period2, MaType); }
protected override void Initialize() { _iDataSeries = CreateDataSeries(); _emaDiffCenter = Indicators.ExponentialMovingAverage(_iDataSeries, 3); _emaSmoothed = Indicators.ExponentialMovingAverage(_emaDiffCenter.Result, 3); _iDataSeriesHighLow = CreateDataSeries(); _emaDiffHighLow = Indicators.ExponentialMovingAverage(_iDataSeriesHighLow, 3); _emaDiffHighLow2 = Indicators.ExponentialMovingAverage(_emaDiffHighLow.Result, 3); _smi = CreateDataSeries(); _maSmi = Indicators.MovingAverage(_smi, Period, MaType); }
public void AllowRequestWhenMovingAverageLimitHasNotBeenTriggered() { // Arrange var strategy = new MovingAverage(new MovingAverageConfig(10000, 1000)); DateTime firstRequestTime = DateTime.Now; strategy.IsAllowed(firstRequestTime); // Act bool isAllowed = strategy.IsAllowed(firstRequestTime.AddMilliseconds(100)); // Assert Assert.That(isAllowed, Is.True); }
protected override void Initialize() { _priceRoc1 = Indicators.PriceROC(Source, X1); _priceRoc2 = Indicators.PriceROC(Source, X2); _priceRoc3 = Indicators.PriceROC(Source, X3); _priceRoc4 = Indicators.PriceROC(Source, X4); _movingAverage1 = Indicators.MovingAverage(_priceRoc1.Result, AVG1, MAType); _movingAverage2 = Indicators.MovingAverage(_priceRoc2.Result, AVG2, MAType); _movingAverage3 = Indicators.MovingAverage(_priceRoc3.Result, AVG3, MAType); _movingAverage4 = Indicators.MovingAverage(_priceRoc4.Result, AVG4, MAType); ema = Indicators.ExponentialMovingAverage(Result, 9); }
protected override void Initialize() { //_ma = Indicators.MovingAverage(MarketSeries.Close, SignalPeriod, MaType); _dataSeries = CreateDataSeries(); _dataSeriesAbs = CreateDataSeries(); _longDividend = Indicators.MovingAverage(_dataSeries, LongPeriod, MaType); _dividend = Indicators.MovingAverage(_longDividend.Result, ShortPeriod, MaType); _longDivisor = Indicators.MovingAverage(_dataSeriesAbs, LongPeriod, MaType); _divisor = Indicators.MovingAverage(_longDivisor.Result, ShortPeriod, MaType); _tsiSeries = CreateDataSeries(); _signal = Indicators.MovingAverage(_tsiSeries, SignalPeriod, MaType); }
public void DisAllowRequestWhenMovingAverageLimitHasBeenTriggered() { // Arrange var strategy = new MovingAverage(new MovingAverageConfig(10000, 1000)); DateTime firstRequestTime = DateTime.Now; strategy.IsAllowed(firstRequestTime); const int maxRequests = 10; for (int i = 0; i < maxRequests; i++) { strategy.IsAllowed(firstRequestTime.AddMilliseconds((i * 100) + 100)); } // Act bool isAllowed = strategy.IsAllowed(firstRequestTime.AddMilliseconds((maxRequests * 100) + 100)); // Assert Assert.That(isAllowed, Is.False); }
protected override void Initialize() { color1 = Color.FromHex(lineColor1); series1 = MarketData.GetBars(timeframe1); ma1 = Indicators.MovingAverage(series1.ClosePrices, Period1, MAType1); val1 = ma1.Result.LastValue; if (Visibility1 == true) { Chart.DrawTrendLine("Extension1", series1.OpenTimes.LastValue, val1, MarketData.GetBars(TimeFrame.Minute).OpenTimes.LastValue, val1, color1, Thickness1, LineStyle1); } color2 = Color.FromHex(lineColor2); series2 = MarketData.GetBars(timeframe2); ma2 = Indicators.MovingAverage(series2.ClosePrices, Period2, MAType2); val2 = ma2.Result.LastValue; if (Visibility2 == true) { Chart.DrawTrendLine("Extension2", series2.OpenTimes.LastValue, val2, MarketData.GetBars(TimeFrame.Minute).OpenTimes.LastValue, val2, color2, Thickness2, LineStyle2); } color3 = Color.FromHex(lineColor3); series3 = MarketData.GetBars(timeframe3); ma3 = Indicators.MovingAverage(series3.ClosePrices, Period3, MAType3); val3 = ma3.Result.LastValue; if (Visibility3 == true) { Chart.DrawTrendLine("Extension3", series3.OpenTimes.LastValue, val3, MarketData.GetBars(TimeFrame.Minute).OpenTimes.LastValue, val3, color3, Thickness3, LineStyle3); } color4 = Color.FromHex(lineColor4); series4 = MarketData.GetBars(timeframe4); ma4 = Indicators.MovingAverage(series4.ClosePrices, Period4, MAType4); val4 = ma4.Result.LastValue; if (Visibility4 == true) { Chart.DrawTrendLine("Extension4", series4.OpenTimes.LastValue, val4, MarketData.GetBars(TimeFrame.Minute).OpenTimes.LastValue, val4, color4, Thickness4, LineStyle4); } }
protected override void Initialize() { HttpClient = new HttpClient(); Print("Started super Profit indicator, Time frame " + MarketSeries.TimeFrame.ToString() + " \r\n " + Symbol); profitPositions = new List <ProfitPosition>(); //Set the take profit and stop loss TakeProfit = 100 * Symbol.PipSize; StopLoss = 400 * Symbol.PipSize; _dataSeries = CreateDataSeries(); _trend = CreateDataSeries(); var period1 = (int)Math.Floor(DllPeriod / Period); var period2 = (int)Math.Floor(Math.Sqrt(DllPeriod)); _movingAverage1 = Indicators.MovingAverage(Price, period1, MaType); _movingAverage2 = Indicators.MovingAverage(Price, DllPeriod, MaType); _movingAverage3 = Indicators.MovingAverage(_dataSeries, period2, MaType); RefreshData(); }
private void OnLoad(object sender, EventArgs e) { dataService = DataService.GetService(); var data = dataService.GetSymbolData("box"); financialChart1.BeginUpdate(); financialChart1.BindingX = "date"; financialChart1.Binding = "close"; financialChart1.Series.Add(new FinancialSeries()); financialChart1.ChartType = C1.Chart.Finance.FinancialChartType.Line; ma = new MovingAverage(); financialChart1.Series.Add(ma); financialChart1.DataSource = data; financialChart1.EndUpdate(); movingAverage.DataSource = Enum.GetValues(typeof(MovingAverageType)); }
// Get Current Trend protected bool CheckMovment(int BarsBack, double MinMovement, double MaxMovement, string Description) { MovingAverage MA27 = Indicators.MovingAverage(SourceSeries, 27, MAType); double SignalPoint = MA27.Result.Last(1); double CheckPoint = MA27.Result.Last(BarsBack + 1); double Result = Math.Abs(SignalPoint - CheckPoint); Print(Description + " " + Result.ToString()); if (Result <= MinMovement | Result >= MaxMovement) { return(false); } else { return(true); } }
protected override void Init() { InitLogFile(); #region GetIndicatorsAndFrames// Get Indicators' references... // Event occurs once at the start of the strategy //XXPrint("Starting TS on account: {0}, comment: {1}, buystop : {2} sellstop : {3}", // this.Account.Number, "CommentText", listOfBuyStop.Count, listOfSellStop.Count); Print("Starting TS on account: {0}, comment: {1}", this.Account.Number, CommentText); _ma1 = GetIndicator <MovingAverage>(Instrument.Id, Timeframe, 85, 0, MethodMA1, ApplyMA1To); _ma2 = GetIndicator <MovingAverage>(Instrument.Id, Timeframe, 75, 0, MethodMA1, ApplyMA1To); _ma3 = GetIndicator <MovingAverage>(Instrument.Id, Timeframe, 5, 0, MethodMA2, ApplyMA2To); _macd = GetIndicator <MovingAverageConvergenceDivergence> (Instrument.Id, Timeframe); _macd.FastEmaPeriod = 15; _macd.AppliedPrice = ApplyMA2To; _macd.SlowEmaPeriod = 26; _macd.SmaPeriod = 1; #endregion //GetIndicatorsAndFrames }
public async Task Ema_MA_Success() { // Arrange var loggerMock = Mock.Of <ILogger <CsvLoader> >(); var parser = new CsvLoader(loggerMock); var fileH1 = Path.Combine(Directory.GetCurrentDirectory(), "RTS-12.20_H1.csv"); var bars = await parser.LoadBars(fileH1); var chartManager = new ChartManager(bars); chartManager.Finish(); var ema = new MovingAverage(chartManager.Chart, 50); // Act var emaValues = ema.EmaValue(); // Assert bars.Should().NotBeEmpty(); bars.Should().HaveCount(863); }
/// <summary> /// Конструктор класса робота /// </summary> /// <param name="name">Имя робота</param> /// <param name="startProgram">Имя программы, которая запустила робота</param> public OneLegArbitrageGrid(string name, StartProgram startProgram) : base(name, startProgram) { // сохраняем программу, которая запустила робота // это может быть тестер, оптимизатор, терминал _startProgram = StartProgram; // создаем вкладки TabCreate(BotTabType.Simple); TabCreate(BotTabType.Index); _tab = TabsSimple[0]; _tabIndex = TabsIndex[0]; // создаем оптимизируемые параметры LenghtMA = CreateParameter("LenghtMA", 60, 60, 200, 20); LenghtIvashovMA = CreateParameter("LenghtIvashovMA", 100, 60, 200, 20); LenghtIvashovAverage = CreateParameter("LenghtIvashovAverage", 100, 60, 200, 20); Multiply = CreateParameter("Multiply", 1.0m, 0.6m, 2, 0.2m); // создаем индикаторы _ma = new MovingAverage(name + "ma", false); _ma = (MovingAverage)_tabIndex.CreateCandleIndicator(_ma, "Prime"); _ma.Lenght = LenghtMA.ValueInt; _ma.Save(); _ivashov = new IvashovRange(name + "ivashov", false); _ivashov = (IvashovRange)_tabIndex.CreateCandleIndicator(_ivashov, "Second"); _ivashov.LenghtAverage = LenghtIvashovAverage.ValueInt; _ivashov.LenghtMa = LenghtIvashovMA.ValueInt; _ivashov.Save(); // загружаем настроечные параметры бота Load(); // подписка на событие обновление индекса _tab.ServerTimeChangeEvent += _tab_ServerTimeChangeEvent; // подписка на сервисные события ParametrsChangeByUser += OneLegArbitrage_ParametrsChangeByUser; DeleteEvent += OneLegArbitrage_DeleteEvent; }
public PairTraderSpreadSma(string name, StartProgram startProgram) : base(name, startProgram) { TabCreate(BotTabType.Simple); _tab1 = TabsSimple[0]; _tab1.CandleFinishedEvent += _tab1_CandleFinishedEvent; TabCreate(BotTabType.Simple); _tab2 = TabsSimple[1]; _tab2.CandleFinishedEvent += _tab2_CandleFinishedEvent; TabCreate(BotTabType.Index); _tabSpread = TabsIndex[0]; _tabSpread.SpreadChangeEvent += _tabSpread_SpreadChangeEvent; _smaLong = new MovingAverage(name + "MovingLong", false) { Lenght = 22, ColorBase = Color.DodgerBlue }; _smaLong = (MovingAverage)_tabSpread.CreateCandleIndicator(_smaLong, "Prime"); _smaLong.Save(); _smaShort = new MovingAverage(name + "MovingShort", false) { Lenght = 3, ColorBase = Color.DarkRed }; _smaShort = (MovingAverage)_tabSpread.CreateCandleIndicator(_smaShort, "Prime"); _smaShort.Save(); Volume1 = 1; Volume2 = 1; Slipage1 = 0; Slipage2 = 0; Load(); DeleteEvent += Strategy_DeleteEvent; }
protected override void OnStart() { Print("Take Longs: {0}", TakeLongsParameter); Print("Take Shorts: {0}", TakeShortsParameter); if (!TakeLongsParameter && !TakeShortsParameter) { throw new ArgumentException("You need to decide whether to go long/short or both"); } Print("Lot sizing rule: {0}", LotSizingRule); var symbolLeverage = Symbol.DynamicLeverage[0].Leverage; Print("Symbol leverage: {0}", symbolLeverage); var realLeverage = Math.Min(symbolLeverage, Account.PreciseLeverage); Print("Account leverage: {0}", Account.PreciseLeverage); Init(TakeLongsParameter, TakeShortsParameter, InitialStopLossRuleValues.None, 0, TrailingStopLossRuleValues.None, 0, LotSizingRule, TakeProfitRuleValues.None, 0, 0, false, false, DynamicRiskPercentage, 6); _bollingerBands = Indicators.BollingerBands(SourceSeries, 20, 1, MovingAverageType.Simple); _slowMA = Indicators.MovingAverage(SourceSeries, SlowPeriodParameter, MovingAverageType.Exponential); _fastMA = Indicators.MovingAverage(SourceSeries, FastPeriodParameter, MovingAverageType.Exponential); }
public FastDelta_2(string name, StartProgram startProgram) : base(name, startProgram) { TabCreate(BotTabType.Simple); TabCreate(BotTabType.Simple); _tab = TabsSimple[0]; _tab_Slow = TabsSimple[1]; _tab.CandleFinishedEvent += _tab_CandleFinishedEvent; _tab.PositionOpeningSuccesEvent += _tab_PositionOpeningSuccesEvent; _tab.PositionClosingSuccesEvent += _tab_PositionClosingSuccesEvent; _tab_Slow.CandleFinishedEvent += _tab_Slow_CandleFinishedEvent1; _tab_Slow.CandleFinishedEvent += _tab_Slow_CandleFinishedEvent; this.ParametrsChangeByUser += FastDelta_ParametrsChangeByUser; Regime = CreateParameter("Regime", "Off", new[] { "Off", "On" }); leverage = CreateParameter("Маржинальное плечо", 0.1m, 0.1m, 10, 0.1m); MaxStop = CreateParameter("MaxStop", 1, 1, 10, 0.1m); isContract = CreateParameter("Торгуем контрактами", false); DepoCurrency = CreateParameter("DepoCurrency", "Currency2", new[] { "Currency1", "Currency2" }); maLenth = CreateParameter("Период скользящей по объему", 24, 24, 48, 1); DeltaSizeK = CreateParameter("Коэфт для размера дельты", 6, 1, 40, 1); maVolume = new MovingAverage(name + "_maVolume", false); maVolume = (MovingAverage)_tab_Slow.CreateCandleIndicator(maVolume, "New1"); maVolume.Lenght = maLenth.ValueInt; maVolume.TypeCalculationAverage = MovingAverageTypeCalculation.Exponential; maVolume.TypePointsToSearch = PriceTypePoints.Volume; maVolume.Save(); delta = new Delta(name + "delta", false); delta = (Delta)_tab.CreateCandleIndicator(delta, "New3"); delta.Save(); }
protected override void Init() { _maInd = GetIndicator <MovingAverage>(Instrument.Id, Timeframe); _maInd.Period = 26; //_macdInd= GetIndicator<MovingAverageConvergenceDivergence>(Instrument.Id, Timeframe); _ftoInd = GetIndicator <FisherTransformOscillator>(Instrument.Id, Timeframe); _barH1 = GetCustomSeries(Instrument.Id, Period.H1); //_macdIndH1 = GetIndicator<MovingAverageConvergenceDivergence>(Instrument.Id, Period.H1); _ftoIndH1 = GetIndicator <FisherTransformOscillator>(Instrument.Id, Period.H1); //_maIndH1 = GetIndicator<MovingAverage>(Instrument.Id, Period.H1); //_maIndH1.Period=26; //periodM15 = new Period(PeriodType.Minute, 15); //_barM15 = GetCustomSeries(Instrument.Id,periodM15); //_ftoIndM15 = GetIndicator<FisherTransformOscillator>(Instrument.Id, periodM15); //_macdIndM15 = GetIndicator<MovingAverageConvergenceDivergence>(Instrument.Id, periodM15); periodH4 = new Period(PeriodType.Hour, 4); _barH4 = GetCustomSeries(Instrument.Id, periodH4); _ftoIndH4 = GetIndicator <FisherTransformOscillator>(Instrument.Id, periodH4); }
public void MovingAverageData2() { PureData pureData = new PureData(new List <DataElement> { new DataElement(new DateTime(2018, 2, 19), new[] { 1.1D, 2.1D, 3.1D, 4.1D, 5.1D }), new DataElement(new DateTime(2018, 2, 20), new[] { 1.2D, 2.2D, 3.2D, 4.2D, 5.2D }), new DataElement(new DateTime(2018, 2, 21), new[] { 1.3D, 2.3D, 3.3D, 4.3D, 5.3D }), new DataElement(new DateTime(2018, 2, 21), new[] { 1.4D, 2.4D, 3.4D, 4.4D, 5.4D }) }); var sut = new MovingAverage(2, pureData, StockIndex.Close); DataElement[] inputData = sut.CreateData().ToArray(); Assert.NotNull(inputData); Assert.AreEqual(3, inputData.Length); Assert.IsTrue(Math.Abs(2.15D - inputData[0].Values[0]) < 0.00000001); Assert.IsTrue(Math.Abs(2.25D - inputData[1].Values[0]) < 0.00000001); Assert.AreEqual(pureData.GetData()[1].Key, inputData[0].Key); Assert.AreEqual(pureData.GetData()[2].Key, inputData[1].Key); Assert.AreEqual(pureData.GetData()[3].Key, inputData[2].Key); }
public static void UpdateEma(Guid eventActionId) { using (var db = new PoloniexContext()) { var eventAction = db.EventActions.Include(x => x.MovingAverageEventAction).Single(x => x.EventActionId == eventActionId); var closingValue = db.CurrencyDataPoints .Where(x => x.CurrencyPair == eventAction.MovingAverageEventAction.CurrencyPair) .OrderByDescending(x => x.ClosingDateTime) .First(); var prevEma = db.MovingAverages .Where(x => x.MovingAverageType == eventAction.MovingAverageEventAction.MovingAverageType && x.CurrencyPair == eventAction.MovingAverageEventAction.CurrencyPair && x.Interval == eventAction.MovingAverageEventAction.Interval && x.MinutesPerInterval == eventAction.MovingAverageEventAction.MinutesPerInterval) .OrderByDescending(x => x.ClosingDateTime) .First(); // -15 seconds to account for timer skew if (closingValue.ClosingDateTime >= prevEma.ClosingDateTime.AddSeconds(-15).AddMinutes(prevEma.MinutesPerInterval)) { var curEma = new MovingAverage() { MovingAverageType = MovingAverageType.ExponentialMovingAverage, CurrencyPair = eventAction.MovingAverageEventAction.CurrencyPair, Interval = eventAction.MovingAverageEventAction.Interval, MinutesPerInterval = eventAction.MovingAverageEventAction.MinutesPerInterval, ClosingDateTime = DateTime.UtcNow, MovingAverageValue = MovingAverageCalculations.CalculateEma(closingValue.ClosingValue, prevEma.MovingAverageValue, eventAction.MovingAverageEventAction.Interval), LastClosingValue = closingValue.ClosingValue }; db.MovingAverages.Add(curEma); db.SaveChanges(); } } }
protected override void OnStart() { Print("Lot sizing rule: {0}", LotSizingRule); var symbolLeverage = Symbol.DynamicLeverage[0].Leverage; Print("Symbol leverage: {0}", symbolLeverage); var realLeverage = Math.Min(symbolLeverage, Account.PreciseLeverage); Print("Account leverage: {0}", Account.PreciseLeverage); Init(true, false, InitialStopLossRule, InitialStopLossInPips, TrailingStopLossRule, TrailingStopLossInPips, LotSizingRule, TakeProfitRule, 0, 0, false, false, DynamicRiskPercentage, 0); _atr = Indicators.AverageTrueRange(14, MovingAverageType.Exponential); _resistenceBreak = Indicators.GetIndicator <ResistenceBreak>(SourceSeries, SendEmailAlerts, PlayAlertSound, ShowMessage, SwingHighStrength); _minimumBuffer = Symbol.PipSize * 6; //_timeFrameInMinutes = GetTimeFrameInMinutes(); PendingOrders.Cancelled += OnPendingOrdersCancelled; _fastMA = Indicators.MovingAverage(SourceSeries, 21, MovingAverageType.Exponential); _mediumMA = Indicators.MovingAverage(SourceSeries, 55, MovingAverageType.Exponential); _slowMA = Indicators.MovingAverage(SourceSeries, 89, MovingAverageType.Simple); }
public SmoothMovAvgProFunctionChart(ChartView BaseChart) { candle = new Candle(); line = new Line(); lineSmooth = new Line(); movingAverageFunction = new MovingAverage(); smoothMovAvgFunction = new SmoothedMovAvgFunction(); var = new Variables.Variables(); Themes.CandleGodStyle(candle); BaseChart.Chart.Title.Text = "Smoothed Moving Average"; BaseChart.Chart.Axes.Left.Automatic = true; BaseChart.Chart.Axes.Left.Ticks.Transparency = 100; BaseChart.Chart.Axes.Bottom.Automatic = true; FillSampleValues(candle, 20); candle.Title = "Candle"; line.DataSource = candle; line.Color = var.GetPaletteBasic[2]; line.LinePen.Width = 3; line.Function = movingAverageFunction; line.Title = "Moving Average"; lineSmooth.DataSource = candle; lineSmooth.Function = smoothMovAvgFunction; lineSmooth.Color = var.GetPaletteBasic[3]; lineSmooth.LinePen.Width = 3; lineSmooth.Title = "Smooth Moving Average"; movingAverageFunction.Period = 3; smoothMovAvgFunction.Period = 3; BaseChart.Chart.Series.Add(candle); BaseChart.Chart.Series.Add(line); BaseChart.Chart.Series.Add(lineSmooth); }
public override void Run(IChart chart) { base.Run(chart); var movingAverage = new MovingAverage(chart, _period); var ema = movingAverage.EmaValue(); if (ema.Length == 0) { return; } if (_tradeManager.GetOrders(_magicNumber).Any()) { ClosePosition(ema); } if (!_tradeManager.GetOrders(_magicNumber).Any()) { OpenPosition(ema); } }
protected override void OnStart() { //挂单标签 labelPerfix = "TMSBot"; //市价单标签 scalePerfix = "scale"; //回测 if (IsBacktesting) { int backtestNum = new Random().Next(1, 10000); labelPerfix += " BT " + backtestNum; } if (scaleIn) { //写注册表 CreateSubKey(); if (motherClose) { Positions.Closed += OnPositionClose; } } //平均正确范围指标 atr = Indicators.AverageTrueRange(atrPeriod, MovingAverageType.Simple); //相对强度指数指标 _rsi = Indicators.RelativeStrengthIndex(Source, RsiPeriod); //布林带指标 _bollingerBands = Indicators.BollingerBands(_rsi.Result, Volatility, StDev, MovingAverageType.Simple); //移动平均线指标(RSI的平均线) _price = Indicators.MovingAverage(_rsi.Result, PricePeriod, PriceMaType); _signal = Indicators.MovingAverage(_rsi.Result, SignalPeriod, SignalMaType); //随机振荡器指标 stochastic = Indicators.StochasticOscillator(kPeriods, kSlowing, dPeriods, stMaType); //自定义指标 heikenAshi = Indicators.GetIndicator <HeikenAshi>(HeikenPeriod); }
protected override void Init() { PrintEx(string.Format("Starting {2} on account: {0}, comment: {1}, date: {3}", this.Account.Number, "Started!", "PavrykTSv1", DateTime.Now)); _barSeries = GetCustomSeries(Instrument.Id, _period); _PivotBarSeries = GetCustomSeries(Instrument.Id, _pivotPeriod); /// Fisher activation FTOind = GetIndicator <FisherTransformOscillator>( Instrument.Id, _period, FisherPeriod, FisherMa1Period, FisherMa1Method, FisherMa2Period, FisherMa2Method); /// MA5 activation MA5ind = GetIndicator <MovingAverage>( Instrument.Id, _period, MA5period, MA5offset, MA5method, MA5applyto); /// MA24 activation MA24ind = GetIndicator <MovingAverage>( Instrument.Id, _period, MA24period, MA24offset, MA24method, MA24applyto); /// Pivot activation Pivind = GetIndicator <Pivot>( Instrument.Id, _period); }
protected override void Init() { vect = CreateSeries <double>(); trend = CreateSeries <double>(); p = (int)Math.Sqrt(period); ma1 = GetInvisibleIndicator <MovingAverage>( Instrument.Id, Timeframe, period, 0, method, price ); ma2 = GetInvisibleIndicator <MovingAverage>( Instrument.Id, Timeframe, (int)period / 2, 0, method, price ); }
/// <summary> /// Initialize tracking system. Called once on game startup. /// </summary> void Start() { av = new MovingAverage(averagingSamples, logTrackingData); disList.Add(av); var logPath = Path.Combine(Application.dataPath, "Logs"); // Create Logger nLog = new NamedLogger( new Dictionary <string, string> { { "rAngle", "rAngle" }, { "lAngle", "lAngle" }, { "rElev", "rElev" }, { "rHorizX", "rHorizX" }, { "rHorizZ", "rHorizZ" } }, logTrackingData, logPath); // Add logger to list of objects to dispose of disList.Add(nLog); sk = new Skelly(maxJointVelocity, true); }
public Storog(string name, StartProgram startProgram) : base(name, startProgram) // конструктор робота тут { TabCreate(BotTabType.Simple); // создание простой вкладки _tab = TabsSimple[0]; // записываем первую вкладку в поле // инициализация переменных и параметров price = 1; _kom = 0; zakritie = 0; //последняя позиция закрылась по цене vkl_Robota = CreateParameter("РОБОТ Включен?", false); vkl_stopa = CreateParameter("Стоп Включен?", true); do_stopa = CreateParameter(" РАСТ. до СТОПА", 10m, 5m, 100m, 5m); _uroven = CreateParameter("УРОВЕНЬ Работы", 10000m, 100m, 1000m, 50m); slippage = CreateParameter("Велич. проскаль.у ордеров", 1m, 1m, 50m, 5m); part_tovara = CreateParameter("ИСПОЛЬЗ Товара Часть(1/?)", 2, 2, 50, 1); do_piram = CreateParameter(" РАСТ. до Пирамиды", 10m, 5m, 100m, 5m); profit = CreateParameter("ПРОФИТ от рынка На ", 3, 5, 200, 5); dvig = CreateParameter("Движение верх забрать ", 130, 5, 200, 5); ot_rinka = CreateParameter(" Держаться от рынка", 110, 10, 150, 10); //part_depo = CreateParameter("ИСПОЛЬЗ Часть ДЕПО(1/?)", 10, 2, 50, 1); komis_birgi = CreateParameter("КОМ биржи в %", 0.2m, 0, 0.1m, 0.1m); min_lot = CreateParameter("МИН объ.орд у биржи(базовой)", 0.001m, 0.001m, 0.05m, 0.001m); vel_ma = CreateParameter("MA", 2, 3, 50, 1); // записываем в переменную параметры // создание и инициализация индикатора МА _ma = new MovingAverage(name + "Ma", true); _ma = (MovingAverage)_tab.CreateCandleIndicator(_ma, "Prime"); _ma.Lenght = vel_ma.ValueInt; // присвоение значения _ma.Save(); _tab.CandleFinishedEvent += _tab_CandleFinishedEvent; // подписались на событие завершения новой свечи _tab.NewTickEvent += _tab_NewTickEvent; // тики _tab.MarketDepthUpdateEvent += _tab_MarketDepthUpdateEvent; // событие пришел стакан _tab.PositionOpeningSuccesEvent += _tab_PositionOpeningSuccesEvent; // событие успешного открытия позиции _tab.PositionClosingSuccesEvent += _tab_PositionClosingSuccesEvent; // событие успешного закрытия позиции }
protected override void Initialize() { // Calculate TDI components _rsi = Indicators.RelativeStrengthIndex(Source, RsiPeriod); _bollingerBands = Indicators.BollingerBands(_rsi.Result, Volatility, StDev, MovingAverageType.Simple); _price = Indicators.MovingAverage(_rsi.Result, PricePeriod, PriceMaType); _signal = Indicators.MovingAverage(_rsi.Result, SignalPeriod, SignalMaType); // colorize Lines ChartObjects.DrawHorizontalLine("68", 68, Colors.Red, 1, LineStyle.Lines); ChartObjects.DrawHorizontalLine("63", 63, Colors.OrangeRed, 1, LineStyle.Lines); ChartObjects.DrawHorizontalLine("50", 50, Colors.Orange, 1, LineStyle.Solid); ChartObjects.DrawHorizontalLine("37", 37, Colors.PaleGreen, 1, LineStyle.Lines); ChartObjects.DrawHorizontalLine("32", 32, Colors.LimeGreen, 1, LineStyle.Lines); // Elders Impulse if (enable_EldersImpulse) { EMA = Indicators.ExponentialMovingAverage(MarketSeries.Close, EMAPeriod); Mac = Indicators.MacdHistogram(LongCycle, ShrtCycle, Signal); } // graphic objects arrowOffset = Symbol.PipSize * 5; }
///<summary> /// Stochastic Momentum Index ///</summary> ///<param name="pNav">Navigator</param> ///<param name="pOHLCV">OHLCV Recordser</param> ///<param name="KPeriods">K Periods</param> ///<param name="KSmooth">K Smooth</param> ///<param name="KDoubleSmooth">K Double Smooth</param> ///<param name="DPeriods">D Periods</param> ///<param name="MAType">Moving Average Type</param> ///<param name="PctD_MAType">%D Movering Average Type</param> ///<returns>Recordset</returns> public Recordset StochasticMomentumIndex(Navigator pNav, Recordset pOHLCV, int KPeriods, int KSmooth, int KDoubleSmooth, int DPeriods, IndicatorType MAType, IndicatorType PctD_MAType) { MovingAverage MA = new MovingAverage(); Recordset Results = new Recordset(); General GN = new General(); int Record; double? Value = 0; KSmooth += 1; int RecordCount = pNav.RecordCount; Field Field1 = new Field(RecordCount, "%K"); Recordset Temp = GN.HHV(pNav, pOHLCV.GetField("High"), KPeriods, "HHV"); Field HHV = new Field(RecordCount, "HHV"); Temp.CopyField(HHV, "HHV"); Temp = GN.LLV(pNav, pOHLCV.GetField("Low"), KPeriods, "LLV"); Field LLV = new Field(RecordCount, "LLV"); Temp.CopyField(LLV, "LLV"); Field HHLL = new Field(RecordCount, "HHLL"); for (Record = 1; Record != RecordCount + 1; ++Record) { Value = HHV.Value(Record) - LLV.Value(Record); HHLL.Value(Record, Value); } Field CHHLL = new Field(RecordCount, "CHHLL"); for (Record = 1; Record != RecordCount + 1; ++Record) { Value = pOHLCV.Value("Close", Record) - (0.5f * (HHV.Value(Record) + LLV.Value(Record))); CHHLL.Value(Record, Value); } if (KSmooth > 1) { switch (MAType) { case IndicatorType.SimpleMovingAverage: Temp = MA.SimpleMovingAverage(pNav, CHHLL, KSmooth, "CHHLL"); break; case IndicatorType.ExponentialMovingAverage: Temp = MA.ExponentialMovingAverage(pNav, CHHLL, KSmooth, "CHHLL"); break; case IndicatorType.TimeSeriesMovingAverage: Temp = MA.TimeSeriesMovingAverage(pNav, CHHLL, KSmooth, "CHHLL"); break; case IndicatorType.TriangularMovingAverage: Temp = MA.TriangularMovingAverage(pNav, CHHLL, KSmooth, "CHHLL"); break; case IndicatorType.VariableMovingAverage: Temp = MA.VariableMovingAverage(pNav, CHHLL, KSmooth, "CHHLL"); break; case IndicatorType.WeightedMovingAverage: Temp = MA.WeightedMovingAverage(pNav, CHHLL, KSmooth, "CHHLL"); break; case IndicatorType.VIDYA: Temp = MA.VIDYA(pNav, CHHLL, KSmooth, 0.65, "CHHLL"); break; } Temp.CopyField(CHHLL, "CHHLL"); } if (KDoubleSmooth > 1) { switch (MAType) { case IndicatorType.SimpleMovingAverage: Temp = MA.SimpleMovingAverage(pNav, CHHLL, KDoubleSmooth, "CHHLL"); break; case IndicatorType.ExponentialMovingAverage: Temp = MA.ExponentialMovingAverage(pNav, CHHLL, KDoubleSmooth, "CHHLL"); break; case IndicatorType.TimeSeriesMovingAverage: Temp = MA.TimeSeriesMovingAverage(pNav, CHHLL, KDoubleSmooth, "CHHLL"); break; case IndicatorType.TriangularMovingAverage: Temp = MA.TriangularMovingAverage(pNav, CHHLL, KDoubleSmooth, "CHHLL"); break; case IndicatorType.VariableMovingAverage: Temp = MA.VariableMovingAverage(pNav, CHHLL, KDoubleSmooth, "CHHLL"); break; case IndicatorType.WeightedMovingAverage: Temp = MA.WeightedMovingAverage(pNav, CHHLL, KDoubleSmooth, "CHHLL"); break; case IndicatorType.VIDYA: Temp = MA.VIDYA(pNav, CHHLL, KDoubleSmooth, 0.65, "CHHLL"); break; } Temp.CopyField(CHHLL, "CHHLL"); } if (KSmooth > 1) { switch (MAType) { case IndicatorType.SimpleMovingAverage: Temp = MA.SimpleMovingAverage(pNav, HHLL, KSmooth, "HHLL"); break; case IndicatorType.ExponentialMovingAverage: Temp = MA.ExponentialMovingAverage(pNav, HHLL, KSmooth, "HHLL"); break; case IndicatorType.TimeSeriesMovingAverage: Temp = MA.TimeSeriesMovingAverage(pNav, HHLL, KSmooth, "HHLL"); break; case IndicatorType.TriangularMovingAverage: Temp = MA.TriangularMovingAverage(pNav, HHLL, KSmooth, "HHLL"); break; case IndicatorType.VariableMovingAverage: Temp = MA.VariableMovingAverage(pNav, HHLL, KSmooth, "HHLL"); break; case IndicatorType.WeightedMovingAverage: Temp = MA.WeightedMovingAverage(pNav, HHLL, KSmooth, "HHLL"); break; case IndicatorType.VIDYA: Temp = MA.VIDYA(pNav, HHLL, KSmooth, 0.65, "HHLL"); break; } Temp.CopyField(HHLL, "HHLL"); } if (KDoubleSmooth > 1) { switch (MAType) { case IndicatorType.SimpleMovingAverage: Temp = MA.SimpleMovingAverage(pNav, HHLL, KDoubleSmooth, "HHLL"); break; case IndicatorType.ExponentialMovingAverage: Temp = MA.ExponentialMovingAverage(pNav, HHLL, KDoubleSmooth, "HHLL"); break; case IndicatorType.TimeSeriesMovingAverage: Temp = MA.TimeSeriesMovingAverage(pNav, HHLL, KDoubleSmooth, "HHLL"); break; case IndicatorType.TriangularMovingAverage: Temp = MA.TriangularMovingAverage(pNav, HHLL, KDoubleSmooth, "HHLL"); break; case IndicatorType.VariableMovingAverage: Temp = MA.VariableMovingAverage(pNav, HHLL, KDoubleSmooth, "HHLL"); break; case IndicatorType.WeightedMovingAverage: Temp = MA.WeightedMovingAverage(pNav, HHLL, KDoubleSmooth, "HHLL"); break; case IndicatorType.VIDYA: Temp = MA.VIDYA(pNav, HHLL, KDoubleSmooth, 0.65, "HHLL"); break; } Temp.CopyField(HHLL, "HHLL"); } for (Record = KPeriods + 1; Record != RecordCount + 1; ++Record) { double?a = CHHLL.Value(Record); double?b = (0.5f * HHLL.Value(Record)); if (a != b && b != 0) { Value = 100.0f * (a / b); } Field1.Value(Record, Value); } if (DPeriods > 1) { switch (PctD_MAType) { case IndicatorType.SimpleMovingAverage: Temp = MA.SimpleMovingAverage(pNav, Field1, DPeriods, "%D"); break; case IndicatorType.ExponentialMovingAverage: Temp = MA.ExponentialMovingAverage(pNav, Field1, DPeriods, "%D"); break; case IndicatorType.TimeSeriesMovingAverage: Temp = MA.TimeSeriesMovingAverage(pNav, Field1, DPeriods, "%D"); break; case IndicatorType.TriangularMovingAverage: Temp = MA.TriangularMovingAverage(pNav, Field1, DPeriods, "%D"); break; case IndicatorType.VariableMovingAverage: Temp = MA.VariableMovingAverage(pNav, Field1, DPeriods, "%D"); break; case IndicatorType.WeightedMovingAverage: Temp = MA.WeightedMovingAverage(pNav, Field1, DPeriods, "%D"); break; case IndicatorType.VIDYA: Temp = MA.VIDYA(pNav, Field1, DPeriods, 0.65, "%D"); break; } Field Field2 = new Field(RecordCount, "%D"); Temp.CopyField(Field2, "%D"); Results.AddField(Field2); } Results.AddField(Field1); return(Results); }
protected override void Initialize() { movingAverage = Indicators.MovingAverage(Source, Periods, MAType); }
protected override void OnStart() { fastMa = Indicators.MovingAverage(SourceSeries, FastPeriods, MAType); slowMa = Indicators.MovingAverage(SourceSeries, SlowPeriods, MAType); }
protected override void Initialize() { ma = Indicators.MovingAverage(SpreadResult, SpreadMAPeriod, SpreadMaType); }
protected override void Initialize() { atr = CreateDataSeries(); tri = Indicators.TrueRange(); expo = Indicators.MovingAverage(MarketSeries.Close, KeltnerPeriod, matype); }
protected override void Initialize() { _ma = Indicators.MovingAverage(Source, MaPeriod, MAType); }
public void AddMATrendTester(int leadN, int baseN) { _bMATrendTester = true; _leadingMA = new MovingAverage(leadN); _baseMA = new MovingAverage(baseN); }
protected override void OnStart() { _slowMa = Indicators.MovingAverage(SourceSeries, SlowPeriods, MAType); }
//================================================================================ // ON START //================================================================================ protected override void OnStart() { Positions.Closed += OnPositionsClosed; // ExecuteOrder(InitialVolume, GetRandomTradeType()); foreach (var position in Account.Positions) { if (position.TradeType == TradeType.Buy) { Trade.CreateSellMarketOrder(Symbol, Volume); break; // optional break to hedge only one position } else { Trade.CreateBuyMarketOrder(Symbol, Volume); break; // optional break to hedge only one position } } Positions.Closed += OnPositionsClosed; _fastMa = Indicators.MovingAverage(SourceSeries, FastPeriods, MAType); _slowMa = Indicators.MovingAverage(SourceSeries, SlowPeriods, MAType); Positions.Opened += PositionsOnOpened; Positions.Closed += PositionsOnClosed; }
public EyeData(int len) { xavg = new MovingAverage(len); yavg = new MovingAverage(len); }
private async void ModUpdateProgress_Shown(object sender, EventArgs e) { var averageDownloadSpeed = new MovingAverage(20); var downloadStartTime = DateTime.MinValue; try { #region Initialize UI progressBar1.Style = ProgressBarStyle.Marquee; progressBar1.Value = 0; progressBar1.Maximum = 1; labelPercent.Text = ""; checkBoxSleep.Enabled = false; var random = new Random(); if (random.Next(0, 10) >= 8) { var offset = random.Next(20, 80); var offsetStr = new string(Enumerable.Repeat(' ', offset).ToArray()); labelPercent.Text = offsetStr + " ( ) ( )\n"; labelPercent.Text += offsetStr + "( o . o)"; } olvColumnProgress.Renderer = new BarRenderer(0, 100); olvColumnProgress.AspectGetter = rowObject => (int)Math.Round(((UpdateDownloadItem)rowObject).FinishPercent); olvColumnSize.AspectGetter = rowObject => ((UpdateDownloadItem)rowObject).TotalSize; //olvColumnDownloaded.AspectGetter = rowObject => ((UpdateDownloadItem)rowObject).GetDownloadedSize(); olvColumnStatus.AspectGetter = rowObject => { var item = (UpdateDownloadItem)rowObject; return(item.Exceptions.Count == 0 ? item.Status.ToString() : item.Status + " - " + string.Join("; ", item.Exceptions.Select(x => x.Message))); }; olvColumnName.AspectGetter = rowObject => ((UpdateDownloadItem)rowObject).DownloadPath.Name; olvColumnNo.AspectGetter = rowObject => ((UpdateDownloadItem)rowObject).Order; fastObjectListView1.PrimarySortColumn = olvColumnStatus; fastObjectListView1.SecondarySortColumn = olvColumnNo; fastObjectListView1.Sorting = SortOrder.Ascending; fastObjectListView1.PrimarySortOrder = SortOrder.Ascending; fastObjectListView1.SecondarySortOrder = SortOrder.Ascending; fastObjectListView1.ShowSortIndicators = true; fastObjectListView1.Sort(); fastObjectListView1.ShowSortIndicator(); _overallSize = _completedSize = FileSize.Empty; #endregion SetStatus("Preparing..."); if (await ProcessWaiter.CheckForProcessesBlockingKoiDir() == false) { throw new OperationCanceledException(); } #region Find and select updates SetStatus("Searching for mod updates..."); labelPercent.Text = "Please wait, this might take a couple of minutes."; var updateTasks = await UpdateSourceManager.GetUpdates(_cancelToken.Token, _updaters, _autoInstallGuids); _cancelToken.Token.ThrowIfCancellationRequested(); progressBar1.Style = ProgressBarStyle.Blocks; if (updateTasks.All(x => x.UpToDate)) { SetStatus("Everything is up to date!"); progressBar1.Value = progressBar1.Maximum; _cancelToken.Cancel(); return; } var isAutoInstall = _autoInstallGuids != null && _autoInstallGuids.Length > 0; if (!isAutoInstall) { SetStatus($"Found {updateTasks.Count} updates, waiting for user confirmation."); updateTasks = ModUpdateSelectDialog.ShowWindow(this, updateTasks); } else { var skipped = updateTasks.RemoveAll(x => x.UpToDate); SetStatus($"Found {updateTasks.Count} update tasks in silent mode, {skipped} are already up-to-date.", true, true); } if (updateTasks == null) { throw new OperationCanceledException(); } #endregion SleepControls.PreventSleepOrShutdown(Handle, "Update is in progress"); #region Set up update downloader and start downloading downloadStartTime = DateTime.Now; var downloader = UpdateDownloadCoordinator.Create(updateTasks); var downloadItems = downloader.UpdateItems; SetStatus($"{downloadItems.Count(items => items.DownloadSources.Count > 1)} out of {downloadItems.Count} items have more than 1 source", false, true); fastObjectListView1.Objects = downloadItems; progressBar1.Maximum = 1000; progressBar1.Value = 0; checkBoxSleep.Enabled = true; _overallSize = FileSize.SumFileSizes(downloadItems.Select(x => x.TotalSize)); var lastCompletedSize = FileSize.Empty; updateTimer.Tick += (o, args) => { var itemCount = fastObjectListView1.GetItemCount(); if (itemCount > 0) { fastObjectListView1.BeginUpdate(); fastObjectListView1.RedrawItems(0, itemCount - 1, true); // Needed if user changes sorting column //fastObjectListView1.SecondarySortColumn = olvColumnNo; fastObjectListView1.Sort(); fastObjectListView1.EndUpdate(); } _completedSize = FileSize.SumFileSizes(downloadItems.Select(x => x.GetDownloadedSize())); var totalPercent = (double)_completedSize.GetKbSize() / (double)_overallSize.GetKbSize() * 100d; if (double.IsNaN(totalPercent)) { totalPercent = 0; } // Download speed calc var secondsPassed = updateTimer.Interval / 1000d; var downloadedSinceLast = FileSize.FromKilobytes((long)((_completedSize - lastCompletedSize).GetKbSize() / secondsPassed)); lastCompletedSize = _completedSize; averageDownloadSpeed.Sample(downloadedSinceLast.GetKbSize()); var etaSeconds = (_overallSize - _completedSize).GetKbSize() / (double)averageDownloadSpeed.GetAverage(); var eta = double.IsNaN(etaSeconds) || etaSeconds <0 || etaSeconds> TimeSpan.MaxValue.TotalSeconds ? "Unknown" : TimeSpan.FromSeconds(etaSeconds).GetReadableTimespan(); labelPercent.Text = $"Overall: {totalPercent:F1}% done ({_completedSize} out of {_overallSize})\r\n" + $"Speed: {downloadedSinceLast}/s (ETA: {eta})"; //$"Speed: {downloadedSinceLast:F1}KB/s"; progressBar1.Value = Math.Min((int)Math.Round(totalPercent * 10), progressBar1.Maximum); }; updateTimer.Start(); SetStatus("Downloading updates...", true, true); await downloader.RunUpdate(_cancelToken.Token); _cancelToken.Token.ThrowIfCancellationRequested(); #endregion #region Show finish messages var failedItems = downloadItems.Where(x => x.Status == UpdateDownloadStatus.Failed).ToList(); var unfinishedCount = downloadItems.Count(x => x.Status != UpdateDownloadStatus.Finished); var s = $"Successfully updated/removed {downloadItems.Count - unfinishedCount} files from {updateTasks.Count} tasks."; if (failedItems.Any()) { s += $"\nFailed to update {failedItems.Count} files because some sources crashed. Check log for details."; } SetStatus(s, true, true); updateTimer.Stop(); progressBar1.Value = progressBar1.Maximum; labelPercent.Text = ""; if (failedItems.Any(x => x.Exceptions.Count > 0)) { var exceptionMessages = failedItems .SelectMany(x => x.Exceptions) .Where(y => !(y is DownloadSourceCrashedException)) // Deal with wrapped exceptions .Select(y => y.Message.Contains("InnerException") && y.InnerException != null ? y.InnerException.Message : y.Message) .Distinct(); var failDetails = "Reason(s) for failing:\n" + string.Join("\n", exceptionMessages); Console.WriteLine(failDetails); s += " " + failDetails; } // Sleep before showing a messagebox since the box will block until user clicks ok SleepIfNecessary(); MessageBox.Show(s, "Finished updating", MessageBoxButtons.OK, MessageBoxIcon.Information); #endregion } catch (OutdatedVersionException ex) { SetStatus("KK Manager needs to be updated to get updates.", true, true); ex.ShowKkmanOutdatedMessage(); } catch (OperationCanceledException) { SetStatus("Update was cancelled by the user.", true, true); } catch (Exception ex) { var exceptions = ex is AggregateException aex?aex.Flatten().InnerExceptions : (ICollection <Exception>) new[] { ex }; if (!exceptions.Any(x => x is OperationCanceledException)) { SleepIfNecessary(); } SetStatus("Unexpected crash while updating mods, aborting.", true, true); SetStatus(string.Join("\n---\n", exceptions), false, true); MessageBox.Show("Something unexpected happened and the update could not be completed. Make sure that your internet connection is stable, " + "and that you did not hit your download limits, then try again.\n\nError message (check log for more):\n" + string.Join("\n", exceptions.Select(x => x.Message)), "Update failed", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { updateTimer.Stop(); checkBoxSleep.Enabled = false; fastObjectListView1.EmptyListMsg = "Nothing was downloaded"; _cancelToken.Cancel(); labelPercent.Text = ""; if (_completedSize != FileSize.Empty) { labelPercent.Text += $"Downloaded {_completedSize} out of {_overallSize}"; if (downloadStartTime != DateTime.MinValue) { var timeSpent = DateTime.Now - downloadStartTime; labelPercent.Text += $" in {timeSpent.GetReadableTimespan()}"; } labelPercent.Text += "\n"; } var averageDlSpeed = averageDownloadSpeed.GetAverage(); if (averageDlSpeed > 0) { labelPercent.Text += $"Average download speed: {new FileSize(averageDlSpeed)}/s"; } progressBar1.Style = ProgressBarStyle.Blocks; button1.Enabled = true; button1.Text = "OK"; if (_autoInstallGuids != null && _autoInstallGuids.Length > 0) { Close(); } SleepControls.AllowSleepOrShutdown(Handle); } }
public CompositeIndicator(/* your parameters here */) { _ma = new MovingAverage(); }
protected override void Initialize() { obv = Indicators.OnBalanceVolume(Bars.ClosePrices); ma = Indicators.MovingAverage(OBV, Period, MAType); }
protected override void Initialize() { _typicalPrice = CreateDataSeries(); _highLowRange = CreateDataSeries(); _ma = Indicators.MovingAverage(_typicalPrice, MaPeriod, MaType); _maBands = Indicators.MovingAverage(_highLowRange, MaPeriod, MaType); }