Beispiel #1
0
        public async Task <Holdings> GetHoldingDataForUserAndStock(IDbConnection connection, ulong userId, ulong stockId)
        {
            var dynamicParameters = new DynamicParameters();

            dynamicParameters.Add("userId", userId);
            dynamicParameters.Add("stockId", stockId);

            connection.Open();
            var holdingData = await connection.QueryFirstAsync(_selHoldingDetailsForParticularStock, dynamicParameters);

            connection.Close();

            var holdingId      = holdingData.holding_id;
            var holdingDetails = holdingData.holding_details;

            var deserializedHoldingDetails = JsonSerializer.Deserialize <IEnumerable <HoldingDetails> >(holdingDetails);

            var holding = new Holdings()
            {
                HoldingDetails = deserializedHoldingDetails,
                HoldingId      = holdingId,
                StockId        = stockId,
                UserId         = userId
            };

            return(holding);
        }
Beispiel #2
0
        /// <summary>
        /// Get a list of the top gainers
        /// </summary>
        /// <param name="count">How many holdings do you want in the list?</param>
        /// <param name="Gains">If true, returns top gainers, if false, top losers.</param>
        /// <returns></returns>
        public List <Holding> GetTopGainers(int count, bool gains)
        {
            refresh();
            List <Holding> topGainers;

            if (gains)
            {
                topGainers = Holdings.OrderByDescending(o => o.GetPerformance()).ToList();
            }
            else
            {
                topGainers = Holdings.OrderBy(o => o.GetPerformance()).ToList();
            }

            if (count < Holdings.Count)
            {
                List <Holding> topGainersConstrained = new List <Holding>();
                for (int i = 0; i < count; i++)
                {
                    topGainersConstrained.Add(topGainers[i]);
                }
                return(topGainersConstrained);
            }
            return(topGainers);
        }
Beispiel #3
0
        public async Task <IEnumerable <Holdings> > GetAllHoldingsForUser(IDbConnection connection, ulong userId)
        {
            var userHoldings      = new List <Holdings>();
            var dynamicParameters = new DynamicParameters();

            dynamicParameters.Add("userId", userId);

            connection.Open();
            var holdings = await connection.QueryAsync(_selAllHoldingsForUser, dynamicParameters);

            connection.Close();

            foreach (var holdingData in holdings)
            {
                var holdingId                  = holdingData.holding_id;
                var holdingDetails             = holdingData.holding_details;
                var stockId                    = holdingData.stock_id;
                var deserializedHoldingDetails = JsonSerializer.Deserialize <IEnumerable <HoldingDetails> >(holdingDetails);

                var holding = new Holdings()
                {
                    HoldingDetails = deserializedHoldingDetails,
                    HoldingId      = holdingId,
                    UserId         = userId,
                    StockId        = stockId
                };
                userHoldings.Add(holding);
            }

            return(userHoldings);
        }
Beispiel #4
0
        public async Task NewHolding(int AccountId, string CompanyName, string Symbol, int StockCount,
                                     float LatestCostPerStock, float Change, float ChangePercentage, DateTime LastUpdated)
        {
            try
            {
                using (ITransaction transaction = _session.BeginTransaction())
                {
                    var holdings = new Holdings
                    {
                        AccountId          = AccountId,
                        CompanyName        = CompanyName,
                        Symbol             = Symbol,
                        StockCount         = StockCount,
                        LatestCostPerStock = LatestCostPerStock,
                        Change             = Change,
                        ChangePercentage   = ChangePercentage,
                        LastUpdated        = LastUpdated,
                    };

                    await _session.SaveAsync(holdings);

                    await transaction.CommitAsync();
                }
            }
            catch
            {
                throw new NewHoldingException(_path, "NewHolding()");
            }
            finally
            {
                _nHibernateService.CloseSession();
            }
        }
        public async Task <ActionResult <Holdings> > PostHoldings(Holdings holdings)
        {
            _context.Holdings.Add(holdings);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetHoldings", new { id = holdings.HoldingId }, holdings));
        }
