Example #1
0
        private void FormStrategyDetail_Load(object sender, EventArgs e)
        {
            AddGridTitle();

            ValidationJudger judger = new ValidationJudger();

            judger.Judge(Results);

            StrategyJudger strategyJudger = new StrategyJudger();

            strategyJudger.Judge(Results);

            InitScoresMapping(judger, strategyJudger);

            foreach (string strategyName in Results.AllStrategyNames)
            {
                IStockValues val = Results.GetResult(strategyName);

                ListViewItem listItem = new ListViewItem(strategyName);
                listItem.SubItems.Add(val.GetOperCount(OperType.Buy).ToString());
                listItem.SubItems.Add(val.GetOperCount(OperType.Sell).ToString());
                listItem.SubItems.Add(FindScore("Buy Signal", strategyName));
                listItem.SubItems.Add(FindScore("Sell Signal", strategyName));
                listItem.SubItems.Add(FindScore("Buy and Sell Signal", strategyName));
                listItem.SubItems.Add(FindScore("Daily Prices Sigma", strategyName));

                listViewStrategy.Items.Add(listItem);
            }
        }
Example #2
0
        public void Judge(IStrategyResults res)
        {
            ICollection <string> allStrategies = res.AllStrategyNames;

            IStockValues    holderValues = res.GetResult("Hold");
            List <DateTime> dates        = holderValues.GetAllDate().ToList <DateTime>();

            dates.Sort();
            DateTime minDate = dates.First <DateTime>();
            DateTime maxDate = dates.Last <DateTime>();

            Debug.Assert(minDate < maxDate);

            DateTime curDate = minDate;

            while (curDate < maxDate)
            {
                foreach (string name in allStrategies)
                {
                    IStockValues values = res.GetResult(name);

                    double holderTotalValue = holderValues.GetTotalValue(curDate);

                    double strategyTotalValue = values.GetTotalValue(curDate);

                    Scores_.AddScore(name, CalcSimpleScore(holderTotalValue, strategyTotalValue));
                }

                curDate = DateFunc.GetNextWorkday(curDate);
            }
        }
Example #3
0
        private void DrawResult(string strategyname)
        {
            chart1.Series.Add(strategyname);

            chart1.Series[strategyname].ChartArea     = "Result"; // 设置Series绘制区域
            chart1.Series[strategyname].ChartType     = SeriesChartType.Point;
            chart1.Series[strategyname].XValueType    = ChartValueType.DateTime;
            chart1.Series[strategyname]["PointWidth"] = "1.5";

            IStockValues values = StrategyResults_.GetResult(strategyname);

            if (values == null)
            {
                return;
            }

            ICollection <DateTime> dates = values.GetAllDate();

            foreach (DateTime dt in dates)
            {
                double val = values.GetTotalValue(dt);
                Debug.Assert(val > 0);

                int curPos = chart1.Series[strategyname].Points.AddXY(dt, val);

                if (values.GetOperationSignal(dt) == OperType.Buy)
                {
                    chart1.Series[strategyname].Points[curPos].MarkerImage = ApplicationHelper.GetAppPath() + "\\image\\buysignal.bmp";
                }
                else if (values.GetOperationSignal(dt) == OperType.Sell)
                {
                    chart1.Series[strategyname].Points[curPos].MarkerImage = ApplicationHelper.GetAppPath() + "\\image\\sellsignal.bmp";
                }
            }
        }
Example #4
0
        private void Start(IStockValues values, IFinanceStrategy strategy)
        {
            LogMgr.Logger.LogInfo("==>Start With Strategy: " + strategy.Name + "...");
            Account acc = new Account();

            acc.BankRoll = INITCASH;

            IStockHolder holder = new StockHolder();

            holder.History  = History_;
            acc.Holder      = holder;
            strategy.Holder = holder;
            HolderManager.Instance().Holder = holder;

            acc.Processor = CurrentBonusProcessor;

            DateTime startDate = History_.MinDate;
            DateTime endDate   = History_.MaxDate;

            LogMgr.Logger.LogInfo("Min Date = {0}, Max Date = {1}", startDate, endDate);
            Debug.Assert(endDate > startDate);

            while (startDate < endDate)
            {
                double totalvalue = acc.TotalValue(startDate);
                values.SetTotalValue(startDate, totalvalue);

                //acc.ProcessBonus(startDate);

                ICollection <StockOper> opers = strategy.GetOper(startDate, acc);

                if (opers != null)
                {
                    foreach (StockOper oper in opers)
                    {
                        if (History_.IsOperSuccess(startDate, oper))
                        {
                            acc.DoBusiness(oper);
                            values.SetOperationSignal(startDate, oper.Type);
                        }
                    }
                }

                startDate = DateFunc.GetNextWorkday(startDate);
            }

            LogMgr.Logger.LogInfo("Strategy " + strategy.Name + " End Value: "
                                  + acc.TotalValue(startDate).ToString(CultureInfo.CurrentCulture));
            LogMgr.Logger.LogInfo("Strategy " + strategy.Name
                                  + ": Buys: " + acc.BuyTransactionCount
                                  + ", Sells: " + acc.SellTransactionCount);
            LogMgr.Logger.LogInfo("<== End With Strategy: " + strategy.Name);
        }
