Example #1
0
        public MainFutures Scan(String variety, IList <int> openDates)
        {
            MainFutures mainF = new MainFutures();

            mainF.Variety = variety;
            List <MainContractInfo> mainFutures = mainF.mainFutures;
            List <CodeInfo>         codes       = cache.GetCodesByCatelog(variety);
            String lastMainCode = "";

            for (int i = 0; i < openDates.Count; i++)
            {
                int    openDate = openDates[i];
                String mainCode = GetMainCode(csvPath, codes, openDate);
                if (mainCode == null)
                {
                    continue;
                }
                if (!mainCode.Equals(lastMainCode))
                {
                    bool addNew = true;
                    if (mainFutures.Count > 0)
                    {
                        //主合约改变条件:
                        //
                        MainContractInfo lastMain = mainFutures[mainFutures.Count - 1];
                        lastMain.End = openDates[i - 1];
                        if (mainFutures.Count > 1 && lastMain.Last < 25)
                        {
                            MainContractInfo lastMain2 = mainFutures[mainFutures.Count - 2];
                            if (lastMain2.Code.Equals(mainCode))
                            {
                                mainFutures.RemoveAt(mainFutures.Count - 1);
                                addNew = false;
                            }
                        }
                    }
                    if (addNew)
                    {
                        MainContractInfo main = new MainContractInfo();
                        main.Variety = variety;
                        main.Code    = mainCode;
                        main.Start   = openDate;
                        mainFutures.Add(main);
                    }
                }
                lastMainCode = mainCode;
            }
            if (mainFutures.Count != 0)
            {
                MainContractInfo lMain = mainFutures[mainFutures.Count - 1];
                lMain.End = openDates[openDates.Count - 1];
            }
            return(mainF);
        }
Example #2
0
        public void TestScan()
        {
            string          path        = @"E:\FUTURES\CSV\DATACENTERSOURCE\";
            string          codePath    = path + "instruments.csv";
            List <CodeInfo> codes       = CsvUtils_Code.Load(codePath);
            string          datePath    = path + "tradingdays.csv";
            MainFuturesScan scan        = new MainFuturesScan(path, codes);
            List <int>      openDates   = CsvUtils_TradingDay.Load(datePath);
            MainFutures     mainFutures = scan.Scan("B", openDates);

            Console.WriteLine(mainFutures);
        }