Beispiel #6
0
        protected override void Add()
        {
            HoldingViewModel holding =
                new HoldingViewModel(new HoldingModel {
                Name = "New", IpServer = "localhost", Nom = Holdings.Count + 1
            });
            var conf = ConfigTempoSinglenton.GetInstance();

            holding.ConnectionString = string.Format(Entrence.ConectionStringTemplate, holding.IpServer, conf.BaseDbPath, "H" + holding.Nom);
            Holdings.Add(holding);
            if (
                MessageBoxWrapper.Show("Копиране на празна база от темплейтите?", "Предупреждение",
                                       MessageBoxWrapperButton.YesNo) == MessageBoxWrapperResult.Yes)
            {
                IoHelper.DirectoryCopy(ConfigTempoSinglenton.GetInstance().BaseTemplatePath,
                                       Path.Combine(ConfigTempoSinglenton.GetInstance().BaseDbPath, "H" + holding.Nom), true);
            }
            foreach (var item in conf.ConfigNames)
            {
                var spliter = item.Split('|');
                FirmSettingModel newsett = new FirmSettingModel();
                newsett.Key       = spliter[0];
                newsett.Name      = spliter[1];
                newsett.Value     = spliter[2];
                newsett.FirmaId   = 1;
                newsett.HoldingId = holding.Nom;
                conf.FirmSettings.Add(newsett);
            }
            conf.SaveConfiguration();
        }
 public PlayerResults(int postion, Holdings holding, uint handStrength, HoleCards holeCards)
 {
     Position     = postion;
     Holding      = holding;
     HandStrength = handStrength;
     HoleCards    = holeCards;
 }
Beispiel #8
0
        public void UpdateHoldings_ShouldThrowException()
        {
            int    AccountId          = 2;
            string CompanyName        = "General Electric Co.";
            string Symbol             = "GE";
            int    StockCount         = 5;
            float  LatestCostPerStock = 10.65F;
            float  Change             = -0.33F;
            float  ChangePercentage   = -0.02957F;
            var    LastUpdated        = DateTime.Now;

            var holdings = new Holdings
            {
                Id                 = 2,
                AccountId          = AccountId,
                CompanyName        = CompanyName,
                Symbol             = Symbol,
                StockCount         = StockCount,
                LatestCostPerStock = LatestCostPerStock,
                Change             = Change,
                ChangePercentage   = ChangePercentage,
                LastUpdated        = LastUpdated
            };

            _session.BeginTransaction().ThrowsForAnyArgs(new Exception());
            Assert.ThrowsAsync <UpdateHoldingsException>(() => _sut.UpdateHoldings(JObject.FromObject(holdings)));
        }
Beispiel #9
0
 public async Task UpdateHoldingDetails(ulong userId, Holdings holding)
 {
     using (var connection = _connectionService.GetOpenConnection(userId))
     {
         var holdingDetail = holding.HoldingDetails;
         await _holdingsData.UpdateHoldingDetail(connection, holding.HoldingId, holdingDetail);
     }
 }
        HoldingValue ComputeTotalStockValue(string user, string password)
        {
            Token      token  = AuthService.Check(user, password);
            Holdings   stocks = DbService.GetStockHoldings(token);
            StockRates rates  = StockService.GetRates(token);

            return(ProcessStocks(stocks, rates));
        }
Beispiel #11
0
 /// <summary>
 /// Creates an instance of the PointInTimePortfolio object
 /// </summary>
 /// <param name="order">Order applied to the portfolio</param>
 /// <param name="portfolio">Algorithm portfolio at a point in time</param>
 public PointInTimePortfolio(Order order, SecurityPortfolioManager portfolio)
 {
     Time  = order.Time;
     Order = order;
     TotalPortfolioValue = portfolio.TotalPortfolioValue;
     Holdings            = portfolio.Securities.Values.Select(x => new PointInTimeHolding(x.Symbol, x.Holdings.HoldingsValue, x.Holdings.Quantity)).ToList();
     Leverage            = Holdings.Sum(x => x.AbsoluteHoldingsValue) / TotalPortfolioValue;
 }
 public void UpdateHoldings(Holdings holdingsToUpdate)
 {
     using (var transaction = _session.BeginTransaction())
     {
         _session.Update(holdingsToUpdate);
         transaction.Commit();
     }
 }
Beispiel #13
0
 /// <summary>
 /// Update market price of this Security
 /// </summary>
 /// <param name="data">Data to pull price from</param>
 protected virtual void UpdateConsumersMarketPrice(BaseData data)
 {
     if (data is OpenInterest || data.Price == 0m)
     {
         return;
     }
     Holdings.UpdateMarketPrice(Price);
     VolatilityModel.Update(this, data);
 }
 public Holding AddHolding(string holdingname)
 {
     var newHolding = new Holding()
     {
          HoldingId = Holdings.Count() + 1,
          HoldingName = holdingname
     };
     Holdings.Add(newHolding);
     return newHolding;
 }
