Пример #1
0
        public override object Clone()
        {
            var p = new BacktestingProject()
            {
                Name              = Name,
                Memo              = Memo,
                IsUnlimited       = IsUnlimited,
                AnalyseGrade      = AnalyseGrade,
                AnalyseStartTime  = AnalyseStartTime,
                CurrentDataSource = CurrentDataSource.Clone() as IDataSource,
                CurrentTradeGate  = CurrentTradeGate,
                Fine              = Fine,
                Grade             = Grade,
                ProjectStartTime  = ProjectStartTime,
                RiskPolicy        = RiskPolicy.Clone() as IRiskControl,
                Status            = Status,
                TargetPortfolio   = TargetPortfolio.Clone() as IPortfolio,
                TestStrategy      = TestStrategy.Clone() as IStrategy,
                TestCurrentTime   = TestCurrentTime,
                TestEndTime       = TestEndTime,
                TestStartTime     = TestStartTime,
                TestStepDelayMS   = TestStepDelayMS,
            };

            ConditionList.ForEach(v => p.ConditionList.Add(v.Clone() as ICondition));
            InstrumentList.ForEach(v => p.InstrumentList.Add(v.Clone() as IInstrument));

            return(p);
        }
Пример #2
0
        public override object Clone()
        {
            var p = new AnalyseProject()
            {
                AnalyseEndTime      = AnalyseEndTime,
                AnalyseStartTime    = AnalyseStartTime,
                ProjectStartTime    = ProjectStartTime,
                CurrentDataSource   = CurrentDataSource.Clone() as IDataSource,
                DefaultFilterNumber = DefaultFilterNumber,
                Fine            = Fine,
                Grade           = Grade,
                Memo            = Memo,
                Name            = Name,
                TestStepDelayMS = TestStepDelayMS,
                Status          = Status
            };

            InstrumentList.ForEach(v => p.InstrumentList.Add(v.Clone() as IInstrument));
            ResultList.ForEach(v => p.ResultList.Add(v.Clone() as IInstrument));
            BlockList.ForEach(v => p.BlockList.Add(v.Clone() as IInstrument));
            ConditionList.ForEach(v => p.ConditionList.Add(v.Clone() as ICondition));
            PredicateList.ForEach(v => p.PredicateList.Add(v.Clone() as ICondition));

            return(p);
        }
Пример #3
0
        //相邻的三元组
        public Dictionary <string, List <Tuple <double, double, double> > > Get3DCurve()
        {
            var r = new Dictionary <string, List <Tuple <double, double, double> > >();

            InstrumentList.ForEach(v =>
            {
                var l = Get3DCurve(v);
                r.Add(v.Name, l);
            });
            return(r);
        }
Пример #4
0
        //得到序列里面所有差值的分布
        public Dictionary <string, Tuple <List <Tuple <double, double> >, List <Tuple <double, double> > > > GetDimentionAnalyse(int n = 20)
        {
            var r = new Dictionary <string, Tuple <List <Tuple <double, double> >, List <Tuple <double, double> > > >();

            InstrumentList.ForEach(v =>
            {
                var l  = GetDimentionAnalyse(v, false, n);
                var al = GetDimentionAnalyse(v, true, n);
                r.Add(v.Name, new Tuple <List <Tuple <double, double> >, List <Tuple <double, double> > >(l, al));
            });
            return(r);
        }
Пример #5
0
 void AnalyseStep()
 {
     InstrumentList.ForEach(v => v.Memo = "");
     ConditionList.ForEach(v => v.ClearResult());
     foreach (var inst in InstrumentList)
     {
         foreach (var condition in ConditionList)
         {
             condition.GenerateResult(inst, AnalyseStartTime, analyseTime, AnalyseGrade);
         }
     }
 }
Пример #6
0
        public override void PrepareWork()
        {
            TargetPortfolio.PrepareWork();
            MarketDataList.Clear();
            CurrentDataSource.DataList.Clear();
            CurrentValueList.Clear();
            StandardValueList.Clear();
            OrderList.Clear();

            DateTime st = TestStartTime;

            if (TestStartTime > AnalyseStartTime)
            {
                st = AnalyseStartTime;
            }
            CurrentDataSource.CacheStartTime = st;
            CurrentDataSource.CacheEndTime   = TestEndTime;

            TestCurrentTime = TestStartTime;
            analyseTime     = MarketData.GetNextTime(TestCurrentTime, AnalyseGrade);

            _MaxLost = new Money()
            {
                FxCode = Pnl.FxCode, Number = 0
            };
            if (UseFirstMarketDataInit)
            {
                var fdl = new List <IMarketData>();
                InstrumentList.ForEach(v =>
                {
                    var d = CurrentDataSource.GetFirstData(v, TestStartTime, TestEndTime, Grade);
                    if (d != null)
                    {
                        fdl.Add(d);
                    }
                });
                TargetPortfolio.ProcessMarketData(fdl);
                TargetPortfolio.PositionList.ForEach(v =>
                {
                    var d = fdl.FirstOrDefault(m => m.InstrumentTicker == v.InstrumentTicker);
                    if (d != null)
                    {
                        v.Cost = d.Close;
                    }
                });
            }
            if (IsUnlimited)
            {
                TargetPortfolio.IsUnlimited = true;
            }
            standardPortfolio = TargetPortfolio.Clone() as IPortfolio;
            testStartValue    = TargetPortfolio.CurrentValue;
            CurrentDataSource.PrepareWork();
            CurrentTradeGate.PrepareWork();
            foreach (var condition in ConditionList)
            {
                condition.PrepareWork();
                condition.GetInstrumentList = () => { return(InstrumentList); };
                condition.AnalyseDataSource = CurrentDataSource;
            }

            TestStrategy.CurrentPortfolio = TargetPortfolio;
            TestStrategy.PrepareWork();
            RiskPolicy.PrepareWork();
        }