protected override IndicatorResult CalculateResult(IIndicatorContext context) { var worker = new Worker(this, context); var result = worker.Calculate(); return(result); }
private IndicatorResult GenerateMissingDataResult(IIndicatorContext context) { var result = new IndicatorResult(Name, context.Stock, Signal.None); result.Report = new MissingDataReport(Name); return(result); }
public override IndicatorResult Calculate(IIndicatorContext context) { if (!IsEnoughDataAvailable(context)) { return(GenerateMissingDataResult(context)); } return(CalculateResult(context)); }
public override IndicatorResult Calculate(IIndicatorContext context) { var result = new CombinedIndicatorResult(this, context.Stock); foreach (var indicator in myIndicators) { var r = indicator.Calculate(context); result.AddResult(r); } result.Close(); return(result); }
public override IndicatorResult Calculate( IIndicatorContext context ) { var result = new CombinedIndicatorResult( this, context.Stock ); foreach ( var indicator in myIndicators ) { var r = indicator.Calculate( context ); result.AddResult( r ); } result.Close(); return result; }
protected override bool IsEnoughDataAvailable(IIndicatorContext context) { if (!base.IsEnoughDataAvailable(context)) { return(false); } var prices = Prices.ForStock(context.Stock); if (!ShortTerm.ContainsEnoughData(prices) || !LongTerm.ContainsEnoughData(prices)) { // really too few data to calculate anything return(false); } return(true); }
protected virtual bool IsEnoughDataAvailable(IIndicatorContext context) { var prices = Prices.ForStock(context.Stock); if (!prices.Any()) { return(false); } if (prices.Last().Time < context.DateUnderAnalysis && !context.GenerateHistoricSignals) { // we should only generate signals for DUA but there is no data available for it return(false); } return(true); }
protected override bool IsEnoughDataAvailable(IIndicatorContext context) { if (!base.IsEnoughDataAvailable(context)) { return(false); } var calculator = context.CalculatorFactory.Create("sma", NumDays); var prices = Prices.ForStock(context.Stock); if (!calculator.ContainsEnoughData(prices)) { // really too few data to calculate anything return(false); } return(true); }
public override IndicatorResult Calculate( IIndicatorContext context ) { return new IndicatorResult( Name, context.Stock, new NeutralSignal( 50 ) ); }
public IndicatorResult Calculate( IIndicatorContext context ) { var result = myIndicator.Calculate( context ); return new WeightedIndicatorResult( this, result ); }
public abstract IndicatorResult Calculate( IIndicatorContext context );
public IndicatorResult Calculate(IIndicatorContext context) { var result = myIndicator.Calculate(context); return(new WeightedIndicatorResult(this, result)); }
public abstract IndicatorResult Calculate(IIndicatorContext context);
public override IndicatorResult Calculate(IIndicatorContext context) { return(new IndicatorResult(Name, context.Stock, new NeutralSignal(50))); }
public Worker(DoubleCrossover indicator, IIndicatorContext context) : base(indicator, context) { }
protected WorkerBase(TIndicator indicator, IIndicatorContext context) { Indicator = indicator; Context = context; }
protected abstract IndicatorResult CalculateResult(IIndicatorContext context);
public Worker(SimpleMovingAverage indicator, IIndicatorContext context) : base(indicator, context) { }