public string GetStrategyTypeAsJson(StrategyFile strategyFile) { Type type = typeof(Interface.StrategyParameters); var assembly = Assembly.LoadFile(strategyFile.File); var types = assembly.GetTypes().Where(t => t.IsSubclassOf(type)); if (!types.Any()) { throw new Exception($"No types implementing {type.Name} available in {assembly.GetName().Name}"); } var parameterDialogView = new ParameterDialogView(types); parameterDialogView.ShowDialog(); if (parameterDialogView.SelectedType != null) { var selectedType = parameterDialogView.SelectedType; var strategyParameters = Activator.CreateInstance(selectedType); return(JsonConvert.SerializeObject(strategyParameters, Formatting.Indented)); } return(string.Empty); }
public string GetStrategyTypeAsJson(StrategyFile strategyFile) { string file = string.Empty; var dialog = new OpenFileDialog { Title = "Select", Multiselect = false, CheckFileExists = true, CheckPathExists = true }; var result = dialog.ShowDialog(); if (result.HasValue && result.Value.Equals(true) && dialog.FileNames != null && dialog.FileNames.Length == 1) { file = dialog.FileNames[0]; } if (!string.IsNullOrWhiteSpace(file)) { Type type = typeof(StrategyParameters); var assembly = Assembly.LoadFile(file); var types = assembly.GetTypes().Where(t => t.IsSubclassOf(type)); if (!types.Any()) { throw new Exception($"No types implementing {type.Name} available in {assembly.GetName().Name}"); } var parameterDialogView = new ParameterDialogView(types); parameterDialogView.ShowDialog(); if (parameterDialogView.SelectedType != null) { var selectedType = parameterDialogView.SelectedType; var strategyParameters = Activator.CreateInstance(selectedType); return(JsonConvert.SerializeObject(strategyParameters, Formatting.Indented)); } } return(string.Empty); }
// POST api/sendmails public void Post([FromBody] EmailsHistorial email) { db.EmailHistory.Add(email); db.SaveChanges(); //var countOfRows = db.EmailHistory.Count(); //email = db.EmailHistory.OrderBy(c => 1 == 1).Skip(countOfRows - 1).FirstOrDefault(); email.RutaArchivo = @"C:\EmailFiles\" + email.Id.ToString(); StrategyFile strategy = new StrategyFile(); if (email.Formato == "json") { strategy.setStrategy(new JsonStrategy(email)); } else { strategy.setStrategy(new XmlStrategy(email)); } strategy.createFile(); db.Entry(email).CurrentValues.SetValues(email); db.SaveChanges(); }
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); }