コード例 #1
0
ファイル: Position.cs プロジェクト: pinsondg/StockTracker
        public double GetRealizedGainsStock()
        {
            if (Trades != null)
            {
                List <Trade> stockTrades = Trades.FindAll(trade => trade.Security is Stock);

                Stack <Trade> buyStack     = new Stack <Trade>();
                double        relizedGains = 0;
                foreach (var trade in stockTrades)
                {
                    if (trade.TradeAction == TradeAction.BUY)
                    {
                        buyStack.Push(trade);
                    }
                    else
                    {
                        Trade averege = AverageBuyTrades(buyStack);
                        relizedGains += (trade.TradePricePerContract - averege.TradePricePerContract) * trade.TradeContractCount;
                        averege.TradeContractCount -= trade.TradeContractCount;
                        buyStack = new Stack <Trade>();
                        if (averege.TradeContractCount > 0)
                        {
                            buyStack.Push(averege);
                        }
                    }
                }
                return(relizedGains);
            }
            return(0);
        }
コード例 #2
0
ファイル: Position.cs プロジェクト: pinsondg/StockTracker
        public double GetRealizedGainsDividends()
        {
            if (Trades != null)
            {
                List <Trade> dividends = Trades.FindAll(trade => trade.Security is Dividend);

                return(dividends.Sum(dividend => dividend.TradeContractCount * dividend.TradePricePerContract));
            }
            else
            {
                return(0);
            }
        }
コード例 #3
0
ファイル: Position.cs プロジェクト: pinsondg/StockTracker
        public double GetRealizedGainsOptionPremium()
        {
            if (Trades != null)
            {
                List <Trade> buys  = Trades.FindAll(trade => trade.TradeAction == TradeAction.BUY && trade.Security is Option);
                List <Trade> sells = Trades.FindAll(trade => trade.TradeAction == TradeAction.SELL && trade.Security is Option);

                double totalSellCost = sells.Sum(sell => sell.TradeContractCount * sell.TradePricePerContract);
                double totalBuyCost  = buys.Sum(buy => buy.TradeContractCount * buy.TradePricePerContract);

                return(totalSellCost - totalBuyCost);
            }
            return(0);
        }
コード例 #4
0
 public List <Trade> GetTrades(string asset)
 {
     return(Trades.FindAll(t => t.Asset == asset).ToList());
 }