Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        // 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();
        }
Пример #4
0
        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);
        }