public void Init(Data data,
                  Analysis.AnalysisResult advices)
 {
     this.myAnalysisData = data;
     this.myTradeAdvices = advices;
     ReLoad();
 }
Example #2
0
 protected virtual void EstimateAdvice(Data data,
                                       Analysis.AnalysisResult advices,
                                       Analysis.EstimateOptions options,
                                       data.tmpDS.tradeEstimateDataTable toTbl)
 {
     Analysis.EstimateAdvice(data, advices, options, toTbl);
 }
Example #3
0
 public void Init(Data data,
                  Analysis.AnalysisResult advices)
 {
     this.myAnalysisData = data;
     this.myTradeAdvices = advices;
     ReLoad();
 }
        private void ShowEstimationForm(data.baseDS.stockCodeRow stockCodeRow, data.baseDS.strategyRow strategyRow,
                                        AppTypes.TimeScale timeScale, DateTime frDate, DateTime toDate)
        {
            Data data = new Data(frDate, toDate, timeScale, stockCodeRow.code);

            Analysis.AnalysisResult advices = appHub.strategy.TradeAnalysis(data, strategyRow.code);
            if (advices != null)
            {
                myAdviceEstimateForm.Init(data, advices);
                myAdviceEstimateForm.ShowForm();
            }
        }
Example #5
0
        private void Screening()
        {
            StringCollection strategyList  = strategyClb.myCheckedValues;
            StringCollection stockCodeList = GetStockList();

            DataTable testRetsultTbl = CreateDataTable(strategyList);

            SetDataGrid(testResultDataGrid, testRetsultTbl);

            progressBar.Value = 0; progressBar.Maximum = stockCodeList.Count;

            myDataSet.strategy.Clear();
            data.baseDS.strategyRow strategyRow;
            for (int idx = 0; idx < strategyList.Count; idx++)
            {
                strategyRow = application.dataLibs.FindAndCache(myDataSet.strategy, strategyList[idx]);
                if (strategyRow == null)
                {
                    common.system.ThrowException("Invalid strategy " + strategyList[idx]);
                }
                strategyList[idx] = strategyList[idx].Trim();
            }

            data.baseDS.stockCodeRow stockCodeRow;
            for (int rowId = 0; rowId < stockCodeList.Count; rowId++)
            {
                stockCodeRow = application.dataLibs.FindAndCache(myDataSet.stockCode, stockCodeList[rowId]);
                if (stockCodeRow == null)
                {
                    continue;
                }
                DataRow row          = testRetsultTbl.Rows.Add(stockCodeList[rowId]);
                Data    analysisData = new Data(dateRangeEd.frDate, dateRangeEd.toDate, dateRangeEd.myTimeScale, stockCodeRow.code);
                for (int colId = 0; colId < strategyList.Count; colId++)
                {
                    decimal revenue = 0;

                    Analysis.AnalysisResult advices = appHub.strategy.TradeAnalysis(analysisData, strategyList[colId]);
                    if (advices != null)
                    {
                        myTmpDS.tradeEstimate.Clear();
                        Analysis.EstimateAdvice(analysisData, advices, new application.Analysis.EstimateOptions(), myTmpDS.tradeEstimate);

                        revenue = (myTmpDS.tradeEstimate.Count == 0 ? 0 : revenue = myTmpDS.tradeEstimate[myTmpDS.tradeEstimate.Count - 1].revenue);
                    }
                    row[colId + 1] = revenue;
                }
                progressBar.Value++;
                Application.DoEvents();
            }
            this.ShowReccount(stockCodeList.Count);
        }
        private void BackTest()
        {
            StringCollection strategyList = strategyClb.myCheckedValues;
            StringCollection stockCodeList;

            if (stockCodeSelect.Enabled)
            {
                stockCodeList = stockCodeSelect.myCheckedValues;
            }
            else
            {
                stockCodeList = new StringCollection();
                //Load stocks in portfolio
                data.baseDS.stockCodeDataTable myStockCodeTbl = new data.baseDS.stockCodeDataTable();
                StringCollection portfolioList = common.system.List2Collection(portfolioCb.GetValues());
                dataLibs.LoadStockCode_ByPortfolios(myStockCodeTbl, portfolioList);

                DataView myStockView = new DataView(myStockCodeTbl);
                data.baseDS.stockCodeRow stockRow;
                myStockView.Sort = myStockCodeTbl.codeColumn.ColumnName + "," + myStockCodeTbl.stockExchangeColumn.ColumnName;
                for (int idx1 = 0; idx1 < myStockView.Count; idx1++)
                {
                    stockRow = (data.baseDS.stockCodeRow)myStockView[idx1].Row;
                    //Ignore duplicate stocks
                    if (stockCodeList.Contains(stockRow.code))
                    {
                        continue;
                    }
                    stockCodeList.Add(stockRow.code);
                }
            }
            DataTable testRetsultTbl = CreateDataTable(strategyList);

            SetDataGrid(testResultDataGrid, testRetsultTbl);

            progressBar.Value = 0; progressBar.Maximum = stockCodeList.Count;

            //Data analysisData = new Data(dateRangeEd.frDate, dateRangeEd.toDate, dateRangeEd.myTimeScale, stockCodeRow.co);
            //analysisData.Init(dateRangeEd.myTimeScale, dateRangeEd.frDate, dateRangeEd.toDate, stockCodeRow);

            myDataSet.strategy.Clear();
            data.baseDS.strategyRow strategyRow;
            for (int idx = 0; idx < strategyList.Count; idx++)
            {
                strategyRow = application.dataLibs.FindAndCache(myDataSet.strategy, strategyList[idx]);
                if (strategyRow == null)
                {
                    common.system.ThrowException("Invalid strategy " + strategyList[idx]);
                }
                strategyList[idx] = strategyList[idx].Trim();
            }

            data.baseDS.stockCodeRow stockCodeRow;
            for (int rowId = 0; rowId < stockCodeList.Count; rowId++)
            {
                stockCodeRow = application.dataLibs.FindAndCache(myDataSet.stockCode, stockCodeList[rowId]);
                if (stockCodeRow == null)
                {
                    continue;
                }

                Data    analysisData = new Data(dateRangeEd.frDate, dateRangeEd.toDate, dateRangeEd.myTimeScale, stockCodeRow.code);
                DataRow row          = testRetsultTbl.Rows.Add(stockCodeList[rowId]);
                for (int colId = 0; colId < strategyList.Count; colId++)
                {
                    decimal revenue = 0;

                    Analysis.AnalysisResult advices = appHub.strategy.TradeAnalysis(analysisData, strategyList[colId]);
                    if (advices != null)
                    {
                        myTmpDS.tradeEstimate.Clear();
                        Analysis.EstimateAdvice(analysisData, advices, new application.Analysis.EstimateOptions(), myTmpDS.tradeEstimate);

                        revenue = (myTmpDS.tradeEstimate.Count == 0 ? 0 : revenue = myTmpDS.tradeEstimate[myTmpDS.tradeEstimate.Count - 1].revenue);
                    }
                    row[colId + 1] = revenue;
                }
                progressBar.Value++;
                Application.DoEvents();
            }
            SetEstimateStrateDataGrid(Analysis.GetStrategyStats(testRetsultTbl));
        }