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); }
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)); }
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); }
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); } }
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); }
public async Task SetSettingsToUserAsync(object userId, PortfolioStrategy settings) { var item = await GetSettingsById(userId); await SetUserSettingsAsync(item, userId, settings); }
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); }