public Boolean prepareTest() { appDir = System.IO.Directory.GetCurrentDirectory(); //主程式所在目錄 appDir = System.Windows.Forms.Application.StartupPath; string configFilePath = appDir + "\\" + Config_Dir + "\\" + Config_File_Name; ConfigFile configFile = new ConfigFile(configFilePath); try { configFile.prepareReader(); coreMethod = configFile.readConfig("Core_Method"); ruleCountWin = Convert.ToInt32(configFile.readConfig("Rule_Count_Win")); ruleCountLose = Convert.ToInt32(configFile.readConfig("Rule_Count_Lose")); string strRuleCountReverse = "Rule_Count_Reverse_"; for (int i = 1; i <= 10; i++) { ruleCountReverse[i - 1] = Convert.ToInt32(configFile.readConfig(strRuleCountReverse + Convert.ToString(i))); } runCount = Convert.ToInt32(configFile.readConfig("Run_Count")); rulePeriod = Convert.ToInt32(configFile.readConfig("Rule_Period")); maxLoss = configFile.readConfig("Max_Loss"); sourceDir = configFile.readConfig("Source_Dir"); ratio = Convert.ToDouble(configFile.readConfig("Ratio")); lotLimit = Convert.ToInt32(configFile.readConfig("Lot_Limit")); checkCount = Convert.ToInt32(configFile.readConfig("Check_Count")); reversePeriod = Convert.ToDouble(configFile.readConfig("Reverse_Period")); if (null == sourceDir) { sourceDir = Source_Dir; } } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.Source); Console.WriteLine(e.StackTrace); return false; } List<int> lotList = new List<int>(); try { lots = configFile.readConfig("Lots"); lotArray = lots.Split(','); } catch (Exception ee) { Console.WriteLine(ee.StackTrace); } //----------------------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------- StrategyFile strategyInstance = StrategyFile.getInstance(); Boolean isRuleReady = false; if (TradeManager.Core_Method_1.Equals(coreMethod) || TradeManager.Core_Method_2.Equals(coreMethod)) { isRuleReady = strategyInstance.dealStrategyRule(appDir, "TestStrategy.txt"); this.winLine = strategyInstance.getWinLine(); this.loseLine = strategyInstance.getLoseLine(); this.reverseLine = strategyInstance.getReverseLine(); } else if (TradeManager.Core_Method_3.Equals(coreMethod)) { isRuleReady = strategyInstance.dealStopRatioRule(appDir, "TestStrategy.txt"); this.stopRatio = strategyInstance.getStopRatio(); } if (!isRuleReady) { return false; } //----------------------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------- reportDir = appDir + "\\" + Report_Dir + "\\"; conclusionDir = appDir + "\\" + Conclusion_Dir + "\\"; sourceFileDir = appDir + "\\" + sourceDir + "\\"; conclusionReportFileName = conclusionDir + now.Year + "_" + now.Month + "_" + now.Day + "_" + now.Hour + "_" + now.Minute + "_" + now.Second + "_Conclusion.rpt"; conclusionReport = new TradeFile(conclusionReportFileName); conclusionReport.prepareWriter(); conclusionMsg("程式版本 :" + Version); conclusionMsg("說明 :" + Comment); conclusionMsg("使用核心:" + coreMethod); conclusionMsg("單日設定最大停損" + maxLoss); conclusionMsg("動態停利反轉比率:" + ratio); conclusionMsg("下單口數:" + lots); conclusionMsg("測試次數:" + runCount); conclusionMsg("確定買賣方向的檢查機制,時間間隔次數:" + checkCount); conclusionMsg("----------------------------------------------------------------------------------------------"); if (stopRatio != null) { conclusionMsg("逆勢動態停利規則 : " + stopRatio.ToString()); } return true; }