示例#1
0
        private void CalculateData()
        {
            //对每个股票进行分析
            StockSQL.DeleteRule();

            analyse_now = 0;
            foreach (StockData stockheader in StockApp.allstock.Values)
            {
                //初始化股票
                StockData stock = StockSQL.GetStockDetail_2(stockheader.code, stockheader.name);
                UtilLog.AddInfo(TAG, "Start to calculate " + stock.code);
                int stock_length = stock.items.Length;
                //第几个分析的股票
                analyse_now++;

                CalBuy(stock);
                CalSell(stock);

                prog.SetProgress(analyse_now * 100 / analyse_total);
                //释放内存
                if (analyse_now % 100 == 0)
                {
                    UtilLog.AddInfo(TAG, "Start to free memory");
                    GC.Collect();
                    UtilLog.AddInfo(TAG, "Free memory done!");
                    System.Threading.Thread.CurrentThread.Join(500);
                }
                UtilLog.AddInfo(TAG, analyse_now + "/" + analyse_total + ":" + stock.name + "(" + stock.code + ")" + " calculate finished ");
            }

            RuleScore.SetRuleScore();
            RuleScore.SetAllPreScore();
            lbl_status.Text = "Calculation Done";
        }
示例#2
0
        //同步股票数据
        //2018-03-14 Reviewed
        private void SyncData()
        {
            //更新进度
            int statusNum = 0;

            //删除已有股票
            StockSQL.DeleteStock();
            this.btn_syncData.Enabled = false;

            foreach (object obj in filelist)
            {
                statusNum++;
                string filename = (string)obj;

                StockData stock = new StockData();
                stock.Init(filename);
                UtilLog.AddInfo(TAG, "Start to analyse " + stock.code + ";");
                StockAttribute attri = new StockAttribute(stock);
                StockKPI       kpi   = new StockKPI(stock);

                if (!stock.IsValid())
                {
                    UtilLog.AddInfo(TAG, statusNum + "/" + filelist.Count + "  " + stock.code + " skipped");
                }
                else
                {
                    attri.InitAttribute();
                    kpi.InitKPI();

                    StockSQL.InsertStockWithItem(stock);
                    UtilLog.AddInfo(TAG, statusNum + "/" + filelist.Count + "  " + stock.code + " initialization finished");
                }
                int status = statusNum * 100 / filelist.Count;
                if (statusNum % 100 == 0)
                {
                    GC.Collect();
                }
                prog.SetProgress(status);
            }
            StockData.SetStockFull();
            StockDapan.InsertStockDaPan();
            this.btn_syncData.Enabled = true;
        }
示例#3
0
        //正式分析
        private void Analyse()
        {
            System.Collections.ArrayList list = new System.Collections.ArrayList();
            int itemnum = 0;

            list.Clear();


            foreach (Buy buyitem in pnl_buysell.GetAllBuy())
            {
                foreach (Sell sellitem in pnl_buysell.GetAllSell())
                {
                    foreach (int buyrule in Rule.rulebuy_type)
                    {
                        //计算的时候可以看到并没有考虑止损, 但实际显示结果时都有考虑
                        StockOpeItem[] rule_items = StockAnalysisSQL.CalculateSave2Analysis2(startdate, enddate, buyitem.ToString(), sellitem.ToString(), buyrule);

                        //计算当前分析进度

                        foreach (StockOpeItem rule_item in rule_items)
                        {
                            if (rule_item.grade < buyitem.minumum_grade)
                            {
                                continue;
                            }
                            list.Add(rule_item);
                        }
                    }
                    itemnum++;
                    prog.SetProgress(itemnum * 100 * StockApp.allstock.Count / analyse_total);
                    UtilLog.AddInfo(TAG, buyitem.ToString() + "-" + sellitem.ToString() + " analysis finished ");
                }
            }// for each buy
            StockAnalysisSQL.SaveToDB_Analysis2(list);

            UtilLog.AddInfo(TAG, startdate + " till " + enddate + "  buy analyse finished.");
        }