예제 #1
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";
                }
            }
        }
예제 #2
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);
        }
예제 #3
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);
        }