public virtual void AnalyseResult(IInstrument instrument, DateTime startTime, DateTime endTime, MarketDataGrade?grade) { ReferenceValueList.Clear(); IsAnalyse = true; var g = MarketDataGrade.FiveMinutes; if (grade != null) { g = grade.Value; } AnalyseDataSource.PrepareCache(instrument, startTime, endTime, g); for (var time = startTime; time <= endTime; time = MarketData.GetNextTime(time, grade.Value)) { ISignal d = null; try { d = Calculate(instrument, startTime, time, grade); } catch { } if (d != null) { AddReference(Name, new TimeValueObject() { TargetName = instrument.Ticker, Time = d.Time, Value = d.Value, Name = instrument.Name }); } } IsAnalyse = false; }
public virtual void GenerateResult(IInstrument instrument, DateTime startTime, DateTime endTime, MarketDataGrade?grade) { if (IsAnalyse) { ReferenceValueList.Clear(); } var d = Calculate(instrument, startTime, endTime, grade); if (d != null) { if (string.IsNullOrEmpty(d.Name)) { d.Name = Name; } d.Owner = Name; var vl = _ResultList.Where(r => r.Time == d.Time).OrderBy(r => r.Value).ToList(); if (vl.Count > 0 && vl.Count > MaxResultCount) { if (isSignalBiggerMeansBetter) { var v = vl.FirstOrDefault(); _ResultList.Remove(v); } else { var v = vl.LastOrDefault(); _ResultList.Remove(v); } } _ResultList.Add(d); //AddToCalculate(instrument, d.DoubleValue); //RefreshResult(); } }