Exemplo n.º 1
0
        public static string StoreSimulation(string set_key, PortfolioStrategy strategy, string description)
        {
            string entry_key = System.Guid.NewGuid().ToString();
            string mkey      = set_key == null ? "--Simulations-" + entry_key : set_key;

            QuantApp.Kernel.M m = QuantApp.Kernel.M.Base(mkey);
            //var res = m[x => true];



            DateTime t1 = DateTime.Now;

            string SimulationName = t1.ToString();

            List <object> olist = new List <object>();

            olist.Add(Simulation2JSON(strategy as Strategy));

            foreach (var s in strategy.Instruments(DateTime.Now, false).Values)
            {
                if (s.InstrumentType == InstrumentType.Strategy && (s as Strategy).Portfolio != null)
                {
                    olist.Add(Simulation2JSON(s as Strategy));
                }
            }

            string key = m.Add(Newtonsoft.Json.JsonConvert.SerializeObject(new { Name = description, Strategies = olist }));

            m.Save();

            return(mkey);
        }
Exemplo n.º 2
0
        private async Task SetUserSettingsAsync(DynamoDBEntry item, object id, PortfolioStrategy settings)
        {
            var table = Table.LoadTable(_dynamoDb, "Users");
            var doc   = new Document();

            doc["Settings"] = Document.FromJson(JsonConvert.SerializeObject(settings));

            await table.UpdateItemAsync(doc, new Primitive(id.ToString(), true));
        }
Exemplo n.º 3
0
        private PortfolioStrategy MapSettingsRequestToProtfolioSettings(UserSettingsRequest req)
        {
            var settings = new PortfolioStrategy();

            settings.RiskStrategy = req.riskstrategy;
            if (req.salary.HasValue && req.contributionFrequency.HasValue)
            {
                settings.ContributionStrategy = new Contribution {
                    Salary                = req.salary,
                    SalaryPercent         = req.contributionPercentage,
                    CompanyMatch          = req.companyMatch,
                    ContributionFrequency = req.contributionFrequency,
                };
            }
            return(settings);
        }
Exemplo n.º 4
0
        private int AddPortfolioStrategy(int portfolioID, PortfolioStrategy strategy, SqlConnection connection, SqlTransaction transaction)
        {
            var cmd = new SqlCommand("INSERT INTO [dbo].[PortfolioStrategies] ([Portfolio_ID], [StrategyName], "
                                     + "[StrategySignals], [StrategyDataFeeds], [ExposedBalance]) "
                                     + "VALUES (@portfolioId, @strategyName, @signals, @datafeeds, @exposedBalance) SELECT CONVERT(int, SCOPE_IDENTITY())", connection);

            cmd.Parameters.AddWithValue("portfolioId", portfolioID);
            cmd.Parameters.AddWithValue("strategyName", strategy.Name);
            cmd.Parameters.AddWithValue("signals", strategy.Signals == null ? null : String.Join(",", strategy.Signals));
            cmd.Parameters.AddWithValue("datafeeds", strategy.DataFeeds == null ? null : String.Join(",", strategy.DataFeeds));
            cmd.Parameters.AddWithValue("exposedBalance", strategy.ExposedBalance);

            try
            {
                cmd.Transaction = transaction;
                return((int)cmd.ExecuteScalar());
            }
            catch (Exception e)
            {
                Logger.Error("Failed to insert portfolio strategy", e);
                return(-1);
            }
        }
Exemplo n.º 5
0
        private bool UpdatePortfolioStrategy(PortfolioStrategy strategy, SqlConnection connection, SqlTransaction transaction)
        {
            var cmd = new SqlCommand("UPDATE [dbo].[PortfolioStrategies] "
                                     + "SET [StrategyName] = @name, [StrategySignals] = @signals, "
                                     + "[StrategyDataFeeds] = @feeds, [ExposedBalance] = @exposedBalance WHERE [ID] = @id", connection);

            cmd.Parameters.AddWithValue("id", strategy.ID);
            cmd.Parameters.AddWithValue("name", strategy.Name);
            cmd.Parameters.AddWithValue("signals", strategy.Signals == null ? null : String.Join(",", strategy.Signals));
            cmd.Parameters.AddWithValue("feeds", strategy.DataFeeds == null ? null : String.Join(",", strategy.DataFeeds));
            cmd.Parameters.AddWithValue("exposedBalance", strategy.ExposedBalance);

            try
            {
                cmd.Transaction = transaction;
                cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                Logger.Error("Failed to update portfolio strategy", e);
                return(false);
            }
            return(true);
        }
Exemplo n.º 6
0
        public async Task SetSettingsToUserAsync(object userId, PortfolioStrategy settings)
        {
            var item = await GetSettingsById(userId);

            await SetUserSettingsAsync(item, userId, settings);
        }
Exemplo n.º 7
0
        private List <PortfolioStrategy> GetPortfolioStrategies(int portfolioId)
        {
            var result = new List <PortfolioStrategy>();

            using (var connection = new SqlConnection(_connectionString))
            {
                var cmd = new SqlCommand("SELECT * FROM [dbo].[PortfolioStrategies] WHERE [Portfolio_ID] = @id", connection);
                cmd.Parameters.AddWithValue("id", portfolioId);

                SqlTransaction transaction = null;

                try
                {
                    connection.Open();
                    transaction     = connection.BeginTransaction();
                    cmd.Transaction = transaction;

                    string            s        = null;
                    PortfolioStrategy strategy = null;
                    using (var reader = cmd.ExecuteReader())
                    {
                        if (!reader.HasRows)
                        {
                            return(result);
                        }

                        while (reader.Read())
                        {
                            try
                            {
                                strategy = new PortfolioStrategy((int)reader["ID"], (string)reader["StrategyName"]);
                                s        = (string)reader["StrategySignals"];
                                if (!String.IsNullOrEmpty(s))
                                {
                                    strategy.Signals = s.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                }
                                s = (string)reader["StrategyDataFeeds"];
                                if (!String.IsNullOrEmpty(s))
                                {
                                    strategy.DataFeeds = s.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                }
                                strategy.ExposedBalance = (decimal)reader["ExposedBalance"];
                                result.Add(strategy);
                            }
                            catch (Exception ex)
                            {
                                Logger.Error("Failed to read portfolio strategy", ex);
                            }
                        }
                    }

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    Logger.Error("Failed to load portfolio strategies", e);
                    if (transaction != null)
                    {
                        transaction.Rollback();
                    }
                }
            }
            return(result);
        }