public override TimeBaseValue Calculate(int forIndex) { CheckCreateMaIndicator(); DateTime dt = GetTime(forIndex); if (forIndex < Length) { IndicatorValue nullValue = new IndicatorValue() { Time = dt, Value = double.NaN, Source = GetValueBySource(forIndex) }; ResultCore.Add(nullValue); IndicatorValue val = (IndicatorValue)MaIndicator.Calculate(forIndex); MaIndicator.Result.Add(val); return(nullValue); } double tr = CalculateCore(forIndex); IndicatorValue value = new IndicatorValue() { Time = dt, Value = tr, Source = GetValueBySource(forIndex) }; ResultCore.Add(value); IndicatorValue signal = (IndicatorValue)MaIndicator.Calculate(forIndex); MaIndicator.Result.Add(signal); return(signal); }
void CheckCreateMaIndicator() { if (MaIndicator == null) { MaIndicator = new MaIndicator() { InputData = ResultCore, Length = Length, SuppressUpdateOnDataChanged = true } } ; }
public override void OnUpdateValue(int index) { base.OnUpdateValue(index); if (index < Length) { return; } double value = CalculateCore(index); ((IndicatorValue)ResultCore[index]).Value = value; IndicatorValue signal = (IndicatorValue)MaIndicator.Calculate(index); ((IndicatorValue)MaIndicator.Result[index]).Value = signal.Value; Result[index].Value = signal.Value; }
public override void Calculate() { Result.Clear(); HistorySig.Clear(); if (Ticker == null) { return; } EmaIndicator emaFast = new EmaIndicator() { Ticker = Ticker, Length = FastLength, SuppressUpdateOnDataChanged = true }; EmaIndicator emaSlow = new EmaIndicator() { Ticker = Ticker, Length = SlowLength, SuppressUpdateOnDataChanged = true }; emaFast.Calculate(); emaSlow.Calculate(); for (int i = 0; i < Ticker.CandleStickData.Count; i++) { DateTime time = Ticker.CandleStickData[i].Time; if (i < SlowLength) { Result.Add(new IndicatorValue() { Time = time, Value = double.NaN, Source = GetValueBySource(i) }); continue; } Result.Add(new IndicatorValue() { Time = time, Value = ((IndicatorValue)emaFast.Result[i]).Value - ((IndicatorValue)emaSlow.Result[i]).Value, Source = GetValueBySource(i) }); } MaIndicator ma = new MaIndicator() { Length = Length, InputData = Result, SuppressUpdateOnDataChanged = true }; ma.Calculate(); FastEmaIndicator = emaFast; SlowEmaIndicator = emaSlow; SignalMaIndicator = ma; }
public override void Calculate() { MinIndicator = new MinMaxIndicator() { Ticker = Ticker, Length = Length, Mode = MinMaxIndicatorMode.Min, SuppressUpdateOnDataChanged = true }; MaxIndicator = new MinMaxIndicator() { Ticker = Ticker, Length = Length, Mode = MinMaxIndicatorMode.Max, SuppressUpdateOnDataChanged = true }; MaIndicator = new MaIndicator() { InputData = Result, Length = Length, Source = IndicatorSource.StochK, SuppressUpdateOnDataChanged = true }; base.Calculate(); }
protected void CheckCreateInnerIndicators() { if (FastEmaIndicator != null) { return; } EmaIndicator emaFast = new EmaIndicator() { Ticker = Ticker, Length = FastLength, SuppressUpdateOnDataChanged = true }; EmaIndicator emaSlow = new EmaIndicator() { Ticker = Ticker, Length = SlowLength, SuppressUpdateOnDataChanged = true }; MaIndicator ma = new MaIndicator() { Length = Length, InputData = Result, SuppressUpdateOnDataChanged = true }; FastEmaIndicator = emaFast; SlowEmaIndicator = emaSlow; SignalMaIndicator = ma; }