Beispiel #15
0
 /// <summary>
 /// Update any security properties based on the lastest market data and time
 /// </summary>
 /// <param name="data">New data packet from LEAN</param>
 public void SetMarketPrice(BaseData data)
 {
     //Add new point to cache:
     if (data == null)
     {
         return;
     }
     Cache.AddData(data);
     Holdings.UpdateMarketPrice(data.Value);
 }
Beispiel #16
0
 public List <Holding> GetHoldings(string ticker)
 {
     if (Holdings.ContainsKey(ticker))
     {
         if (Holdings.First(v => v.Key == ticker).Value.Any())
         {
             return(Holdings.First(v => v.Key == ticker).Value);
         }
     }
     return(null);
 }
Beispiel #17
0
 /// <summary>
 /// Update any security properties based on the latest market data and time
 /// </summary>
 /// <param name="data">New data packet from LEAN</param>
 public void SetMarketPrice(BaseData data)
 {
     //Add new point to cache:
     if (data == null)
     {
         return;
     }
     Cache.AddData(data);
     Holdings.UpdateMarketPrice(Price);
     VolatilityModel.Update(this, data);
 }
Beispiel #18
0
        /// <summary>
        /// Update the Market Online Calculations:
        /// </summary>
        /// <param name="data">New Data packet:</param>
        /// <param name="frontier">time frontier / where we are in time.</param>
        public void Update(DateTime frontier, BaseData data)
        {
            //Update the Exchange/Timer:
            Exchange.SetDateTimeFrontier(frontier);

            //Add new point to cache:
            if (data != null)
            {
                Cache.AddData(data);
                Holdings.UpdatePrice(data.Value);
            }
        }
        public Holdings ReadHoldingsById(int id)
        {
            var holdingRead = new Holdings();

            using (var transaction = _session.BeginTransaction())
            {
                holdingRead = _session.Get <Holdings>(id);
                transaction.Commit();
            }

            return(holdingRead);
        }
Beispiel #20
0
        /// <summary>
        /// Update any security properties based on the lastest market data and time
        /// </summary>
        /// <param name="data">New data packet from LEAN</param>
        /// <param name="frontier">Time frontier / where we are in time.</param>
        public void SetMarketPrice(DateTime frontier, BaseData data)
        {
            //Update the Exchange/Timer:
            Exchange.SetDateTimeFrontier(frontier);

            //Add new point to cache:
            if (data == null)
            {
                return;
            }
            Cache.AddData(data);
            Holdings.UpdateMarketPrice(data.Value);
        }
Beispiel #21
0
 private void AddHolding(string ticker, Holding holding)
 {
     if (Holdings.ContainsKey(ticker))
     {
         Holdings.FirstOrDefault(v => v.Key == ticker).Value.Add(holding);
     }
     else
     {
         var holdingsList = new List <Holding>();
         holdingsList.Add(holding);
         Holdings.Add(ticker, holdingsList);
     }
 }
Beispiel #22
0
        private void AddTestDataToHoldings()
        {
            Holding holding = new Holding("AAPL");

            holding.numOfShares   = 5;
            holding.totalInvested = 80.00;
            Holdings.Add(holding);

            holding               = new Holding("TSLA");
            holding.numOfShares   = 10;
            holding.totalInvested = 10000.00;
            Holdings.Add(holding);
        }
        public Holdings CreateHolding(Holdings holdingToCreate)
        {
            var holdingCreated = new Holdings();

            using (var transaction = _session.BeginTransaction())
            {
                var newId = _session.Save(holdingToCreate);
                holdingCreated = _session.Get <Holdings>(newId);
                transaction.Commit();
            }

            return(holdingCreated);
        }
Beispiel #24
0
        private async Task AddNewHoldingDetails(IDbConnection connection, ulong userId, ulong stockId, HoldingDetails holdingDetails)
        {
            var holdings = new Holdings()
            {
                HoldingDetails = new List <HoldingDetails>()
                {
                    holdingDetails
                },
                StockId = stockId,
                UserId  = userId
            };

            var holdingId = await _holdingsData.AddHolding(connection, holdings);
        }
Beispiel #25
0
        /// <summary>
        /// Update any security properties based on the latest realtime data and time
        /// </summary>
        /// <param name="data">New data packet from LEAN</param>
        public void SetRealTimePrice(BaseData data)
        {
            //Add new point to cache:
            if (data == null)
            {
                return;
            }
            Cache.AddData(data);

            if (data is OpenInterest || data.Price == 0m)
            {
                return;
            }
            Holdings.UpdateMarketPrice(Price);
        }
