Example #1
0
        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();
            }
        }
Example #2
0
        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;
        }
Example #3
0
        protected void AddReference(string name, TimeValueObject value)
        {
            if (!ReferenceValueList.ContainsKey(name))
            {
                ReferenceValueList.Add(name, new List <TimeValueObject>());
            }
            var l   = ReferenceValueList[name];
            var obj = l.FirstOrDefault(v => v.Time == value.Time && v.TargetName == value.TargetName);

            if (obj != null)
            {
                l.Remove(obj);
            }
            l.Add(value);
        }