示例#1
0
        private HoldingsShard CreateNewHoldingFromTrade(CheetahConfig cheetahConfig, string bearerToken, TradeShard trade)
        {
            AssetShard newAsset = GetAssetFromId(cheetahConfig, trade.AssetId, bearerToken).Result;

            HoldingsShard newHolding =
                new HoldingsShard {
                AssetId = trade.AssetId, TotalAmount = trade.UnitShares, PricePerShare = newAsset.Price, AssetName = newAsset.Issuer, AssetCategoryName = newAsset.AssetCategoryDisplayName
            };

            return(newHolding);
        }
示例#2
0
        private IList <HoldingsShard> ConvertHoldingTokenList(string jsonHoldingsString)
        {
            IList <HoldingsShard> holdingShardList = new List <HoldingsShard>();

            JArray         parsedResponse        = JArray.Parse(jsonHoldingsString);
            JToken         unarrayedHoldingsJson = parsedResponse[0];
            IList <JToken> holdingTokenList      = unarrayedHoldingsJson["Holdings"].Children().ToList();

            foreach (JToken holdingToken in holdingTokenList)
            {
                HoldingsShard    holdingShard = holdingToken.ToObject <HoldingsShard>();
                IList <JToken>   lotTokenList = holdingToken["Lots"].Children().ToList();
                IList <LotShard> lotList      = ConvertLotTokenList(lotTokenList);
                holdingShard.CalculateFieldsFromLots(lotList);
                holdingShardList.Add(holdingShard);
            }

            return(holdingShardList);
        }
示例#3
0
        private IList <HoldingsShard> AddBoughtAssetToPortfolio(CheetahConfig cheetahConfig, string bearerToken, IList <HoldingsShard> revisedPortfolio, TradeShard trade)
        {
            IList <HoldingsShard> copiedPortfolio = revisedPortfolio.ToList();

            foreach (HoldingsShard holding in copiedPortfolio)
            {
                if (holding.AssetId == trade.AssetId)
                {
                    holding.TotalAmount += trade.UnitShares;
                    holding.TotalValue  += (holding.PricePerShare * trade.UnitShares);
                    return(copiedPortfolio);
                }
            }

            HoldingsShard newHolding = CreateNewHoldingFromTrade(cheetahConfig, bearerToken, trade);

            copiedPortfolio.Add(newHolding);

            return(copiedPortfolio);
        }