Beispiel #26
0
        /// <summary>
        /// Update the Market Online Calculations:
        /// </summary>
        /// <param name="data">New Data packet:</param>
        /// <param name="frontier"></param>
        public void Update(DateTime frontier, MarketData data)
        {
            //Update the Exchange/Timer:
            Exchange.SetDateTimeFrontier(frontier);

            //Update the Holdings Copy of Price Variable:
            Holdings.UpdatePrice(Close);

            //Add new point to cache:
            if (data != null)
            {
                Cache.AddData(data);
            }

            //Update Online Calculations:
        }
 /// <summary>
 /// Ovveriding Equality method results in getting invalid hash code which is necessary for
 /// hashtables and dictionary pairs as they use hashcode to retrieve small set in dictionary
 /// and then compare them with equals method.If it is not overriden, then the dictionaries will behave improperly while adding
 /// new dictionary or retrieving saved ones.Hence,GetHashCode should be overriden while overriding Equality method.
 /// </summary>
 /// <returns>int;hashcode</returns>
 public override int GetHashCode()
 {
     //Allowing system to not check the overflow conditions as we are fine with having overflow but to wrap
     //reference:https://stackoverflow.com/questions/263400/what-is-the-best-algorithm-for-an-overridden-system-object-gethashcode
     unchecked
     {
         // Choose large primes to avoid hashing collisions
         int hash = 17;
         //Use XOR instead of addition for improved performance
         //checking for null object references
         hash = (hash * 23) ^ (!Object.ReferenceEquals(null, Symbol) ? Symbol.GetHashCode() : 0);
         hash = (hash * 23) ^ (!Object.ReferenceEquals(null, Name) ? Name.GetHashCode() : 0);
         hash = (hash * 23) ^ (!Object.ReferenceEquals(null, Holdings) ? Holdings.GetHashCode() : 0);
         hash = (hash * 23) ^ (!Object.ReferenceEquals(null, CurrentPrice) ? CurrentPrice.GetHashCode() : 0);
         return(hash);
     }
 }
Beispiel #28
0
        public async Task <ulong> AddHolding(IDbConnection connection, Holdings holdings)
        {
            var serializedHoldingDetails = JsonSerializer.Serialize(holdings.HoldingDetails);

            var parameters = new DynamicParameters();

            parameters.Add("userId", holdings.UserId);
            parameters.Add("stockId", holdings.StockId);
            parameters.Add("holdingDetails", serializedHoldingDetails);

            connection.Open();
            var holdingId = await connection.QueryFirstAsync <ulong>(_insHolding, parameters);

            connection.Close();

            return(holdingId);
        }
Beispiel #29
0
        public static Holdings InsertHolding(int accountID, int exchangeID, string Symbol, decimal Quantity, decimal price)
        {
            Holdings holding = new Holdings();

            holding.Accounts_AccountID = accountID;
            holding.StockExchangeID    = exchangeID;
            holding.Quantity           = Quantity;
            holding.Quotes_Symbol      = Symbol;
            holding.PurchaseDate       = DateTime.Now;
            holding.PricePaid          = price;
            holding.Open = true;

            //Add it to the DB
            DB.Holdings.InsertOnSubmit(holding);

            //Adjust the AccountBalances in Accounts
            Accounts account = DB.GetTable <Accounts>().Where(acct => (acct.AccountID == accountID)).SingleOrDefault();

            decimal?cashBalance = account.CashBalance;

            account.CashBalance = cashBalance - (Quantity * price);

            decimal?assetBalance = account.AssetBalance;

            //need to use the Current Market price
            decimal?currentPrice = GetPriceforSymbol(Symbol);

            account.AssetBalance = assetBalance + (Quantity * currentPrice);

            DB.SubmitChanges();

            //Get the added one from DB
            Holdings hold = (from h in DB.Holdings
                             where h == holding
                             select h).SingleOrDefault();

            //Check it with the current object
            if (hold == holding)
            {
                return(holding);
            }

            return(null);
        }
        private void UpdateUserHoldings(Holdings holding,
                                        StockSplit splitDetails,
                                        IEnumerable <ulong> purchaseIdsUpdated)
        {
            var ratio = splitDetails.NewStockRatio / splitDetails.OldStockRatio;

            if (holding != null && purchaseIdsUpdated.Count() > 0)
            {
                var holdingDetails = holding.HoldingDetails;
                foreach (var detail in holdingDetails)
                {
                    if (purchaseIdsUpdated.Contains(detail.PurchaseId))
                    {
                        detail.Price    = detail.Price / ratio;
                        detail.Quantity = detail.Quantity * ratio;
                    }
                }
            }
        }