Example #5
0
        public void GetResult()
        {
            StrategyResults res = new StrategyResults();

            res.AddResult("Test", new StockValues());

            IStockValues val = res.GetResult("Test");

            Assert.IsNotNull(val);

            val = res.GetResult("NOTEXIST");
            Assert.IsNull(val);
        }
Example #6
0
        public void Judge(IStrategyResults res)
        {
            _HoldValues = res.GetResult("Hold");

            FindMaxMinDate();

            foreach (string strategyName in res.AllStrategyNames)
            {
                IStockValues values = res.GetResult(strategyName);

                JudgeStrategy(strategyName, values);
            }
        }
Example #7
0
        public IStockValues GetResult(string strategyName)
        {
            IStockValues values = null;

            if (!NameToValues_.TryGetValue(strategyName, out values))
            {
                return(null);
            }
            else
            {
                return(values);
            }
        }
Example #8
0
        public void Judge(IStrategyResults res)
        {
            _HoldValues = res.GetResult("Hold");

            FindMaxMinDate();

            foreach (string strategyName in res.AllStrategyNames)
            {
                IStockValues values = res.GetResult(strategyName);

                JudgeStrategy(strategyName, values);
            }
        }
Example #9
0
        private void Start(IStockValues values, IFinanceStrategy strategy)
        {
            LogMgr.Logger.LogInfo("==>Start With Strategy: " + strategy.Name + "...");
            Account acc = new Account();
            acc.BankRoll = INITCASH;

            IStockHolder holder = new StockHolder();
            holder.History = History_;
            acc.Holder = holder;
            strategy.Holder = holder;
            HolderManager.Instance().Holder = holder;

            acc.Processor = CurrentBonusProcessor;

            DateTime startDate = History_.MinDate;
            DateTime endDate = History_.MaxDate;

            LogMgr.Logger.LogInfo("Min Date = {0}, Max Date = {1}", startDate, endDate);
            Debug.Assert(endDate > startDate);

            while (startDate < endDate)
            {
                double totalvalue = acc.TotalValue(startDate);
                values.SetTotalValue(startDate, totalvalue);

                //acc.ProcessBonus(startDate);

                ICollection<StockOper> opers = strategy.GetOper(startDate, acc);

                if (opers != null)
                {
                    foreach (StockOper oper in opers)
                    {
                        if (History_.IsOperSuccess(startDate, oper))
                        {
                            acc.DoBusiness(oper);
                            values.SetOperationSignal(startDate, oper.Type);
                        }
                    }
                }

                startDate = DateFunc.GetNextWorkday(startDate);
            }

            LogMgr.Logger.LogInfo("Strategy " + strategy.Name + " End Value: "
                + acc.TotalValue(startDate).ToString(CultureInfo.CurrentCulture));
            LogMgr.Logger.LogInfo("Strategy " + strategy.Name
                + ": Buys: " + acc.BuyTransactionCount
                + ", Sells: " + acc.SellTransactionCount);
            LogMgr.Logger.LogInfo("<== End With Strategy: " + strategy.Name);
        }
Example #10
0
        private void JudgeStrategy(string strategyName, IStockValues values)
        {
            SignalValidationCalc calc = new SignalValidationCalc();
            calc.HoldValues = _HoldValues;

            DateTime curDate = _MinDate;
            while (curDate < _MaxDate)
            {
                OperType tp = values.GetOperationSignal(curDate);

                calc.AddSignal(curDate, tp);

                curDate = DateFunc.GetNextWorkday(curDate);
            }

            _Scores.SetScore(strategyName, calc.TotalScore);
            _BuyScores.SetScore(strategyName, calc.BuyScore);
            _SellScores.SetScore(strategyName, calc.SellScore);
        }
Example #11
0
        private void JudgeStrategy(string strategyName, IStockValues values)
        {
            SignalValidationCalc calc = new SignalValidationCalc();

            calc.HoldValues = _HoldValues;

            DateTime curDate = _MinDate;

            while (curDate < _MaxDate)
            {
                OperType tp = values.GetOperationSignal(curDate);

                calc.AddSignal(curDate, tp);

                curDate = DateFunc.GetNextWorkday(curDate);
            }

            _Scores.SetScore(strategyName, calc.TotalScore);
            _BuyScores.SetScore(strategyName, calc.BuyScore);
            _SellScores.SetScore(strategyName, calc.SellScore);
        }
Example #12
0
 public void AddResult(string strategyName, IStockValues vals)
 {
     NameToValues_.Add(strategyName, vals);
 }
Example #13
0
 public void AddResult(string strategyName, IStockValues vals)
 {
     NameToValues_.Add(strategyName, vals);
 }